diff options
author | Volker Lendecke <vl@samba.org> | 2009-10-14 11:37:10 -0700 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2010-01-13 14:00:48 +0100 |
commit | 62a1d9101cf0c2d45f81ba703cfdef5f42006b3f (patch) | |
tree | 55a5673d1fc88a6f5beb4def46de223678d613c6 | |
parent | d36b9ecc4a7f354a00a6c26eeeb3c0eaf0aefccb (diff) | |
download | samba-62a1d9101cf0c2d45f81ba703cfdef5f42006b3f.tar.gz samba-62a1d9101cf0c2d45f81ba703cfdef5f42006b3f.tar.xz samba-62a1d9101cf0c2d45f81ba703cfdef5f42006b3f.zip |
s3:winbind: Fix bug 6793 -- segfault in winbindd_pam_auth
(cherry picked from commit 96b600d429561f3ea155ffcb51a87c0d74151f52)
-rw-r--r-- | source/winbindd/winbindd_pam.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/source/winbindd/winbindd_pam.c b/source/winbindd/winbindd_pam.c index d33fc26b5c7..646bef30fdc 100644 --- a/source/winbindd/winbindd_pam.c +++ b/source/winbindd/winbindd_pam.c @@ -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)) { |