summaryrefslogtreecommitdiffstats
path: root/contrib/openpam/lib/pam_get_authtok.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/openpam/lib/pam_get_authtok.c')
-rw-r--r--contrib/openpam/lib/pam_get_authtok.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/contrib/openpam/lib/pam_get_authtok.c b/contrib/openpam/lib/pam_get_authtok.c
index 1df7abf..42e9768 100644
--- a/contrib/openpam/lib/pam_get_authtok.c
+++ b/contrib/openpam/lib/pam_get_authtok.c
@@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $P4: //depot/projects/openpam/lib/pam_get_authtok.c#26 $
+ * $P4: //depot/projects/openpam/lib/pam_get_authtok.c#27 $
*/
#include <sys/param.h>
@@ -60,7 +60,7 @@ pam_get_authtok(pam_handle_t *pamh,
const char **authtok,
const char *prompt)
{
- const void *oldauthtok;
+ const void *oldauthtok, *prevauthtok, *promptp;
const char *default_prompt;
char *resp, *resp2;
int pitem, r, style, twice;
@@ -90,16 +90,20 @@ pam_get_authtok(pam_handle_t *pamh,
}
if (openpam_get_option(pamh, "try_first_pass") ||
openpam_get_option(pamh, "use_first_pass")) {
- r = pam_get_item(pamh, item, (const void **)authtok);
- if (r == PAM_SUCCESS && *authtok != NULL)
+ r = pam_get_item(pamh, item, &prevauthtok);
+ if (r == PAM_SUCCESS && prevauthtok != NULL) {
+ *authtok = prevauthtok;
RETURNC(PAM_SUCCESS);
+ }
else if (openpam_get_option(pamh, "use_first_pass"))
RETURNC(r == PAM_SUCCESS ? PAM_AUTH_ERR : r);
}
if (prompt == NULL) {
- r = pam_get_item(pamh, pitem, (const void **)&prompt);
- if (r != PAM_SUCCESS || prompt == NULL)
+ r = pam_get_item(pamh, pitem, &promptp);
+ if (r != PAM_SUCCESS || promptp == NULL)
prompt = default_prompt;
+ else
+ prompt = promptp;
}
style = openpam_get_option(pamh, "echo_pass") ?
PAM_PROMPT_ECHO_ON : PAM_PROMPT_ECHO_OFF;
OpenPOWER on IntegriCloud