diff options
author | Günther Deschner <gd@samba.org> | 2007-07-17 11:47:17 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:28:45 -0500 |
commit | 4b4a3c7df1b894c32473ee559185f6253b895800 (patch) | |
tree | a0358890bf9bc71b64c49323712074410a2f9b5f /source3/auth | |
parent | 307e51ed1420fcf9e91e8ac7c0a1689e13f3edec (diff) | |
download | samba-4b4a3c7df1b894c32473ee559185f6253b895800.tar.gz samba-4b4a3c7df1b894c32473ee559185f6253b895800.tar.bz2 samba-4b4a3c7df1b894c32473ee559185f6253b895800.zip |
r23928: Merge all "copy-info3-groups-to-sid-array" blocks to a sid_array_from_info3()
function.
Guenther
(This used to be commit 1e1e480115e37b3f4c85f979ddd800b8de0b9c57)
Diffstat (limited to 'source3/auth')
-rw-r--r-- | source3/auth/auth_util.c | 38 |
1 files changed, 6 insertions, 32 deletions
diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c index 0d8c3b3f95..325b05f80f 100644 --- a/source3/auth/auth_util.c +++ b/source3/auth/auth_util.c @@ -1405,8 +1405,6 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx, uid_t uid; gid_t gid; - size_t i; - auth_serversupplied_info *result; /* @@ -1584,37 +1582,13 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx, result->num_sids = 0; result->sids = NULL; - /* and create (by appending rids) the 'domain' sids */ - - for (i = 0; i < info3->num_groups2; i++) { - DOM_SID sid; - if (!sid_compose(&sid, &info3->dom_sid.sid, - info3->gids[i].g_rid)) { - DEBUG(3,("could not append additional group rid " - "0x%x\n", info3->gids[i].g_rid)); - TALLOC_FREE(result); - return NT_STATUS_INVALID_PARAMETER; - } - if (!add_sid_to_array(result, &sid, &result->sids, - &result->num_sids)) { - TALLOC_FREE(result); - return NT_STATUS_NO_MEMORY; - } - } - - /* Copy 'other' sids. We need to do sid filtering here to - prevent possible elevation of privileges. See: - - http://www.microsoft.com/windows2000/techinfo/administration/security/sidfilter.asp - */ - - for (i = 0; i < info3->num_other_sids; i++) { - if (!add_sid_to_array(result, &info3->other_sids[i].sid, + nt_status = sid_array_from_info3(result, info3, &result->sids, - &result->num_sids)) { - TALLOC_FREE(result); - return NT_STATUS_NO_MEMORY; - } + &result->num_sids, + False); + if (!NT_STATUS_IS_OK(nt_status)) { + TALLOC_FREE(result); + return nt_status; } result->login_server = unistr2_tdup(result, |