svn commit: samba r17496 - in branches/SAMBA_3_0/source/utils: .
jra at samba.org
jra at samba.org
Fri Aug 11 18:09:59 GMT 2006
Author: jra
Date: 2006-08-11 18:09:59 +0000 (Fri, 11 Aug 2006)
New Revision: 17496
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17496
Log:
net groupmap add could add uninitialized sid_name_type
entries to the group mapping db. Ensure this can't happen.
Jeremy.
Modified:
branches/SAMBA_3_0/source/utils/net_groupmap.c
Changeset:
Modified: branches/SAMBA_3_0/source/utils/net_groupmap.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net_groupmap.c 2006-08-11 13:16:59 UTC (rev 17495)
+++ branches/SAMBA_3_0/source/utils/net_groupmap.c 2006-08-11 18:09:59 UTC (rev 17496)
@@ -188,7 +188,14 @@
uint32 rid = 0;
int i;
GROUP_MAP map;
-
+ const char *name_type;
+
+ ZERO_STRUCT(map);
+
+ /* Default is domain group. */
+ map.sid_name_use = SID_NAME_DOM_GRP;
+ name_type = "domain group";
+
/* get the options */
for ( i=0; i<argc; i++ ) {
if ( !StrnCaseCmp(argv[i], "rid", strlen("rid")) ) {
@@ -237,15 +244,21 @@
case 'b':
case 'B':
map.sid_name_use = SID_NAME_WKN_GRP;
+ name_type = "wellknown group";
break;
case 'd':
case 'D':
map.sid_name_use = SID_NAME_DOM_GRP;
+ name_type = "domain group";
break;
case 'l':
case 'L':
map.sid_name_use = SID_NAME_ALIAS;
+ name_type = "alias (local) group";
break;
+ default:
+ d_fprintf(stderr, "unknown group type %s\n", type);
+ return -1;
}
}
else {
@@ -316,8 +329,8 @@
return -1;
}
- d_printf("Successfully added group %s to the mapping db\n",
- map.nt_name);
+ d_printf("Successfully added group %s to the mapping db as a %s\n",
+ map.nt_name, name_type);
return 0;
}
@@ -413,15 +426,19 @@
* Allow changing of group type only between domain and local
* We disallow changing Builtin groups !!! (SID problem)
*/
- if (sid_type != SID_NAME_UNKNOWN) {
- if (map.sid_name_use == SID_NAME_WKN_GRP) {
- d_fprintf(stderr, "You can only change between domain and local groups.\n");
- return -1;
- }
-
- map.sid_name_use=sid_type;
+
+ if (sid_type == SID_NAME_UNKNOWN) {
+ d_fprintf(stderr, "Can't map to an unknown group type.\n");
+ return -1;
}
+ if (map.sid_name_use == SID_NAME_WKN_GRP) {
+ d_fprintf(stderr, "You can only change between domain and local groups.\n");
+ return -1;
+ }
+
+ map.sid_name_use=sid_type;
+
/* Change comment if new one */
if ( ntcomment[0] )
fstrcpy( map.comment, ntcomment );
More information about the samba-cvs
mailing list