SHA256
1
0
forked from pool/gdm
gdm/gdm-2.19.3-reset-pam.patch

184 lines
6.1 KiB
Diff
Raw Normal View History

diff -upr gdm-2.19.5-pre/daemon/gdm.c gdm-2.19.5-post/daemon/gdm.c
--- gdm-2.19.5-pre/daemon/gdm.c 2007-07-30 13:51:14.000000000 -0500
+++ gdm-2.19.5-post/daemon/gdm.c 2007-08-03 20:23:38.000000000 -0500
@@ -4363,6 +4363,14 @@ gdm_handle_user_message (GdmConnection *
gdm_connection_write (conn, "OK false\n");
} else if (strcmp (msg, GDM_SUP_CLOSE) == 0) {
gdm_connection_close (conn);
+ } else if (strcmp (msg, GDM_SOP_CANCEL_LOGIN_REQUESTS) == 0) {
+ GSList *li;
+ for (li = gdm_daemon_config_get_display_list (); li != NULL; li = li->next) {
+ GdmDisplay *d = li->data;
+ if (!d->logged_in) {
+ send_slave_command (d, GDM_NOTIFY_RESET);
+ }
+ }
} else {
gdm_connection_write (conn, "ERROR 0 Not implemented\n");
gdm_connection_close (conn);
diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h
--- gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h 2007-08-03 20:20:26.000000000 -0500
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-03 20:23:38.000000000 -0500
@@ -233,6 +233,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 -upr gdm-2.19.5-pre/daemon/gdm-socket-protocol.h gdm-2.19.5-post/daemon/gdm-socket-protocol.h
--- gdm-2.19.5-pre/daemon/gdm-socket-protocol.h 2007-08-03 20:20:26.000000000 -0500
+++ gdm-2.19.5-post/daemon/gdm-socket-protocol.h 2007-08-03 20:23:38.000000000 -0500
@@ -157,6 +157,8 @@
#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 -upr gdm-2.19.5-pre/daemon/slave.c gdm-2.19.5-post/daemon/slave.c
--- gdm-2.19.5-pre/daemon/slave.c 2007-08-03 20:20:26.000000000 -0500
+++ gdm-2.19.5-post/daemon/slave.c 2007-08-03 20:24:23.000000000 -0500
@@ -175,6 +175,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
@@ -663,7 +669,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));
@@ -671,6 +677,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
@@ -1156,7 +1165,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);
@@ -2005,7 +2014,7 @@ restart_the_greeter (void)
d->greetpid = 0;
- whack_greeter_fds ();
+ whack_greeter_and_slave_fds ();
gdm_slave_send_num (GDM_SOP_GREETPID, 0);
}
@@ -2295,6 +2304,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);
@@ -2908,9 +2923,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];
@@ -5208,7 +5224,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;
@@ -5220,7 +5236,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
@@ -5363,6 +5379,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;
Only in gdm-2.19.5-post/daemon: slave.c~
Only in gdm-2.19.5-post: error.18580
diff -upr gdm-2.19.5-pre/gui/greeter/greeter.c gdm-2.19.5-post/gui/greeter/greeter.c
--- gdm-2.19.5-pre/gui/greeter/greeter.c 2007-08-03 20:20:26.000000000 -0500
+++ gdm-2.19.5-post/gui/greeter/greeter.c 2007-08-03 20:23:38.000000000 -0500
@@ -278,7 +278,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;
@@ -483,16 +482,9 @@ 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);