s3:auth return the full passwd struct from check_account
authorSimo Sorce <ssorce@redhat.com>
Sat, 29 May 2010 15:02:47 +0000 (11:02 -0400)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 7 Jun 2010 12:53:08 +0000 (22:53 +1000)
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
source3/auth/auth_util.c

index c9ad507e8c7e6d517e485ad74664b5f5323af01b..cb9c4b22fc6b47222c564bb3b987c0a21ed650f9 100644 (file)
@@ -909,7 +909,7 @@ bool copy_current_user(struct current_user *dst, struct current_user *src)
 
 static NTSTATUS check_account(TALLOC_CTX *mem_ctx, const char *domain,
                              const char *username, char **found_username,
-                             uid_t *uid, gid_t *gid,
+                             struct passwd **pwd,
                              bool *username_was_mapped)
 {
        fstring dom_user, lower_username;
@@ -933,8 +933,7 @@ static NTSTATUS check_account(TALLOC_CTX *mem_ctx, const char *domain,
                return NT_STATUS_NO_SUCH_USER;
        }
 
-       *uid = passwd->pw_uid;
-       *gid = passwd->pw_gid;
+       *pwd = passwd;
 
        /* This is pointless -- there is no suport for differing 
           unix and windows names.  Make sure to always store the 
@@ -944,8 +943,6 @@ static NTSTATUS check_account(TALLOC_CTX *mem_ctx, const char *domain,
 
        *found_username = talloc_strdup( mem_ctx, real_username );
 
-       TALLOC_FREE(passwd);
-
        return NT_STATUS_OK;
 }
 
@@ -1053,10 +1050,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
        struct dom_sid user_sid;
        struct dom_sid group_sid;
        bool username_was_mapped;
-
-       uid_t uid = (uid_t)-1;
-       gid_t gid = (gid_t)-1;
-
+       struct passwd *pwd;
        struct auth_serversupplied_info *result;
 
        /* 
@@ -1102,7 +1096,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
        /* this call will try to create the user if necessary */
 
        nt_status = check_account(mem_ctx, nt_domain, sent_nt_username,
-                                    &found_username, &uid, &gid,
+                                    &found_username, &pwd,
                                     &username_was_mapped);
 
        if (!NT_STATUS_IS_OK(nt_status)) {
@@ -1129,8 +1123,8 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
 
        /* Fill in the unix info we found on the way */
 
-       result->utok.uid = uid;
-       result->utok.gid = gid;
+       result->utok.uid = pwd->pw_uid;
+       result->utok.gid = pwd->pw_gid;
 
        /* ensure we are never given NULL session keys */