diff options
Diffstat (limited to 'libpam')
-rw-r--r-- | libpam/pam_item.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libpam/pam_item.c b/libpam/pam_item.c index 36298ce0..4cca6d9b 100644 --- a/libpam/pam_item.c +++ b/libpam/pam_item.c @@ -343,6 +343,16 @@ int pam_get_user(pam_handle_t *pamh, const char **user, const char *prompt) retval = pamh->pam_conversation-> conv(1, &pmsg, &resp, pamh->pam_conversation->appdata_ptr); + switch (retval) { + case PAM_SUCCESS: + case PAM_BUF_ERR: + case PAM_CONV_AGAIN: + case PAM_CONV_ERR: + break; + default: + retval = PAM_CONV_ERR; + } + if (retval == PAM_CONV_AGAIN) { /* conversation function is waiting for an event - save state */ D(("conversation function is not ready yet")); |