]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:winbind: Fix bug 6793 -- segfault in winbindd_pam_auth
authorVolker Lendecke <vl@samba.org>
Wed, 14 Oct 2009 18:37:10 +0000 (11:37 -0700)
committerKarolin Seeger <kseeger@samba.org>
Fri, 16 Oct 2009 12:55:48 +0000 (14:55 +0200)
source/winbindd/winbindd_pam.c

index d33fc26b5c7df56332993b29af5f88caf45f326b..646bef30fdc4cc5efeebecdf35597d7bfa308267 100644 (file)
@@ -810,8 +810,8 @@ static NTSTATUS append_data(struct winbindd_cli_state *state,
 void winbindd_pam_auth(struct winbindd_cli_state *state)
 {
        struct winbindd_domain *domain;
-       fstring name_domain, name_user;
-       char *mapped_user = NULL;
+       fstring name_domain, name_user, mapped_user;
+       char *mapped = NULL;
        NTSTATUS result;
        NTSTATUS name_map_status = NT_STATUS_UNSUCCESSFUL;
 
@@ -835,15 +835,16 @@ void winbindd_pam_auth(struct winbindd_cli_state *state)
 
        name_map_status = normalize_name_unmap(state->mem_ctx,
                                               state->request.data.auth.user,
-                                              &mapped_user);
+                                              &mapped);
 
        /* If the name normalization didnt' actually do anything,
           just use the original name */
 
-       if (!NT_STATUS_IS_OK(name_map_status) &&
-           !NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED))
-       {
-               mapped_user = state->request.data.auth.user;
+       if (NT_STATUS_IS_OK(name_map_status)
+           ||NT_STATUS_EQUAL(name_map_status, NT_STATUS_FILE_RENAMED)) {
+               fstrcpy(mapped_user, mapped);
+       } else {
+               fstrcpy(mapped_user, state->request.data.auth.user);
        }
 
        if (!canonicalize_username(mapped_user, name_domain, name_user)) {