Correctly compare the return value from pam_get_item() to PAM_SUCCESS

instead of assuming (incorrectly) that it returns non-zero on success.
Bump dates as needed.

Reported by:	Patrick Bihan-Faou <patrick-fbsd@mindstep.com>


git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@902 185d5e19-27fe-0310-9dcf-9bff6b9f3609
This commit is contained in:
Dag-Erling Smørgrav 2017-01-17 14:57:09 +00:00
parent da26321ba8
commit 3699596d18
4 changed files with 12 additions and 8 deletions

View file

@ -43,6 +43,7 @@ ideas:
Mikhail Teterin <mi@aldan.algebra.com>
Mikko Työläjärvi <mbsd@pacbell.net>
Nick Hibma <nick@van-laarhoven.org>
Patrick Bihan-Faou <patrick-fbsd@mindstep.com>
Robert Watson <rwatson@freebsd.org>
Ruslan Ermilov <ru@freebsd.org>
Sebastian Krahmer <sebastian.krahmer@gmail.com>

View file

@ -1,6 +1,6 @@
Copyright (c) 2002-2003 Networks Associates Technology, Inc.
Copyright (c) 2004-2016 Dag-Erling Smørgrav
Copyright (c) 2004-2017 Dag-Erling Smørgrav
Copyright (c) 2012-2016 The University of Oslo
All rights reserved.

View file

@ -1,6 +1,6 @@
/*-
* Copyright (c) 2002-2003 Networks Associates Technology, Inc.
* Copyright (c) 2004-2014 Dag-Erling Smørgrav
* Copyright (c) 2004-2017 Dag-Erling Smørgrav
* All rights reserved.
*
* This software was developed for the FreeBSD Project by ThinkSec AS and
@ -122,9 +122,11 @@ pam_get_authtok(pam_handle_t *pamh,
if ((promptp = openpam_get_option(pamh, prompt_option)) != NULL)
prompt = promptp;
/* no prompt provided, see if there is one tucked away somewhere */
if (prompt == NULL)
if (pam_get_item(pamh, pitem, &promptp) && promptp != NULL)
if (prompt == NULL) {
r = pam_get_item(pamh, pitem, &promptp);
if (r == PAM_SUCCESS && promptp != NULL)
prompt = promptp;
}
/* fall back to hardcoded default */
if (prompt == NULL)
prompt = default_prompt;

View file

@ -1,6 +1,6 @@
/*-
* Copyright (c) 2002-2003 Networks Associates Technology, Inc.
* Copyright (c) 2004-2011 Dag-Erling Smørgrav
* Copyright (c) 2004-2017 Dag-Erling Smørgrav
* All rights reserved.
*
* This software was developed for the FreeBSD Project by ThinkSec AS and
@ -78,10 +78,11 @@ pam_get_user(pam_handle_t *pamh,
if ((promptp = openpam_get_option(pamh, "user_prompt")) != NULL)
prompt = promptp;
/* no prompt provided, see if there is one tucked away somewhere */
if (prompt == NULL)
if (pam_get_item(pamh, PAM_USER_PROMPT, &promptp) &&
promptp != NULL)
if (prompt == NULL) {
r = pam_get_item(pamh, PAM_USER_PROMPT, &promptp);
if (r == PAM_SUCCESS && promptp != NULL)
prompt = promptp;
}
/* fall back to hardcoded default */
if (prompt == NULL)
prompt = user_prompt;