hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From af1c347a31ae243d29c6087da8ffb423b23c74f2 Mon Sep 17 00:00:00 2001
From: Kai Kang <kai.kang@windriver.com>
Date: Mon, 1 Feb 2021 09:54:48 +0800
Subject: [PATCH] greeter.c: disallow empty new password
 
Do not clear text of label 'promt' when skip_password is set. When user
is required to update password, it only shows input box without label
for about 1 second.
 
And disallow empty new password when user is required to update it.
 
Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/2/]
 
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
 src/greeter.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
 
diff --git a/src/greeter.c b/src/greeter.c
index 7e4a168..c0e6b64 100644
--- a/src/greeter.c
+++ b/src/greeter.c
@@ -220,7 +220,6 @@ static void on_entry_activate(GtkEntry* entry)
         }
         if(g_key_file_get_integer(config,"base","skip_password",NULL)!=0)
         {
-            gtk_label_set_text( GTK_LABEL(prompt), "");
             try_login_user(user);
         }
         else
@@ -235,6 +239,10 @@ static void on_entry_activate(GtkEntry* entry)
         if (pass_expired) {
             if (!new_pass) {
                 new_pass = g_strdup(gtk_entry_get_text(entry));
+                if (strlen(new_pass) == 0) {
+                    new_pass = NULL;
+                    gtk_label_set_text((GtkLabel *)info, _("Empty password is not allowed."));
+                }
                 switch_to_input_passwd();
             } else {
                 tmp = g_strdup(gtk_entry_get_text(entry));
@@ -251,7 +259,7 @@ static void on_entry_activate(GtkEntry* entry)
                         gtk_label_set_text((GtkLabel *)info, _("Maximum number of failed update password attempts exceeded."));
                         switch_to_input_user();
                     }
-                } else if (!strcmp(pass, g_base64_encode((guchar*)new_pass, strlen(new_pass) + 1))) {
+                } else if (pass && !strcmp(pass, g_base64_encode((guchar*)new_pass, strlen(new_pass) + 1))) {
                     // if new password is same as old one
                     g_free(new_pass);
                     new_pass = NULL;
-- 
2.25.1