diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2012-08-24 17:29:40 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2012-08-24 17:29:40 +1200 |
commit | 9d625de065a3553f19c498a7918c94fac19857e2 (patch) | |
tree | 46b8d1713090c07b0ebe793c3bb1a03bf48b40e0 /tests | |
parent | 909b576f956fd36ff50e8ee500dac04ff074c34b (diff) | |
download | lightdm-9d625de065a3553f19c498a7918c94fac19857e2.tar.gz |
Fix small bugs in remote authentication prompts not coming back
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/libsystem.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/tests/src/libsystem.c b/tests/src/libsystem.c index e6038d42..693c91e1 100644 --- a/tests/src/libsystem.c +++ b/tests/src/libsystem.c @@ -26,6 +26,7 @@ struct pam_handle { char *service_name; char *user; + char *authtok; char *ruser; char *tty; char **envlist; @@ -522,11 +523,14 @@ pam_authenticate (pam_handle_t *pamh, int flags) free (resp); return PAM_CONV_ERR; } - - password_matches = strcmp (pamh->ruser, "remote-user") == 0 && strcmp (resp[0].resp, "password") == 0; + if (pamh->authtok) + free (pamh->authtok); + pamh->authtok = strdup (resp[0].resp); free (resp[0].resp); free (resp); + password_matches = strcmp (pamh->ruser, "remote-user") == 0 && strcmp (pamh->authtok, "password") == 0; + if (password_matches) return PAM_SUCCESS; else @@ -798,6 +802,10 @@ pam_get_item (const pam_handle_t *pamh, int item_type, const void **item) *item = pamh->user; return PAM_SUCCESS; + case PAM_AUTHTOK: + *item = pamh->authtok; + return PAM_SUCCESS; + case PAM_RUSER: *item = pamh->ruser; return PAM_SUCCESS; @@ -974,6 +982,8 @@ pam_end (pam_handle_t *pamh, int pam_status) free (pamh->service_name); if (pamh->user) free (pamh->user); + if (pamh->authtok) + free (pamh->authtok); if (pamh->ruser) free (pamh->ruser); if (pamh->tty) |