From e2a1de91b5e956b8e1b1453aca5f65aeba7602d7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Jul 31 2007 04:17:24 +0000 Subject: 2.19.5 --- diff --git a/.cvsignore b/.cvsignore index 7c58bc0..a119576 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1 @@ -gdm-2.19.4.tar.bz2 -fedora-faces-20070319.tar.bz2 +gdm-2.19.5.tar.bz2 diff --git a/gdm-2.19.5-reset-pam.patch b/gdm-2.19.5-reset-pam.patch new file mode 100644 index 0000000..92fae7c --- /dev/null +++ b/gdm-2.19.5-reset-pam.patch @@ -0,0 +1,184 @@ +diff -up gdm-2.19.5/gui/greeter/greeter.c.reset-pam gdm-2.19.5/gui/greeter/greeter.c +--- gdm-2.19.5/gui/greeter/greeter.c.reset-pam 2007-07-30 14:51:01.000000000 -0400 ++++ gdm-2.19.5/gui/greeter/greeter.c 2007-07-31 00:10:18.000000000 -0400 +@@ -224,7 +224,6 @@ process_operation (guchar op_code, + GtkWidget *dlg; + char *tmp; + char *session; +- GreeterItemInfo *conversation_info; + static GnomeCanvasItem *disabled_cover = NULL; + gint lookup_status = SESSION_LOOKUP_SUCCESS; + gchar *firstmsg = NULL; +@@ -428,17 +427,10 @@ process_operation (guchar op_code, + + first_prompt = TRUE; + +- conversation_info = greeter_lookup_id ("pam-conversation"); +- +- if (conversation_info) +- { +- tmp = ve_locale_to_utf8 (args); +- g_object_set (G_OBJECT (conversation_info->item), +- "text", tmp, +- NULL); +- g_free (tmp); +- } +- ++ greeter_item_ulist_unset_selected_user (); ++ greeter_item_pam_prompt ("", PW_ENTRY_SIZE, TRUE); ++ greeter_item_pam_message (""); ++ + printf ("%c\n", STX); + fflush (stdout); + greeter_ignore_buttons (FALSE); +diff -up gdm-2.19.5/daemon/slave.c.reset-pam gdm-2.19.5/daemon/slave.c +--- gdm-2.19.5/daemon/slave.c.reset-pam 2007-07-30 14:51:14.000000000 -0400 ++++ gdm-2.19.5/daemon/slave.c 2007-07-31 00:13:39.000000000 -0400 +@@ -173,6 +173,12 @@ static int gdm_normal_runlevel = + static pid_t extra_process = 0; + static int extra_status = 0; + ++/* a dup of the other side of greeter_fd_in so that ++ * the slave can talk to itself from its sig handler ++ * using the greeter ipc mechanism ++ */ ++static int slave_fd_out = -1; ++ + #ifdef HAVE_TSOL + static gboolean have_suntsol_extension = FALSE; + #endif +@@ -661,7 +667,7 @@ ignore_xerror_handler (Display *disp, XE + } + + static void +-whack_greeter_fds (void) ++whack_greeter_and_slave_fds (void) + { + if (greeter_fd_out > 0) + VE_IGNORE_EINTR (close (greeter_fd_out)); +@@ -669,6 +675,9 @@ whack_greeter_fds (void) + if (greeter_fd_in > 0) + VE_IGNORE_EINTR (close (greeter_fd_in)); + greeter_fd_in = -1; ++ if (slave_fd_out > 0) ++ VE_IGNORE_EINTR (close (slave_fd_out)); ++ slave_fd_out = -1; + } + + static void +@@ -1154,7 +1163,7 @@ gdm_slave_whack_greeter (void) + + d->greetpid = 0; + +- whack_greeter_fds (); ++ whack_greeter_and_slave_fds (); + + gdm_slave_send_num (GDM_SOP_GREETPID, 0); + +@@ -2003,7 +2012,7 @@ restart_the_greeter (void) + + d->greetpid = 0; + +- whack_greeter_fds (); ++ whack_greeter_and_slave_fds (); + + gdm_slave_send_num (GDM_SOP_GREETPID, 0); + } +@@ -2240,6 +2249,12 @@ gdm_slave_wait_for_login (void) + break; + } + ++ if (do_cancel) { ++ gdm_debug ("canceling..."); ++ gdm_slave_greeter_ctl_no_ret (GDM_RESETOK, ""); ++ continue; ++ } ++ + if (login_user == NULL) { + const char *failuresound = gdm_daemon_config_get_value_string (GDM_KEY_SOUND_ON_LOGIN_FAILURE_FILE); + +@@ -2853,10 +2868,10 @@ gdm_slave_greeter (void) + + default: + VE_IGNORE_EINTR (close (pipe1[0])); +- VE_IGNORE_EINTR (close (pipe2[1])); + +- whack_greeter_fds (); ++ whack_greeter_and_slave_fds (); + ++ slave_fd_out = pipe2[1]; + greeter_fd_out = pipe1[1]; + greeter_fd_in = pipe2[0]; + +@@ -5147,7 +5162,7 @@ gdm_slave_child_handler (int sig) + + greet = FALSE; + d->greetpid = 0; +- whack_greeter_fds (); ++ whack_greeter_and_slave_fds (); + gdm_slave_send_num (GDM_SOP_GREETPID, 0); + + do_restart_greeter = TRUE; +@@ -5159,7 +5174,7 @@ gdm_slave_child_handler (int sig) + continue; + } + +- whack_greeter_fds (); ++ whack_greeter_and_slave_fds (); + + /* if greet is TRUE, then the greeter died outside of our + * control really, so clean up and die, something is wrong +@@ -5302,6 +5317,11 @@ gdm_slave_handle_usr2_message (void) + gdm_wait_for_go = FALSE; + } else if (strcmp (&s[1], GDM_NOTIFY_TWIDDLE_POINTER) == 0) { + gdm_twiddle_pointer (d); ++ } else if (strcmp (&s[1], GDM_NOTIFY_RESET) == 0) { ++ if (!d->logged_in) { ++ gdm_fdprintf (slave_fd_out, "%c%c%c\n", ++ STX, BEL, GDM_INTERRUPT_CANCEL); ++ } + } + } else if (s[0] == GDM_SLAVE_NOTIFY_RESPONSE) { + gdm_got_ack = TRUE; +diff -up gdm-2.19.5/daemon/gdm-daemon-config-keys.h.reset-pam gdm-2.19.5/daemon/gdm-daemon-config-keys.h +--- gdm-2.19.5/daemon/gdm-daemon-config-keys.h.reset-pam 2007-07-30 14:51:14.000000000 -0400 ++++ gdm-2.19.5/daemon/gdm-daemon-config-keys.h 2007-07-31 00:10:18.000000000 -0400 +@@ -229,6 +229,7 @@ G_BEGIN_DECLS + #define GDM_NOTIFY_SOFT_RESTART_SERVERS "SOFT_RESTART_SERVERS" + #define GDM_NOTIFY_GO "GO" + #define GDM_NOTIFY_TWIDDLE_POINTER "TWIDDLE_POINTER" ++#define GDM_NOTIFY_RESET "RESET" + + G_END_DECLS + +diff -up gdm-2.19.5/daemon/gdm.c.reset-pam gdm-2.19.5/daemon/gdm.c +--- gdm-2.19.5/daemon/gdm.c.reset-pam 2007-07-30 14:51:14.000000000 -0400 ++++ gdm-2.19.5/daemon/gdm.c 2007-07-31 00:10:18.000000000 -0400 +@@ -2578,6 +2578,14 @@ gdm_handle_message (GdmConnection *conn, + TRUE /* handled */, + FALSE /* chooser */, + NULL, 0, NULL, NULL, NULL); ++} else if (strcmp (msg, GDM_SOP_CANCEL_LOGIN_REQUESTS) == 0) { ++ GSList *li, *displays = gdm_daemon_config_get_display_list (); ++ for (li = displays; li != NULL; li = li->next) { ++ GdmDisplay *d = li->data; ++ if (!d->logged_in) { ++ send_slave_command (d, GDM_NOTIFY_RESET); ++ } ++ } + } else if (strncmp (msg, "opcode="GDM_SOP_SHOW_ERROR_DIALOG, + strlen ("opcode="GDM_SOP_SHOW_ERROR_DIALOG)) == 0) { + char **list; +diff -up gdm-2.19.5/daemon/gdm-socket-protocol.h.reset-pam gdm-2.19.5/daemon/gdm-socket-protocol.h +--- gdm-2.19.5/daemon/gdm-socket-protocol.h.reset-pam 2007-07-30 14:51:14.000000000 -0400 ++++ gdm-2.19.5/daemon/gdm-socket-protocol.h 2007-07-31 00:10:18.000000000 -0400 +@@ -155,6 +155,9 @@ + #define GDM_SOP_SHOW_QUESTION_DIALOG "SHOW_QUESTION_DIALOG" /* show the question dialog from daemon */ + #define GDM_SOP_SHOW_ASKBUTTONS_DIALOG "SHOW_ASKBUTTON_DIALOG" /* show the askbutton dialog from daemon */ + ++/* Reset any in progress authentication conversations */ ++#define GDM_SOP_CANCEL_LOGIN_REQUESTS "CANCEL_LOGIN_REQUESTS" /* no arguments */ ++ + + /* Ack for a slave message */ + /* Note that an extra response can follow an 'ack' */ diff --git a/gdm.spec b/gdm.spec index 6914a30..38148f0 100644 --- a/gdm.spec +++ b/gdm.spec @@ -16,8 +16,8 @@ Summary: The GNOME Display Manager Name: gdm -Version: 2.19.4 -Release: 2%{?dist} +Version: 2.19.5 +Release: 1%{?dist} Epoch: 1 License: LGPL/GPL Group: User Interface/X @@ -33,7 +33,7 @@ Source6: default.desktop Patch4: gdm-2.13.0.4-update-switchdesk-location.patch Patch19: gdm-2.19.3-move-default-message.patch -Patch20: gdm-2.19.1-reset-pam.patch +Patch20: gdm-2.19.5-reset-pam.patch Patch21: gdm-2.19.1-security-tokens.patch # https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=203917 @@ -350,6 +350,9 @@ fi %{_datadir}/pixmaps/faces/extras/*.jpg %changelog +* Tue Jul 31 2007 Matthias Clasen - 1:2.19.5-1 +- Update to 2.19.5 + * Mon Jul 30 2007 Matthias Clasen - 1:2.19.4-2 - Add optional gnome-keyring support to the gdm pam stack diff --git a/sources b/sources index 4bbca85..a939a52 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -8e0e96a9e0ba8113f2e739a18a2a57e3 gdm-2.19.4.tar.bz2 -7387935ad09f746889b58bd69bf815e1 fedora-faces-20070319.tar.bz2 +7c3afeb0b370218ee1291be1d560f5d8 gdm-2.19.5.tar.bz2