Respect echo_pass, try_first_pass, use_first_pass options.
Sponsored by: DARPA, NAI Labs git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@75 185d5e19-27fe-0310-9dcf-9bff6b9f3609
This commit is contained in:
parent
5c3fadae16
commit
2d71f7049b
|
@ -53,20 +53,26 @@ pam_get_authtok(pam_handle_t *pamh,
|
||||||
const char *prompt)
|
const char *prompt)
|
||||||
{
|
{
|
||||||
char *p, *resp;
|
char *p, *resp;
|
||||||
int r;
|
int r, style;
|
||||||
|
|
||||||
if (pamh == NULL || authtok == NULL)
|
if (pamh == NULL || authtok == NULL)
|
||||||
return (PAM_SYSTEM_ERR);
|
return (PAM_SYSTEM_ERR);
|
||||||
|
|
||||||
r = pam_get_item(pamh, PAM_AUTHTOK, (const void **)authtok);
|
if (openpam_get_option(pamh, "try_first_pass") ||
|
||||||
if (r == PAM_SUCCESS && *authtok != NULL)
|
openpam_get_option(pamh, "use_first_pass")) {
|
||||||
return (PAM_SUCCESS);
|
r = pam_get_item(pamh, PAM_AUTHTOK, (const void **)authtok);
|
||||||
|
if (r == PAM_SUCCESS && *authtok != NULL)
|
||||||
|
return (PAM_SUCCESS);
|
||||||
|
else if (openpam_get_option(pamh, "use_first_pass"))
|
||||||
|
return (r == PAM_SUCCESS ? PAM_AUTH_ERR : r);
|
||||||
|
}
|
||||||
if (pam_get_item(pamh, PAM_AUTHTOK_PROMPT,
|
if (pam_get_item(pamh, PAM_AUTHTOK_PROMPT,
|
||||||
(const void **)&p) != PAM_SUCCESS || p == NULL)
|
(const void **)&p) != PAM_SUCCESS || p == NULL)
|
||||||
if (prompt == NULL)
|
if (prompt == NULL)
|
||||||
prompt = "Password:";
|
prompt = "Password:";
|
||||||
r = pam_prompt(pamh, PAM_PROMPT_ECHO_OFF, &resp,
|
style = openpam_get_option(pamh, "echo_pass") ?
|
||||||
"%s", p ? p : prompt);
|
PAM_PROMPT_ECHO_ON : PAM_PROMPT_ECHO_OFF;
|
||||||
|
r = pam_prompt(pamh, style, &resp, "%s", p ? p : prompt);
|
||||||
if (r != PAM_SUCCESS)
|
if (r != PAM_SUCCESS)
|
||||||
return (r);
|
return (r);
|
||||||
*authtok = resp;
|
*authtok = resp;
|
||||||
|
|
Loading…
Reference in New Issue