summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Cameron <brian.cameron@sun.com>2006-05-31 09:24:08 +0000
committerBrian Cameron <bcameron@src.gnome.org>2006-05-31 09:24:08 +0000
commit6cfe576b6529846cf0cbb9fe0002cf05ff70007c (patch)
treefcbdf30e6c8347cb692b33eb9bfdeb768726de41
parentcc906fec1422282d9489f9df6451624adc81fb41 (diff)
downloadgdm-6cfe576b6529846cf0cbb9fe0002cf05ff70007c.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.c, 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.c7
-rw-r--r--gui/greeter/greeter.c6
-rw-r--r--gui/greeter/greeter_item_ulist.c6
-rw-r--r--gui/greeter/greeter_system.c5
5 files changed, 28 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index f650b360..b1fe779d 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.c, 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-05-30 Brian Cameron <brian.cameron@sun.com>
* vicious-extensions/ve-config.c: Now save in
diff --git a/gui/gdmlogin.c b/gui/gdmlogin.c
index 2823b356..8ff78b3c 100644
--- a/gui/gdmlogin.c
+++ b/gui/gdmlogin.c
@@ -641,6 +641,13 @@ set_screen_to_pos (int x, int y)
static void
gdm_run_gdmconfig (GtkWidget *w, gpointer data)
{
+ gtk_widget_set_sensitive (browser, FALSE);
+
+ /* Make sure to unselect the user */
+ if (selected_user != NULL)
+ g_free (selected_user);
+ selected_user = NULL;
+
/* 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 0ed58bf2..5996a248 100644
--- a/gui/greeter/greeter.c
+++ b/gui/greeter/greeter.c
@@ -161,7 +161,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;
@@ -180,7 +179,6 @@ greeter_ctrl_handler (GIOChannel *source,
greeter_probably_login_prompt = FALSE;
}
greeter_ignore_buttons (FALSE);
- greeter_item_ulist_enable ();
greeter_item_pam_prompt (tmp, PW_ENTRY_SIZE, TRUE);
g_free (tmp);
@@ -328,6 +326,8 @@ greeter_ctrl_handler (GIOChannel *source,
printf ("%c\n", STX);
fflush (stdout);
greeter_ignore_buttons (FALSE);
+ greeter_item_ulist_enable ();
+
break;
case GDM_QUIT:
@@ -1351,6 +1351,8 @@ 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 ();
+
/* 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 0bf78717..fd13da7f 100644
--- a/gui/greeter/greeter_item_ulist.c
+++ b/gui/greeter/greeter_item_ulist.c
@@ -65,6 +65,10 @@ enum
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);
+
if (selected_user != NULL)
g_free (selected_user);
selected_user = NULL;
@@ -350,8 +354,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_system.c b/gui/greeter/greeter_system.c
index 2f28a258..76d5aaa1 100644
--- a/gui/greeter/greeter_system.c
+++ b/gui/greeter/greeter_system.c
@@ -124,6 +124,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);