The branch, master has been updated
       via  b455c5e... s3:auth Fix segfault when the user cannot be found by 
getpwnam()
      from  a8d308f... s3-selftest: fix chmod commands in provisioning.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit b455c5e155f7e7ba4cc07cd4415a304163213e0f
Author: Andrew Bartlett <[email protected]>
Date:   Sat May 29 04:14:27 2010 +1000

    s3:auth Fix segfault when the user cannot be found by getpwnam()
    
    Add comment to notify when getpwnam() fails.
    
    Reviewed-by: Simo Sorce <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 source3/auth/auth_util.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
index bccec80..1f9bc7b 100644
--- a/source3/auth/auth_util.c
+++ b/source3/auth/auth_util.c
@@ -964,7 +964,6 @@ static NTSTATUS check_account(TALLOC_CTX *mem_ctx, const 
char *domain,
                              bool *username_was_mapped)
 {
        struct smbd_server_connection *sconn = smbd_server_conn;
-       NTSTATUS nt_status;
        fstring dom_user, lower_username;
        fstring real_username;
        struct passwd *passwd;
@@ -979,8 +978,12 @@ static NTSTATUS check_account(TALLOC_CTX *mem_ctx, const 
char *domain,
 
        *username_was_mapped = map_username(sconn, dom_user);
 
-       if ( !(passwd = smb_getpwnam( NULL, dom_user, real_username, True )) )
+       passwd = smb_getpwnam( NULL, dom_user, real_username, True );
+       if (!passwd) {
+               DEBUG(3, ("Failed to find authenticated user %s via "
+                         "getpwnam(), denying access.\n", dom_user));
                return NT_STATUS_NO_SUCH_USER;
+       }
 
        *uid = passwd->pw_uid;
        *gid = passwd->pw_gid;
@@ -995,7 +998,7 @@ static NTSTATUS check_account(TALLOC_CTX *mem_ctx, const 
char *domain,
 
        TALLOC_FREE(passwd);
 
-       return nt_status;
+       return NT_STATUS_OK;
 }
 
 /****************************************************************************
@@ -1154,6 +1157,10 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
                                     &found_username, &uid, &gid,
                                     &username_was_mapped);
 
+       if (!NT_STATUS_IS_OK(nt_status)) {
+               return nt_status;
+       }
+
        result = make_server_info(NULL);
        if (result == NULL) {
                DEBUG(4, ("make_server_info failed!\n"));


-- 
Samba Shared Repository

Reply via email to