s3: auth: Move the declaration of struct dom_sid tmp_sid to function level scope.
authorJeremy Allison <jra@samba.org>
Thu, 26 May 2016 23:31:55 +0000 (16:31 -0700)
committerVolker Lendecke <vl@samba.org>
Fri, 27 May 2016 09:28:18 +0000 (11:28 +0200)
It's referred to outside of the {} brace scope it was defined in by
the following code:

                uid_to_unix_users_sid(*uid, &tmp_sid);
                user_sid = &tmp_sid;

As tmp_sid was going out of scope, user_sid was
being incorrectly set in the token sid list.

I think this *may* be the root cause of:

BUG: https://bugzilla.samba.org/show_bug.cgi?id=10618

But even if not this is an obvious error that must
be fixed.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
Autobuild-User(master): Volker Lendecke <vl@samba.org>
Autobuild-Date(master): Fri May 27 11:28:18 CEST 2016 on sn-devel-144

source3/auth/token_util.c

index c7319adceae49f8bab0bf5fa22c97eb2c7ba903d..375905a38777fe39b4d71f5ded22b7cb410e9bab 100644 (file)
@@ -672,6 +672,7 @@ static NTSTATUS create_token_from_sid(TALLOC_CTX *mem_ctx,
        TALLOC_CTX *tmp_ctx = talloc_stackframe();
        gid_t *gids;
        struct dom_sid *group_sids;
+       struct dom_sid tmp_sid;
        uint32_t num_group_sids;
        uint32_t num_gids;
        uint32_t i;
@@ -753,7 +754,6 @@ static NTSTATUS create_token_from_sid(TALLOC_CTX *mem_ctx,
                *uid = sam_acct->unix_pw->pw_uid;
 
        } else  if (sid_check_is_in_unix_users(user_sid)) {
-               struct dom_sid tmp_sid;
                uint32_t getgroups_num_group_sids;
                /* This is a unix user not in passdb. We need to ask nss
                 * directly, without consulting passdb */