diff options
Diffstat (limited to 'source/auth/auth_util.c')
-rw-r--r-- | source/auth/auth_util.c | 42 |
1 files changed, 7 insertions, 35 deletions
diff --git a/source/auth/auth_util.c b/source/auth/auth_util.c index 1bc65dcaacc..4e9e6f85f66 100644 --- a/source/auth/auth_util.c +++ b/source/auth/auth_util.c @@ -982,9 +982,7 @@ static struct nt_user_token *create_local_nt_token(TALLOC_CTX *mem_ctx, NTSTATUS create_local_token(auth_serversupplied_info *server_info) { TALLOC_CTX *mem_ctx; - struct id_map *ids; NTSTATUS status; - BOOL wb = True; size_t i; @@ -1031,44 +1029,18 @@ NTSTATUS create_local_token(auth_serversupplied_info *server_info) server_info->groups = NULL; /* Start at index 1, where the groups start. */ - ids = talloc_zero_array(mem_ctx, struct id_map, server_info->ptok->num_sids); - for (i = 0; i < server_info->ptok->num_sids-1; i++) { - ids[i].sid = &server_info->ptok->user_sids[i + 1]; /* store the sids */ - } - if (!winbind_sids_to_unixids(ids, server_info->ptok->num_sids-1)) { - DEBUG(2, ("Query to map secondary SIDs failed!\n")); - if (!winbind_ping()) { - DEBUG(2, ("Winbindd is not running, will try to map SIDs one by one with legacy code\n")); - wb = False; - } - } + for (i=1; i<server_info->ptok->num_sids; i++) { + gid_t gid; + DOM_SID *sid = &server_info->ptok->user_sids[i]; - for (i = 0; i < server_info->ptok->num_sids-1; i++) { - gid_t agid; - - if (wb) { - if (ids[i].status != ID_MAPPED) { + if (!sid_to_gid(sid, &gid)) { DEBUG(10, ("Could not convert SID %s to gid, " - "ignoring it\n", sid_string_static(ids[i].sid))); + "ignoring it\n", sid_string_static(sid))); continue; } - if (ids[i].xid.type == ID_TYPE_UID) { - DEBUG(10, ("SID %s is a User ID (%u) not a Group ID, " - "ignoring it\n", sid_string_static(ids[i].sid), ids[i].xid.id)); - continue; - } - agid = (gid_t)ids[i].xid.id; - } else { - if (! sid_to_gid(ids[i].sid, &agid)) { - continue; - } - } - if (!add_gid_to_array_unique(server_info, agid, &server_info->groups, - &server_info->n_groups)) { - TALLOC_FREE(mem_ctx); - return NT_STATUS_NO_MEMORY; - } + add_gid_to_array_unique(server_info, gid, &server_info->groups, + &server_info->n_groups); } debug_nt_user_token(DBGC_AUTH, 10, server_info->ptok); |