summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Cameron <brian.cameron@sun.com>2006-05-31 10:26:02 +0000
committerBrian Cameron <bcameron@src.gnome.org>2006-05-31 10:26:02 +0000
commitc6b3a2724d273c93af17c1a315ad8af78ac36f51 (patch)
tree396359c22b80d723ca7870e440192e5c46349718
parent17195b520b980a34e6aa5b075f88c49aa2060ef1 (diff)
downloadgdm-c6b3a2724d273c93af17c1a315ad8af78ac36f51.tar.gz
Correct serious issue where user can enter the configure screen with their
2006-05-31 Brian Cameron <brian.cameron@sun.com> * gui/gdmlogin.c, gui/greeter/greeter.c, gui/greeter/greeter_item_ulist.[ch], gui/greeter/greeter_system.c: Correct serious issue where user can enter the configure screen with their user password instead of the root password. Fixes bug #343476.
-rw-r--r--ChangeLog8
-rw-r--r--gui/gdmlogin.c2
-rw-r--r--gui/greeter/greeter.c6
-rw-r--r--gui/greeter/greeter_item_ulist.c10
-rw-r--r--gui/greeter/greeter_item_ulist.h1
-rw-r--r--gui/greeter/greeter_system.c5
6 files changed, 29 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 88f6aae8..5db78d78 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-05-31 Brian Cameron <brian.cameron@sun.com>
+
+ * gui/gdmlogin.c, gui/greeter/greeter.c,
+ gui/greeter/greeter_item_ulist.[ch], gui/greeter/greeter_system.c:
+ Correct serious issue where user can enter the configure
+ screen with their user password instead of the root password.
+ Fixes bug #343476.
+
2006-03-22 Tommi Vainikainen <thv@iki.fi>
* configure.in (ALL_LINGUAS): Added Dzongkha (dz).
diff --git a/gui/gdmlogin.c b/gui/gdmlogin.c
index 5965d0bf..b574beef 100644
--- a/gui/gdmlogin.c
+++ b/gui/gdmlogin.c
@@ -798,6 +798,8 @@ gdm_parse_enriched_string (const char *pre, const gchar *s, const char *post)
static void
gdm_run_gdmconfig (GtkWidget *w, gpointer data)
{
+ gtk_widget_set_sensitive (browser, FALSE);
+
/* we should be now fine for focusing new windows */
gdm_wm_focus_new_windows (TRUE);
diff --git a/gui/greeter/greeter.c b/gui/greeter/greeter.c
index 0fdc8afc..b2c621d1 100644
--- a/gui/greeter/greeter.c
+++ b/gui/greeter/greeter.c
@@ -384,7 +384,6 @@ greeter_ctrl_handler (GIOChannel *source,
buf[len-1] = '\0';
greeter_item_pam_set_user (buf);
- greeter_item_ulist_enable ();
printf ("%c\n", STX);
fflush (stdout);
break;
@@ -541,6 +540,8 @@ greeter_ctrl_handler (GIOChannel *source,
printf ("%c\n", STX);
fflush (stdout);
greeter_ignore_buttons (FALSE);
+ greeter_item_ulist_enable ();
+
break;
case GDM_QUIT:
@@ -1504,6 +1505,9 @@ main (int argc, char *argv[])
gtk_window_move (GTK_WINDOW (window), gdm_wm_screen.x, gdm_wm_screen.y);
gtk_widget_show_now (window);
+ greeter_item_ulist_unset_selected_user ();
+ greeter_item_ulist_enable ();
+
/* can it ever happen that it'd be NULL here ??? */
if G_UNLIKELY (window->window != NULL)
{
diff --git a/gui/greeter/greeter_item_ulist.c b/gui/greeter/greeter_item_ulist.c
index 04976430..52450ba5 100644
--- a/gui/greeter/greeter_item_ulist.c
+++ b/gui/greeter/greeter_item_ulist.c
@@ -62,6 +62,14 @@ enum
GREETER_ULIST_ACTIVE_COLUMN
};
+void
+greeter_item_ulist_unset_selected_user (void)
+{
+ GtkTreeSelection *selection;
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (user_list));
+ gtk_tree_selection_unselect_all (selection);
+}
+
static void
check_for_displays (void)
{
@@ -325,8 +333,6 @@ greeter_item_ulist_setup (void)
force_no_tree_separators (user_list);
greeter_generate_userlist (user_list);
- if ( ! DOING_GDM_DEVELOPMENT)
- greeter_item_ulist_disable ();
/* Reset size of the widget canvas item so it
* is the same size as the userlist. This
diff --git a/gui/greeter/greeter_item_ulist.h b/gui/greeter/greeter_item_ulist.h
index ad8cdba2..00d98bba 100644
--- a/gui/greeter/greeter_item_ulist.h
+++ b/gui/greeter/greeter_item_ulist.h
@@ -25,5 +25,6 @@ gboolean greeter_item_ulist_setup (void);
void greeter_item_ulist_enable (void);
void greeter_item_ulist_disable (void);
void greeter_item_ulist_set_user (const char *user);
+void greeter_item_ulist_unset_selected_user (void);
#endif
diff --git a/gui/greeter/greeter_system.c b/gui/greeter/greeter_system.c
index 8899ac13..4baa615e 100644
--- a/gui/greeter/greeter_system.c
+++ b/gui/greeter/greeter_system.c
@@ -119,6 +119,11 @@ greeter_suspend_handler (void)
static void
greeter_config_handler (void)
{
+ greeter_item_ulist_disable ();
+
+ /* Make sure to unselect the user */
+ greeter_item_ulist_unset_selected_user ();
+
/* we should be now fine for focusing new windows */
gdm_wm_focus_new_windows (TRUE);