Greg Trounson has proposed merging 
lp:~uoms-gregt/lightdm-gtk-greeter/trim-username into lp:lightdm-gtk-greeter.

Commit message:
Ignore whitespace before and after username when authenticating.

Requested reviews:
  LightDM Gtk+ Greeter Development Team (lightdm-gtk-greeter-team)

For more details, see:
https://code.launchpad.net/~uoms-gregt/lightdm-gtk-greeter/trim-username/+merge/362953

Our use case:
Users press the space bar to either power up the computer or bring the monitor 
out
of sleep.  If the computer is already powered on then that keypress propagates 
to the username
field in lightdm-gtk-greeter, inserting a <space> before they type their 
username, resulting in a failed login.  With proportional fonts this is almost 
impossible to see at a glance.

Given that whitespace can never be part of a valid username (cf IEEE 
1003.1-2001), this patch trims the beginning and end of the username string 
before passing it to the authentication code.  <Space> characters still appear 
in the username field, but have no effect.

To test:
At a lightdm login prompt, type:
<space>username
or:
username<space>
then enter your password.

Pre-patch:
The login will fail.
Post-patch:
The login will succeed.

-- 
Your team LightDM Gtk+ Greeter Development Team is requested to review the 
proposed merge of lp:~uoms-gregt/lightdm-gtk-greeter/trim-username into 
lp:lightdm-gtk-greeter.
=== modified file 'src/lightdm-gtk-greeter.c'
--- src/lightdm-gtk-greeter.c	2018-03-15 00:29:41 +0000
+++ src/lightdm-gtk-greeter.c	2019-02-10 20:58:40 +0000
@@ -1999,13 +1999,17 @@
     password_prompted = FALSE;
     prompt_active = FALSE;
 
+    gchar* trimmed_username;
+    trimmed_username = g_strdup (username);
+    g_strstrip (trimmed_username);
+
     if (pending_questions)
     {
         g_slist_free_full (pending_questions, (GDestroyNotify) pam_message_finalize);
         pending_questions = NULL;
     }
 
-    config_set_string (STATE_SECTION_GREETER, STATE_KEY_LAST_USER, username);
+    config_set_string (STATE_SECTION_GREETER, STATE_KEY_LAST_USER, trimmed_username);
 
     if (g_strcmp0 (username, "*other") == 0)
     {
@@ -2031,7 +2035,7 @@
 			}
 		}
     }
-    else if (g_strcmp0 (username, "*guest") == 0)
+    else if (g_strcmp0 (trimmed_username, "*guest") == 0)
     {
 #ifdef HAVE_LIBLIGHTDMGOBJECT_1_19_2
         lightdm_greeter_authenticate_as_guest (greeter, NULL);
@@ -2043,7 +2047,7 @@
     {
         LightDMUser *user;
 
-        user = lightdm_user_list_get_user_by_name (lightdm_user_list_get_instance (), username);
+        user = lightdm_user_list_get_user_by_name (lightdm_user_list_get_instance (), trimmed_username);
         if (user)
         {
             if (!current_session)
@@ -2057,11 +2061,12 @@
             set_language (NULL);
         }
 #ifdef HAVE_LIBLIGHTDMGOBJECT_1_19_2
-        lightdm_greeter_authenticate (greeter, username, NULL);
+        lightdm_greeter_authenticate (greeter, trimmed_username, NULL);
 #else
-        lightdm_greeter_authenticate (greeter, username);
+        lightdm_greeter_authenticate (greeter, trimmed_username);
 #endif
     }
+    g_free (trimmed_username);
 }
 
 static void

-- 
Mailing list: https://launchpad.net/~lightdm-gtk-greeter-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~lightdm-gtk-greeter-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to