summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2009-10-14 11:37:10 -0700
committerKarolin Seeger <kseeger@samba.org>2010-01-13 14:00:48 +0100
commit62a1d9101cf0c2d45f81ba703cfdef5f42006b3f (patch)
tree55a5673d1fc88a6f5beb4def46de223678d613c6
parentd36b9ecc4a7f354a00a6c26eeeb3c0eaf0aefccb (diff)
downloadsamba-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.c15
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)) {