From: David Disseldorp Date: Wed, 17 Apr 2013 17:39:12 +0000 (-0700) Subject: Bug 9807 - wbinfo: fix segfault in wbinfo_pam_logon X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=389faceaa365d314ec49c9629b835d0418e6d222;p=metze%2Fsamba%2Fwip.git Bug 9807 - wbinfo: fix segfault in wbinfo_pam_logon wbinfo_pam_logon() incorrectly assumes that wbcLogonUser() always returns an allocated wbcAuthErrorInfo struct on failure. Signed-off-by: David Disseldorp Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Wed Apr 17 21:29:29 CEST 2013 on sn-devel-104 --- diff --git a/nsswitch/wbinfo.c b/nsswitch/wbinfo.c index aee4004e57d2..762382c776d8 100644 --- a/nsswitch/wbinfo.c +++ b/nsswitch/wbinfo.c @@ -1736,7 +1736,7 @@ static bool wbinfo_pam_logon(char *username) { wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE; struct wbcLogonUserParams params; - struct wbcAuthErrorInfo *error; + struct wbcAuthErrorInfo *error = NULL; char *s = NULL; char *p = NULL; TALLOC_CTX *frame = talloc_tos(); @@ -1787,16 +1787,15 @@ static bool wbinfo_pam_logon(char *username) d_printf("plaintext password authentication %s\n", WBC_ERROR_IS_OK(wbc_status) ? "succeeded" : "failed"); - if (!WBC_ERROR_IS_OK(wbc_status)) { + if (!WBC_ERROR_IS_OK(wbc_status) && (error != NULL)) { d_fprintf(stderr, "error code was %s (0x%x)\nerror message was: %s\n", error->nt_string, (int)error->nt_status, error->display_string); wbcFreeMemory(error); - return false; } - return true; + return WBC_ERROR_IS_OK(wbc_status); } /* Save creds with winbind */