From b53c103aff6381d080ba81b8bd512a61d94dccd5 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 9 Oct 2009 22:05:37 +0200 Subject: [PATCH] s3:winbind: Fix bug 6793 -- segfault in winbindd_pam_auth --- source3/winbindd/winbindd_pam.c | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-) diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c index dbf6f5b..1064ec5 100644 --- a/source3/winbindd/winbindd_pam.c +++ b/source3/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,14 @@ 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); } if (!canonicalize_username(mapped_user, name_domain, name_user)) { -- 1.6.0.4