diff options
-rw-r--r-- | source3/auth/auth_util.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c index c9ad507e8c..cb9c4b22fc 100644 --- a/source3/auth/auth_util.c +++ b/source3/auth/auth_util.c @@ -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 */ |