diff options
-rw-r--r-- | source3/groupdb/mapping.c | 60 | ||||
-rw-r--r-- | source3/utils/net_groupmap.c | 14 |
2 files changed, 30 insertions, 44 deletions
diff --git a/source3/groupdb/mapping.c b/source3/groupdb/mapping.c index 14040e4f52..9e547aa69c 100644 --- a/source3/groupdb/mapping.c +++ b/source3/groupdb/mapping.c @@ -35,43 +35,34 @@ static TDB_CONTEXT *tdb; /* used for driver files */ */ #define MEMBEROF_PREFIX "MEMBEROF/" +static struct sid_name_mapping { + enum SID_NAME_USE type; + const char *name; +} sid_name_use_strings[] = { + { SID_NAME_USE_NONE, "Not initialized" }, + { SID_NAME_USER, "User" }, + { SID_NAME_DOM_GRP, "Domain group" }, + { SID_NAME_DOMAIN, "Domain" }, + { SID_NAME_ALIAS, "Local group" }, + { SID_NAME_WKN_GRP, "Builtin group" }, + { SID_NAME_DELETED, "Deleted" }, + { SID_NAME_INVALID, "Invalid" }, + { 0, NULL } +}; + /**************************************************************************** dump the mapping group mapping to a text file ****************************************************************************/ -char *decode_sid_name_use(fstring group, enum SID_NAME_USE name_use) -{ - static fstring group_type; +const char *decode_sid_name_use(enum SID_NAME_USE name_use) +{ + struct sid_name_mapping *m; - switch(name_use) { - case SID_NAME_USER: - fstrcpy(group_type,"User"); - break; - case SID_NAME_DOM_GRP: - fstrcpy(group_type,"Domain group"); - break; - case SID_NAME_DOMAIN: - fstrcpy(group_type,"Domain"); - break; - case SID_NAME_ALIAS: - fstrcpy(group_type,"Local group"); - break; - case SID_NAME_WKN_GRP: - fstrcpy(group_type,"Builtin group"); - break; - case SID_NAME_DELETED: - fstrcpy(group_type,"Deleted"); - break; - case SID_NAME_INVALID: - fstrcpy(group_type,"Invalid"); - break; - case SID_NAME_UNKNOWN: - default: - fstrcpy(group_type,"Unknown type"); - break; + for (m = sid_name_use_strings; m->name != NULL; m++) { + if (m->type == name_use) + return m->name; } - - fstrcpy(group, group_type); - return group_type; + + return "Unknown type"; } /**************************************************************************** @@ -405,7 +396,6 @@ static BOOL enum_group_mapping(enum SID_NAME_USE sid_name_use, GROUP_MAP **pp_rm { TDB_DATA kbuf, dbuf, newkey; fstring string_sid; - fstring group_type; GROUP_MAP map; GROUP_MAP *mapt; int ret; @@ -455,8 +445,8 @@ static BOOL enum_group_mapping(enum SID_NAME_USE sid_name_use, GROUP_MAP **pp_rm string_to_sid(&map.sid, string_sid); - decode_sid_name_use(group_type, map.sid_name_use); - DEBUG(11,("enum_group_mapping: returning group %s of type %s\n", map.nt_name ,group_type)); + DEBUG(11,("enum_group_mapping: returning group %s of type %s\n", + map.nt_name, decode_sid_name_use(map.sid_name_use))); mapt= SMB_REALLOC_ARRAY((*pp_rmap), GROUP_MAP, entries+1); if (!mapt) { diff --git a/source3/utils/net_groupmap.c b/source3/utils/net_groupmap.c index 9e897d8efc..f12668a85a 100644 --- a/source3/utils/net_groupmap.c +++ b/source3/utils/net_groupmap.c @@ -87,19 +87,15 @@ static BOOL get_sid_from_input(DOM_SID *sid, char *input) static void print_map_entry ( GROUP_MAP map, BOOL long_list ) { - fstring string_sid; - fstring group_type; - - decode_sid_name_use(group_type, map.sid_name_use); - sid_to_string(string_sid, &map.sid); - if (!long_list) - d_printf("%s (%s) -> %s\n", map.nt_name, string_sid, gidtoname(map.gid)); + d_printf("%s (%s) -> %s\n", map.nt_name, + sid_string_static(&map.sid), gidtoname(map.gid)); else { d_printf("%s\n", map.nt_name); - d_printf("\tSID : %s\n", string_sid); + d_printf("\tSID : %s\n", sid_string_static(&map.sid)); d_printf("\tUnix group: %s\n", gidtoname(map.gid)); - d_printf("\tGroup type: %s\n", group_type); + d_printf("\tGroup type: %s\n", + decode_sid_name_use(map.sid_name_use)); d_printf("\tComment : %s\n", map.comment); } |