summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2020-05-14 08:00:00 +0000
committerDmitry V. Levin <ldv@altlinux.org>2020-05-15 08:00:00 +0000
commit6f4a40a1d82592095ea24a64b34774842d7814b3 (patch)
tree244858e2da3082bd8d86c6db3e125282c292da55
parent2243122393dcb7ec5da9708dc9555dc53aaae0cc (diff)
pam_usertype: return PAM_INCOMPLETE when pam_get_user returns PAM_CONV_AGAIN
Give the application a chance to handle PAM_INCOMPLETE. * modules/pam_usertype/pam_usertype.c (pam_usertype_get_uid): Return PAM_INCOMPLETE instead of PAM_CONV_AGAIN when pam_get_user returns PAM_CONV_AGAIN. * modules/pam_usertype/pam_usertype.8.xml (RETURN VALUES): Document it.
-rw-r--r--modules/pam_usertype/pam_usertype.8.xml10
-rw-r--r--modules/pam_usertype/pam_usertype.c2
2 files changed, 11 insertions, 1 deletions
diff --git a/modules/pam_usertype/pam_usertype.8.xml b/modules/pam_usertype/pam_usertype.8.xml
index 1ba4ee71..4eed4eab 100644
--- a/modules/pam_usertype/pam_usertype.8.xml
+++ b/modules/pam_usertype/pam_usertype.8.xml
@@ -111,6 +111,16 @@
</varlistentry>
<varlistentry>
+ <term>PAM_INCOMPLETE</term>
+ <listitem>
+ <para>
+ The conversation method supplied by the application
+ returned PAM_CONV_AGAIN.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>PAM_AUTH_ERR</term>
<listitem>
<para>
diff --git a/modules/pam_usertype/pam_usertype.c b/modules/pam_usertype/pam_usertype.c
index eb656c09..dd297150 100644
--- a/modules/pam_usertype/pam_usertype.c
+++ b/modules/pam_usertype/pam_usertype.c
@@ -129,7 +129,7 @@ pam_usertype_get_uid(struct pam_usertype_opts *opts,
if (ret != PAM_SUCCESS) {
pam_syslog(pamh, LOG_ERR, "error retrieving user name: %s",
pam_strerror(pamh, ret));
- return ret;
+ return ret == PAM_CONV_AGAIN ? PAM_INCOMPLETE : ret;
}
pwd = pam_modutil_getpwnam(pamh, username);