diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2011-07-22 09:27:35 +1000 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2011-07-22 09:27:35 +1000 |
commit | 92b80b95a6c4224f16f694596864ba832df692cf (patch) | |
tree | 00c638074655bf44b61f01055730304737e71ef8 /src/greeter.c | |
parent | 1695715a76c4b7d0e1c7746e5c852750407e9df3 (diff) | |
download | lightdm-92b80b95a6c4224f16f694596864ba832df692cf.tar.gz |
Pass the username back from the daeamon so can tell who logged in as when using login prompt
Diffstat (limited to 'src/greeter.c')
-rw-r--r-- | src/greeter.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/greeter.c b/src/greeter.c index d4f77eae..acd5351b 100644 --- a/src/greeter.c +++ b/src/greeter.c @@ -206,15 +206,13 @@ pam_messages_cb (PAMSession *session, int num_msg, const struct pam_message **ms /* Respond to d-bus query with messages */ g_debug ("Prompt greeter with %d message(s)", num_msg); - size = int_length () + int_length (); + size = int_length () + string_length (pam_session_get_username (session)) + int_length (); for (i = 0; i < num_msg; i++) - { - g_debug ("%s", msg[i]->msg); size += int_length () + string_length (msg[i]->msg); - } write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_PROMPT_AUTHENTICATION, size, &offset); write_int (message, MAX_MESSAGE_LENGTH, greeter->priv->authentication_sequence_number, &offset); + write_string (message, MAX_MESSAGE_LENGTH, pam_session_get_username (session), &offset); write_int (message, MAX_MESSAGE_LENGTH, num_msg, &offset); for (i = 0; i < num_msg; i++) { @@ -225,13 +223,14 @@ pam_messages_cb (PAMSession *session, int num_msg, const struct pam_message **ms } static void -send_end_authentication (Greeter *greeter, guint32 sequence_number, int result) +send_end_authentication (Greeter *greeter, guint32 sequence_number, const gchar *username, int result) { guint8 message[MAX_MESSAGE_LENGTH]; gsize offset = 0; - write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_END_AUTHENTICATION, int_length () + int_length (), &offset); + write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_END_AUTHENTICATION, int_length () + string_length (username) + int_length (), &offset); write_int (message, MAX_MESSAGE_LENGTH, sequence_number, &offset); + write_string (message, MAX_MESSAGE_LENGTH, username, &offset); write_int (message, MAX_MESSAGE_LENGTH, result, &offset); write_message (greeter, message, offset); } @@ -247,7 +246,7 @@ authentication_result_cb (PAMSession *session, int result, Greeter *greeter) pam_session_authorize (session); } - send_end_authentication (greeter, greeter->priv->authentication_sequence_number, result); + send_end_authentication (greeter, greeter->priv->authentication_sequence_number, pam_session_get_username (session), result); } static void @@ -286,7 +285,7 @@ handle_login (Greeter *greeter, guint32 sequence_number, const gchar *username) if (!pam_session_start (greeter->priv->pam_session, &error)) { g_warning ("Failed to start authentication: %s", error->message); - send_end_authentication (greeter, sequence_number, PAM_SYSTEM_ERR); + send_end_authentication (greeter, sequence_number, "", PAM_SYSTEM_ERR); } g_clear_error (&error); } @@ -301,12 +300,12 @@ handle_login_as_guest (Greeter *greeter, guint32 sequence_number) if (!greeter->priv->allow_guest) { g_debug ("Guest account is disabled"); - send_end_authentication (greeter, sequence_number, PAM_USER_UNKNOWN); + send_end_authentication (greeter, sequence_number, "", PAM_USER_UNKNOWN); return; } greeter->priv->using_guest_account = TRUE; - send_end_authentication (greeter, sequence_number, PAM_SUCCESS); + send_end_authentication (greeter, sequence_number, "", PAM_SUCCESS); } static void |