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 | |
parent | 909b576f956fd36ff50e8ee500dac04ff074c34b (diff) | |
download | lightdm-9d625de065a3553f19c498a7918c94fac19857e2.tar.gz |
Fix small bugs in remote authentication prompts not coming back
-rw-r--r-- | src/greeter.c | 10 | ||||
-rw-r--r-- | tests/src/libsystem.c | 14 |
2 files changed, 19 insertions, 5 deletions
diff --git a/src/greeter.c b/src/greeter.c index 00303ac0..a7cd43a4 100644 --- a/src/greeter.c +++ b/src/greeter.c @@ -392,10 +392,13 @@ handle_login_remote (Greeter *greeter, const gchar *session_name, const gchar *u { gchar *service; - if (username) - g_debug ("Greeter start authentication for remote session %s as user %s", session_name, username); - else + if (username[0] == '\0') + { g_debug ("Greeter start authentication for remote session %s", session_name); + username = NULL; + } + else + g_debug ("Greeter start authentication for remote session %s as user %s", session_name, username); reset_session (greeter); @@ -406,6 +409,7 @@ handle_login_remote (Greeter *greeter, const gchar *session_name, const gchar *u return; } + greeter->priv->authentication_sequence_number = sequence_number; g_signal_emit (greeter, signals[START_AUTHENTICATION], 0, username, &greeter->priv->authentication_session); if (greeter->priv->authentication_session) { 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) |