Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:jberkman
gdm
gdm-2.16.4-reset-pam.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gdm-2.16.4-reset-pam.patch of Package gdm
--- gdm-2.16.4/gui/greeter/greeter.c.reset-pam 2006-10-30 15:56:34.000000000 -0500 +++ gdm-2.16.4/gui/greeter/greeter.c 2006-12-15 11:11:07.000000000 -0500 @@ -168,7 +168,6 @@ GtkWidget *dlg; char *tmp; char *session; - GreeterItemInfo *conversation_info; static GnomeCanvasItem *disabled_cover = NULL; gchar *language; gchar *selected_user = NULL; @@ -328,16 +327,9 @@ if (gtk_start_again_button != NULL) gtk_widget_set_sensitive (gtk_start_again_button, FALSE); - 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); --- gdm-2.16.4/daemon/slave.c.reset-pam 2006-12-15 11:03:01.000000000 -0500 +++ gdm-2.16.4/daemon/slave.c 2006-12-15 11:03:01.000000000 -0500 @@ -128,6 +128,12 @@ static int greeter_fd_out = -1; static int greeter_fd_in = -1; +/* 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 @@ -620,7 +626,7 @@ } static void -whack_greeter_fds (void) +whack_greeter_and_slave_fds (void) { if (greeter_fd_out > 0) VE_IGNORE_EINTR (close (greeter_fd_out)); @@ -628,6 +634,9 @@ 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 @@ -1078,7 +1087,7 @@ d->greetpid = 0; - whack_greeter_fds (); + whack_greeter_and_slave_fds (); gdm_slave_send_num (GDM_SOP_GREETPID, 0); @@ -1844,7 +1853,7 @@ d->greetpid = 0; - whack_greeter_fds (); + whack_greeter_and_slave_fds (); gdm_slave_send_num (GDM_SOP_GREETPID, 0); } @@ -2076,6 +2085,12 @@ break; } + if (do_cancel) { + gdm_debug ("canceling..."); + gdm_slave_greeter_ctl_no_ret (GDM_RESETOK, ""); + continue; + } + if (login == NULL) { char *failuresound = gdm_get_value_string (GDM_KEY_SOUND_ON_LOGIN_FAILURE_FILE); @@ -2674,9 +2689,9 @@ default: VE_IGNORE_EINTR (close (pipe1[0])); - VE_IGNORE_EINTR (close (pipe2[1])); + whack_greeter_and_slave_fds (); - whack_greeter_fds (); + slave_fd_out = pipe2[1]; greeter_fd_out = pipe1[1]; greeter_fd_in = pipe2[0]; @@ -4661,7 +4676,7 @@ 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; @@ -4673,7 +4688,7 @@ 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 @@ -4816,6 +4831,11 @@ 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); + } } } } --- gdm-2.16.4/daemon/gdm.h.reset-pam 2006-08-23 23:47:43.000000000 -0400 +++ gdm-2.16.4/daemon/gdm.h 2006-12-15 11:03:01.000000000 -0500 @@ -710,6 +710,9 @@ /* Start a new standard X flexible server */ #define GDM_SOP_FLEXI_XSERVER "FLEXI_XSERVER" /* no arguments */ +/* Reset any in progress authentication conversations */ +#define GDM_SOP_CANCEL_LOGIN_REQUESTS "CANCEL_LOGIN_REQUESTS" /* no arguments */ + /* Notification protocol */ /* keys */ #define GDM_NOTIFY_ALLOW_REMOTE_ROOT "AllowRemoteRoot" /* <true/false as int> */ @@ -736,6 +739,7 @@ #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" /* Ack for a slave message */ /* Note that an extra response can follow an 'ack' */ --- gdm-2.16.4/daemon/gdm.c.reset-pam 2006-10-16 13:37:32.000000000 -0400 +++ gdm-2.16.4/daemon/gdm.c 2006-12-15 11:03:01.000000000 -0500 @@ -2388,6 +2388,14 @@ TRUE /* handled */, FALSE /* chooser */, NULL, 0, NULL, NULL); + } else if (strcmp (msg, GDM_SOP_CANCEL_LOGIN_REQUESTS) == 0) { + GSList *li; + for (li = displays; li != NULL; li = li->next) { + GdmDisplay *d = li->data; + if (!d->logged_in) { + send_slave_command (d, GDM_NOTIFY_RESET); + } + } } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor