This commit is contained in:
parent
0e0bd2c048
commit
70825f1b15
@ -1,171 +0,0 @@
|
||||
--- gdm-2.13.0.4/daemon/verify-pam.c.audit-login 2005-12-21 23:50:43.000000000 -0500
|
||||
+++ gdm-2.13.0.4/daemon/verify-pam.c 2006-01-08 23:41:38.000000000 -0500
|
||||
@@ -47,6 +47,14 @@
|
||||
#include <bsm/adt_event.h>
|
||||
#endif /* HAVE_ADT */
|
||||
|
||||
+#define AU_FAILED 0
|
||||
+#define AU_SUCCESS 1
|
||||
+#ifdef HAVE_LIBAUDIT
|
||||
+#include <libaudit.h>
|
||||
+#else
|
||||
+#define log_to_audit_system(l,h,d,s) do { ; } while (0)
|
||||
+#endif
|
||||
+
|
||||
/* Evil, but this way these things are passed to the child session */
|
||||
static pam_handle_t *pamh = NULL;
|
||||
|
||||
@@ -783,6 +791,53 @@ create_pamh (GdmDisplay *d,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * log_to_audit_system:
|
||||
+ * @login: Name of user
|
||||
+ * @hostname: Name of host machine
|
||||
+ * @tty: Name of display
|
||||
+ * @success: 1 for success, 0 for failure
|
||||
+ *
|
||||
+ * Logs the success or failure of the login attempt with the linux kernel
|
||||
+ * audit system. The intent is to capture failed events where the user
|
||||
+ * fails authentication or otherwise is not permitted to login. There are
|
||||
+ * many other places where pam could potentially fail and cause login to
|
||||
+ * fail, but these are system failures rather than the signs of an account
|
||||
+ * being hacked.
|
||||
+ *
|
||||
+ * Returns nothing.
|
||||
+ */
|
||||
+
|
||||
+#ifdef HAVE_LIBAUDIT
|
||||
+static void
|
||||
+log_to_audit_system(const char *login,
|
||||
+ const char *hostname,
|
||||
+ const char *tty,
|
||||
+ gboolean success)
|
||||
+{
|
||||
+ struct passwd *pw;
|
||||
+ char buf[64];
|
||||
+ int audit_fd;
|
||||
+
|
||||
+ audit_fd = audit_open();
|
||||
+ if (login)
|
||||
+ pw = getpwnam(login);
|
||||
+ else {
|
||||
+ login = "unknown";
|
||||
+ pw = NULL;
|
||||
+ }
|
||||
+ if (pw) {
|
||||
+ snprintf(buf, sizeof(buf), "uid=%d", pw->pw_uid);
|
||||
+ audit_log_user_message(audit_fd, AUDIT_USER_LOGIN,
|
||||
+ buf, hostname, NULL, tty, (int)success);
|
||||
+ } else {
|
||||
+ snprintf(buf, sizeof(buf), "acct=%s", login);
|
||||
+ audit_log_user_message(audit_fd, AUDIT_USER_LOGIN,
|
||||
+ buf, hostname, NULL, tty, (int)success);
|
||||
+ }
|
||||
+ close(audit_fd);
|
||||
+}
|
||||
+#endif
|
||||
|
||||
/**
|
||||
* gdm_verify_user:
|
||||
@@ -875,6 +930,9 @@ authenticate_again:
|
||||
/* Start authentication session */
|
||||
did_we_ask_for_password = FALSE;
|
||||
if ((pamerr = pam_authenticate (pamh, null_tok)) != PAM_SUCCESS) {
|
||||
+ /* Log the failed login attempt */
|
||||
+ log_to_audit_system(tmp_PAM_USER, d->hostname, display, AU_FAILED);
|
||||
+
|
||||
if ( ! ve_string_empty (selected_user)) {
|
||||
pam_handle_t *tmp_pamh;
|
||||
|
||||
@@ -962,6 +1020,8 @@ authenticate_again:
|
||||
( ! gdm_get_value_bool (GDM_KEY_ALLOW_REMOTE_ROOT) && ! local) ) &&
|
||||
pwent != NULL &&
|
||||
pwent->pw_uid == 0) {
|
||||
+ /* Log the failed login attempt */
|
||||
+ log_to_audit_system(login, d->hostname, display, AU_FAILED);
|
||||
gdm_error (_("Root login disallowed on display '%s'"),
|
||||
display);
|
||||
gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX,
|
||||
@@ -989,6 +1049,8 @@ authenticate_again:
|
||||
break;
|
||||
case PAM_NEW_AUTHTOK_REQD :
|
||||
if ((pamerr = pam_chauthtok (pamh, PAM_CHANGE_EXPIRED_AUTHTOK)) != PAM_SUCCESS) {
|
||||
+ /* Log the failed login attempt */
|
||||
+ log_to_audit_system(login, d->hostname, display, AU_FAILED);
|
||||
gdm_error (_("Authentication token change failed for user %s"), login);
|
||||
gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX,
|
||||
_("\nThe change of the authentication token failed. "
|
||||
@@ -1006,18 +1068,24 @@ authenticate_again:
|
||||
#endif /* HAVE_ADT */
|
||||
break;
|
||||
case PAM_ACCT_EXPIRED :
|
||||
+ /* Log the failed login attempt */
|
||||
+ log_to_audit_system(login, d->hostname, display, AU_FAILED);
|
||||
gdm_error (_("User %s no longer permitted to access the system"), login);
|
||||
gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX,
|
||||
_("\nThe system administrator has disabled your account."));
|
||||
error_msg_given = TRUE;
|
||||
goto pamerr;
|
||||
case PAM_PERM_DENIED :
|
||||
+ /* Log the failed login attempt */
|
||||
+ log_to_audit_system(login, d->hostname, display, AU_FAILED);
|
||||
gdm_error (_("User %s not permitted to gain access at this time"), login);
|
||||
gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX,
|
||||
_("\nThe system administrator has disabled access to the system temporarily."));
|
||||
error_msg_given = TRUE;
|
||||
goto pamerr;
|
||||
default :
|
||||
+ /* Log the failed login attempt */
|
||||
+ log_to_audit_system(login, d->hostname, display, AU_FAILED);
|
||||
if (gdm_slave_action_pending ())
|
||||
gdm_error (_("Couldn't set acct. mgmt for %s"), login);
|
||||
goto pamerr;
|
||||
@@ -1069,6 +1137,8 @@ authenticate_again:
|
||||
gdm_error (_("Couldn't open session for %s"), login);
|
||||
goto pamerr;
|
||||
}
|
||||
+ /* Login succeeded */
|
||||
+ log_to_audit_system(login, d->hostname, display, AU_SUCCESS);
|
||||
|
||||
/* Workaround to avoid gdm messages being logged as PAM_pwdb */
|
||||
closelog ();
|
||||
--- gdm-2.13.0.4/configure.ac.audit-login 2006-01-02 07:52:23.000000000 -0500
|
||||
+++ gdm-2.13.0.4/configure.ac 2006-01-08 23:37:16.000000000 -0500
|
||||
@@ -72,6 +72,10 @@ AC_ARG_WITH(dmx,
|
||||
|
||||
AC_ARG_WITH(selinux, [ --with-selinux Add SELinux support])
|
||||
|
||||
+AC_ARG_WITH(libaudit,
|
||||
+ [ --with-libaudit=[auto/yes/no] Add Linux audit support [default=auto]],,
|
||||
+ with_libaudit=auto)
|
||||
+
|
||||
withval=""
|
||||
AC_ARG_WITH(post-path,
|
||||
[ --with-post-path=<PATH> add PATH to end of user's PATH when logging in],[
|
||||
@@ -888,6 +892,24 @@ else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
+# Check for Linux auditing API
|
||||
+#
|
||||
+# libaudit detection
|
||||
+if test x$with_libaudit = xno ; then
|
||||
+ have_libaudit=no;
|
||||
+else
|
||||
+ # See if we have audit daemon library
|
||||
+ AC_CHECK_LIB(audit, audit_log_user_message,
|
||||
+ have_libaudit=yes, have_libaudit=no)
|
||||
+fi
|
||||
+
|
||||
+AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes)
|
||||
+
|
||||
+if test x$have_libaudit = xyes ; then
|
||||
+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -laudit"
|
||||
+ AC_DEFINE(HAVE_LIBAUDIT,1,[linux audit support])
|
||||
+fi
|
||||
+
|
||||
# Check for Solaris auditing API
|
||||
# Note, Solaris auditing not supported for Solaris 9 or earlier and
|
||||
# should not be used on these versions of Solaris if auditing is
|
@ -1,7 +1,7 @@
|
||||
diff -upr gdm-2.17.7-pre/daemon/getvt.c gdm-2.17.7-post/daemon/getvt.c
|
||||
--- gdm-2.17.7-pre/daemon/getvt.c 2007-02-11 23:40:19.000000000 -0600
|
||||
+++ gdm-2.17.7-post/daemon/getvt.c 2007-03-20 16:25:35.000000000 -0600
|
||||
@@ -90,8 +90,10 @@ get_free_vt_linux (int *vtfd)
|
||||
diff -upr gdm-2.19.5-pre/daemon/getvt.c gdm-2.19.5-post/daemon/getvt.c
|
||||
--- gdm-2.19.5-pre/daemon/getvt.c 2007-07-30 13:51:14.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/getvt.c 2007-08-03 20:14:13.000000000 -0500
|
||||
@@ -181,8 +181,10 @@ get_free_vt_sys (int *vtfd)
|
||||
int vtno;
|
||||
unsigned short vtmask;
|
||||
struct vt_stat vtstat;
|
||||
@ -12,7 +12,7 @@ diff -upr gdm-2.17.7-pre/daemon/getvt.c gdm-2.17.7-post/daemon/getvt.c
|
||||
|
||||
do {
|
||||
errno = 0;
|
||||
@@ -101,26 +103,33 @@ get_free_vt_linux (int *vtfd)
|
||||
@@ -193,26 +195,33 @@ get_free_vt_sys (int *vtfd)
|
||||
#endif
|
||||
, 0);
|
||||
} while G_UNLIKELY (errno == EINTR);
|
||||
@ -28,12 +28,12 @@ diff -upr gdm-2.17.7-pre/daemon/getvt.c gdm-2.17.7-post/daemon/getvt.c
|
||||
+ else
|
||||
+ v_state = 0;
|
||||
|
||||
- for (vtno = gdm_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno;
|
||||
- for (vtno = gdm_daemon_config_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno;
|
||||
- vtstat.v_state & vtmask; vtno++, vtmask <<= 1);
|
||||
- if (!vtmask) {
|
||||
- VE_IGNORE_EINTR (close (fd));
|
||||
- return -1;
|
||||
+ for (vtno = gdm_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno; vtmask; vtno++, vtmask <<= 1) {
|
||||
+ for (vtno = gdm_daemon_config_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno; vtmask; vtno++, vtmask <<= 1) {
|
||||
+ /* Is this console in use? */
|
||||
+ if (v_state & vtmask)
|
||||
+ continue;
|
||||
@ -60,3 +60,4 @@ diff -upr gdm-2.17.7-pre/daemon/getvt.c gdm-2.17.7-post/daemon/getvt.c
|
||||
*vtfd = fdv;
|
||||
return vtno;
|
||||
}
|
||||
Only in gdm-2.19.5-post: error.21177
|
||||
|
@ -1,16 +1,169 @@
|
||||
--- 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 @@
|
||||
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;
|
||||
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);
|
||||
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");
|
||||
-
|
||||
@ -28,162 +181,3 @@
|
||||
|
||||
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);
|
||||
|
||||
@@ -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.19.3/daemon/slave.c~ 2007-07-18 14:10:20.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/slave.c 2007-07-18 14:12:23.000000000 -0400
|
||||
@@ -2877,10 +2877,11 @@ gdm_slave_greeter (void)
|
||||
|
||||
default:
|
||||
VE_IGNORE_EINTR (close (pipe1[0]));
|
||||
- VE_IGNORE_EINTR (close (pipe2[1]));
|
||||
|
||||
whack_greeter_and_slave_fds ();
|
||||
|
||||
+ slave_fd_out = pipe2[1];
|
||||
+
|
||||
greeter_fd_out = pipe1[1];
|
||||
greeter_fd_in = pipe2[0];
|
||||
|
||||
@@ -4858,7 +4859,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;
|
||||
--- gdm-2.19.3/daemon/gdm-socket-protocol.h~ 2007-06-17 13:07:39.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/gdm-socket-protocol.h 2007-07-25 14:47:23.000000000 -0400
|
||||
@@ -155,6 +155,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' */
|
||||
--- gdm-2.19.3/daemon/gdm-daemon-config-keys.h~ 2007-06-17 13:07:38.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/gdm-daemon-config-keys.h 2007-07-25 14:46:49.000000000 -0400
|
||||
@@ -226,6 +226,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"
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
--- gdm-2.19.3/daemon/slave.c~ 2007-07-25 15:25:09.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/slave.c 2007-07-25 15:26:22.000000000 -0400
|
||||
@@ -4881,7 +4881,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
|
||||
--- gdm-2.19.3/daemon/gdm.c~ 2007-07-25 15:40:40.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/gdm.c 2007-07-25 15:41:39.000000000 -0400
|
||||
@@ -4344,6 +4344,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);
|
||||
|
@ -1,83 +1,7 @@
|
||||
--- gdm-2.19.3/daemon/slave.c~ 2007-07-25 15:00:30.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/slave.c 2007-07-25 15:05:46.000000000 -0400
|
||||
@@ -116,6 +116,8 @@ static gboolean do_configurator =
|
||||
static gboolean do_cancel = FALSE; /* If this is true, go back to
|
||||
username entry & unselect
|
||||
face browser (if present) */
|
||||
+static gboolean do_token_login = FALSE; /* if true, auth with smart
|
||||
+ cards */
|
||||
static gboolean do_restart_greeter = FALSE; /* If this is true, whack the
|
||||
greeter and try again */
|
||||
static gboolean restart_greeter_now = FALSE; /* Restart_greeter_when the
|
||||
@@ -2081,11 +2083,14 @@ play_login_sound (const char *sound_file
|
||||
static void
|
||||
gdm_slave_wait_for_login (void)
|
||||
{
|
||||
+ gboolean verify_token;
|
||||
const char *successsound;
|
||||
char *username;
|
||||
g_free (login);
|
||||
login = NULL;
|
||||
|
||||
+ do_token_login = FALSE;
|
||||
+
|
||||
/* Chat with greeter */
|
||||
while (login == NULL) {
|
||||
/* init to a sane value */
|
||||
@@ -2109,11 +2114,16 @@ gdm_slave_wait_for_login (void)
|
||||
gdm_debug ("gdm_slave_wait_for_login: In loop");
|
||||
username = d->preset_user;
|
||||
d->preset_user = NULL;
|
||||
+
|
||||
+ verify_token = do_token_login;
|
||||
+ do_token_login = FALSE;
|
||||
+
|
||||
login = gdm_verify_user (d /* the display */,
|
||||
- username /* username */,
|
||||
+ verify_token ? "" : username /* username */,
|
||||
d->name /* display name */,
|
||||
d->attached /* display attached? */,
|
||||
- TRUE /* allow retry */);
|
||||
+ TRUE /* allow retry */,
|
||||
+ verify_token);
|
||||
g_free (username);
|
||||
|
||||
gdm_debug ("gdm_slave_wait_for_login: end verify for '%s'",
|
||||
@@ -2162,7 +2172,7 @@ gdm_slave_wait_for_login (void)
|
||||
pwent->pw_name,
|
||||
d->name,
|
||||
d->attached,
|
||||
- FALSE);
|
||||
+ FALSE, FALSE);
|
||||
gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
|
||||
|
||||
/* Clear message */
|
||||
@@ -5019,6 +5029,11 @@ gdm_slave_handle_usr2_message (void)
|
||||
gdm_fdprintf (slave_fd_out, "%c%c%c\n",
|
||||
STX, BEL, GDM_INTERRUPT_CANCEL);
|
||||
}
|
||||
+ } else if (strcmp (&s[1], GDM_NOTIFY_TOKEN_LOGIN) == 0) {
|
||||
+ if (!d->logged_in && d->attached) {
|
||||
+ gdm_fdprintf (slave_fd_out, "%c%c%c\n",
|
||||
+ STX, BEL, GDM_INTERRUPT_TOKEN_LOGIN);
|
||||
+ }
|
||||
}
|
||||
} else if (s[0] == GDM_SLAVE_NOTIFY_RESPONSE) {
|
||||
gdm_got_ack = TRUE;
|
||||
@@ -5219,6 +5234,10 @@ check_for_interruption (const char *msg)
|
||||
do_restart_greeter = TRUE;
|
||||
}
|
||||
break;
|
||||
+ case GDM_INTERRUPT_TOKEN_LOGIN:
|
||||
+ do_token_login = TRUE;
|
||||
+ do_cancel = TRUE;
|
||||
+ break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
--- gdm-2.19.3/daemon/gdm.c~ 2007-07-25 15:00:37.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/gdm.c 2007-07-25 15:08:09.000000000 -0400
|
||||
@@ -4359,7 +4359,7 @@ gdm_handle_user_message (GdmConnection *
|
||||
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-08-03 20:26:08.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/gdm.c 2007-08-03 20:24:56.000000000 -0500
|
||||
@@ -4389,7 +4389,7 @@ gdm_handle_user_message (GdmConnection *
|
||||
}
|
||||
|
||||
static void
|
||||
@ -86,7 +10,7 @@
|
||||
{
|
||||
GSList *li;
|
||||
|
||||
@@ -4367,11 +4367,23 @@ gdm_reset_local_displays (void)
|
||||
@@ -4397,11 +4397,23 @@ gdm_reset_local_displays (void)
|
||||
GdmDisplay *d = li->data;
|
||||
|
||||
if (d->attached)
|
||||
@ -111,7 +35,7 @@
|
||||
gdm_watch_for_security_tokens (void)
|
||||
{
|
||||
DBusGConnection *conn;
|
||||
@@ -4392,7 +4404,7 @@ gdm_watch_for_security_tokens (void)
|
||||
@@ -4422,7 +4434,7 @@ gdm_watch_for_security_tokens (void)
|
||||
MONITOR_INTERFACE);
|
||||
|
||||
dbus_g_proxy_add_signal (monitor, "SecurityTokenInserted", G_TYPE_STRING, G_TYPE_INVALID);
|
||||
@ -120,96 +44,9 @@
|
||||
|
||||
dbus_g_proxy_add_signal (monitor, "SecurityTokenRemoved", G_TYPE_STRING, G_TYPE_INVALID);
|
||||
dbus_g_proxy_connect_signal (monitor, "SecurityTokenRemoved", G_CALLBACK (gdm_reset_local_displays), NULL, NULL);
|
||||
--- gdm-2.19.3/daemon/gdm-socket-protocol.h~ 2007-07-25 15:00:30.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/gdm-socket-protocol.h 2007-07-25 15:09:02.000000000 -0400
|
||||
@@ -75,6 +75,7 @@
|
||||
#define GDM_INTERRUPT_CUSTOM_CMD 'M'
|
||||
#define GDM_INTERRUPT_CANCEL 'X'
|
||||
#define GDM_INTERRUPT_SELECT_LANG 'O'
|
||||
+#define GDM_INTERRUPT_TOKEN_LOGIN '$'
|
||||
|
||||
/* List delimiter for config file lists */
|
||||
#define GDM_DELIMITER_MODULES ":"
|
||||
--- gdm-2.19.3/daemon/gdm-daemon-config-keys.h~ 2007-07-25 15:00:30.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/gdm-daemon-config-keys.h 2007-07-25 15:10:22.000000000 -0400
|
||||
@@ -105,6 +105,7 @@ G_BEGIN_DECLS
|
||||
#define GDM_KEY_RETRY_DELAY "security/RetryDelay=1"
|
||||
#define GDM_KEY_DISALLOW_TCP "security/DisallowTCP=true"
|
||||
#define GDM_KEY_PAM_STACK "security/PamStack=gdm"
|
||||
+#define GDM_KEY_PAM_STACK_SMARTCARD "security/SmartCardPamStack=gdm-smartcard"
|
||||
#define GDM_KEY_NEVER_PLACE_COOKIES_ON_NFS "security/NeverPlaceCookiesOnNFS=true"
|
||||
#define GDM_KEY_PASSWORD_REQUIRED "security/PasswordRequired=false"
|
||||
#define GDM_KEY_XDMCP "xdmcp/Enable=false"
|
||||
@@ -227,6 +228,7 @@ G_BEGIN_DECLS
|
||||
#define GDM_NOTIFY_GO "GO"
|
||||
#define GDM_NOTIFY_TWIDDLE_POINTER "TWIDDLE_POINTER"
|
||||
#define GDM_NOTIFY_RESET "RESET"
|
||||
+#define GDM_NOTIFY_TOKEN_LOGIN "TOKEN_LOGIN"
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
--- gdm-2.19.3/daemon/verify.h~ 2007-06-17 13:07:39.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/verify.h 2007-07-25 15:12:17.000000000 -0400
|
||||
@@ -28,7 +28,8 @@ gchar *gdm_verify_user (GdmDisplay *d
|
||||
const char *username,
|
||||
const gchar *display,
|
||||
gboolean local,
|
||||
- gboolean allow_retry);
|
||||
+ gboolean allow_retry,
|
||||
+ gboolean token);
|
||||
void gdm_verify_cleanup (GdmDisplay *d);
|
||||
void gdm_verify_check (void);
|
||||
void gdm_verify_select_user (const char *user);
|
||||
--- gdm-2.19.3/daemon/verify-pam.c~ 2007-06-17 13:07:38.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/verify-pam.c 2007-07-25 15:11:57.000000000 -0400
|
||||
@@ -866,7 +866,8 @@ gdm_verify_user (GdmDisplay *d,
|
||||
const char *username,
|
||||
const gchar *display,
|
||||
gboolean local,
|
||||
- gboolean allow_retry)
|
||||
+ gboolean allow_retry,
|
||||
+ gboolean verify_token)
|
||||
{
|
||||
gint pamerr = 0;
|
||||
struct passwd *pwent = NULL;
|
||||
@@ -926,7 +927,10 @@ gdm_verify_user (GdmDisplay *d,
|
||||
* PAM Stacks, in case one display should use a different
|
||||
* authentication mechanism than another display.
|
||||
*/
|
||||
- pam_stack = gdm_daemon_config_get_value_string_per_display (GDM_KEY_PAM_STACK, (char *)display);
|
||||
+ pam_stack = gdm_daemon_config_get_value_string_per_display (verify_token
|
||||
+ ? GDM_KEY_PAM_STACK_SMARTCARD
|
||||
+ : GDM_KEY_PAM_STACK,
|
||||
+ (char *)display);
|
||||
|
||||
if ( ! create_pamh (d, pam_stack, login, &pamc, display, &pamerr)) {
|
||||
if (started_timer)
|
||||
--- gdm-2.19.3/daemon/verify-shadow.c~ 2007-06-17 13:07:38.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/verify-shadow.c 2007-07-25 15:12:30.000000000 -0400
|
||||
@@ -106,7 +106,8 @@ gdm_verify_user (GdmDisplay *d,
|
||||
const char *username,
|
||||
const gchar *display,
|
||||
gboolean local,
|
||||
- gboolean allow_retry)
|
||||
+ gboolean allow_retry,
|
||||
+ gboolean token)
|
||||
{
|
||||
gchar *login, *passwd, *ppasswd;
|
||||
struct passwd *pwent;
|
||||
--- gdm-2.19.3/daemon/verify-crypt.c~ 2007-06-17 13:07:39.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/verify-crypt.c 2007-07-25 15:12:53.000000000 -0400
|
||||
@@ -105,7 +105,8 @@ gdm_verify_user (GdmDisplay *d,
|
||||
const char *username,
|
||||
const gchar *display,
|
||||
gboolean local,
|
||||
- gboolean allow_retry)
|
||||
+ gboolean allow_retry,
|
||||
+ gboolean token)
|
||||
{
|
||||
gchar *login, *passwd, *ppasswd;
|
||||
struct passwd *pwent;
|
||||
--- gdm-2.19.3/daemon/gdm-daemon-config.c~ 2007-06-17 13:07:39.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/gdm-daemon-config.c 2007-07-25 15:17:46.000000000 -0400
|
||||
diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config.c gdm-2.19.5-post/daemon/gdm-daemon-config.c
|
||||
--- gdm-2.19.5-pre/daemon/gdm-daemon-config.c 2007-07-30 13:51:14.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/gdm-daemon-config.c 2007-08-03 20:24:56.000000000 -0500
|
||||
@@ -552,7 +552,8 @@ gdm_daemon_config_key_to_string_per_disp
|
||||
|
||||
if (strcmp (group, "greeter") == 0 ||
|
||||
@ -220,9 +57,10 @@
|
||||
ret = gdm_daemon_config_key_to_string (file, keystring, retval);
|
||||
}
|
||||
|
||||
--- gdm-2.19.3/daemon/gdm-daemon-config-entries.h~ 2007-06-17 13:07:38.000000000 -0400
|
||||
+++ gdm-2.19.3/daemon/gdm-daemon-config-entries.h 2007-07-25 17:12:25.000000000 -0400
|
||||
@@ -208,6 +208,7 @@ typedef enum {
|
||||
diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-entries.h gdm-2.19.5-post/daemon/gdm-daemon-config-entries.h
|
||||
--- gdm-2.19.5-pre/daemon/gdm-daemon-config-entries.h 2007-08-03 20:26:08.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-entries.h 2007-08-03 20:24:56.000000000 -0500
|
||||
@@ -212,6 +212,7 @@ typedef enum {
|
||||
GDM_ID_SYSTEM_COMMANDS_IN_MENU,
|
||||
GDM_ID_ALLOW_LOGOUT_ACTIONS,
|
||||
GDM_ID_RBAC_SYSTEM_COMMAND_KEYS,
|
||||
@ -230,7 +68,7 @@
|
||||
GDK_ID_LAST
|
||||
} GdmConfigKey;
|
||||
|
||||
@@ -363,6 +364,7 @@ static const GdmConfigEntry gdm_daemon_c
|
||||
@@ -368,6 +369,7 @@ static const GdmConfigEntry gdm_daemon_c
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "RetryDelay", GDM_CONFIG_VALUE_INT, "1", GDM_ID_RETRY_DELAY },
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "DisallowTCP", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_DISALLOW_TCP },
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "PamStack", GDM_CONFIG_VALUE_STRING, "gdm", GDM_ID_PAM_STACK },
|
||||
@ -238,3 +76,184 @@
|
||||
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "NeverPlaceCookiesOnNFS", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_NEVER_PLACE_COOKIES_ON_NFS },
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "PasswordRequired", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_PASSWORD_REQUIRED },
|
||||
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:26:08.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-03 20:24:56.000000000 -0500
|
||||
@@ -106,6 +106,7 @@ G_BEGIN_DECLS
|
||||
#define GDM_KEY_RETRY_DELAY "security/RetryDelay=1"
|
||||
#define GDM_KEY_DISALLOW_TCP "security/DisallowTCP=true"
|
||||
#define GDM_KEY_PAM_STACK "security/PamStack=gdm"
|
||||
+#define GDM_KEY_PAM_STACK_SMARTCARD "security/SmartCardPamStack=gdm-smartcard"
|
||||
#define GDM_KEY_NEVER_PLACE_COOKIES_ON_NFS "security/NeverPlaceCookiesOnNFS=true"
|
||||
#define GDM_KEY_PASSWORD_REQUIRED "security/PasswordRequired=false"
|
||||
#define GDM_KEY_UTMP_LINE_ATTACHED "security/UtmpLineAttached="
|
||||
@@ -234,6 +235,7 @@ G_BEGIN_DECLS
|
||||
#define GDM_NOTIFY_GO "GO"
|
||||
#define GDM_NOTIFY_TWIDDLE_POINTER "TWIDDLE_POINTER"
|
||||
#define GDM_NOTIFY_RESET "RESET"
|
||||
+#define GDM_NOTIFY_TOKEN_LOGIN "TOKEN_LOGIN"
|
||||
|
||||
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:26:08.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/gdm-socket-protocol.h 2007-08-03 20:24:56.000000000 -0500
|
||||
@@ -77,6 +77,7 @@
|
||||
#define GDM_INTERRUPT_CUSTOM_CMD 'M'
|
||||
#define GDM_INTERRUPT_CANCEL 'X'
|
||||
#define GDM_INTERRUPT_SELECT_LANG 'O'
|
||||
+#define GDM_INTERRUPT_TOKEN_LOGIN '$'
|
||||
|
||||
/* List delimiter for config file lists */
|
||||
#define GDM_DELIMITER_MODULES ":"
|
||||
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:26:08.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/slave.c 2007-08-03 20:32:16.000000000 -0500
|
||||
@@ -134,6 +134,8 @@ static gboolean do_system_reboot =
|
||||
static gboolean do_cancel = FALSE; /* If this is true, go back to
|
||||
username entry & unselect
|
||||
face browser (if present) */
|
||||
+static gboolean do_token_login = FALSE; /* if true, auth with smart
|
||||
+ cards */
|
||||
static gboolean do_restart_greeter = FALSE; /* If this is true, whack the
|
||||
greeter and try again */
|
||||
static gboolean restart_greeter_now = FALSE; /* Restart_greeter_when the
|
||||
@@ -2091,6 +2093,7 @@ get_root_auth (const gchar *message, str
|
||||
gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, (*pwent)->pw_name);
|
||||
login_user = gdm_verify_user (d,
|
||||
(*pwent)->pw_name,
|
||||
+ FALSE,
|
||||
FALSE);
|
||||
gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
|
||||
|
||||
@@ -2160,11 +2163,14 @@ get_root_auth (const gchar *message, str
|
||||
static void
|
||||
gdm_slave_wait_for_login (void)
|
||||
{
|
||||
+ gboolean verify_token;
|
||||
const char *successsound;
|
||||
char *username;
|
||||
g_free (login_user);
|
||||
login_user = NULL;
|
||||
|
||||
+ do_token_login = FALSE;
|
||||
+
|
||||
/* Chat with greeter */
|
||||
while (login_user == NULL) {
|
||||
/* init to a sane value */
|
||||
@@ -2188,9 +2194,14 @@ gdm_slave_wait_for_login (void)
|
||||
gdm_debug ("gdm_slave_wait_for_login: In loop");
|
||||
username = d->preset_user;
|
||||
d->preset_user = NULL;
|
||||
+
|
||||
+ verify_token = do_token_login;
|
||||
+ do_token_login = FALSE;
|
||||
+
|
||||
login_user = gdm_verify_user (d /* the display */,
|
||||
- username /* username */,
|
||||
- TRUE /* allow retry */);
|
||||
+ verify_token ? "" : username /* username */,
|
||||
+ TRUE /* allow retry */,
|
||||
+ verify_token);
|
||||
g_free (username);
|
||||
|
||||
gdm_debug ("gdm_slave_wait_for_login: end verify for '%s'",
|
||||
@@ -5384,6 +5395,11 @@ gdm_slave_handle_usr2_message (void)
|
||||
gdm_fdprintf (slave_fd_out, "%c%c%c\n",
|
||||
STX, BEL, GDM_INTERRUPT_CANCEL);
|
||||
}
|
||||
+ } else if (strcmp (&s[1], GDM_NOTIFY_TOKEN_LOGIN) == 0) {
|
||||
+ if (!d->logged_in && d->attached) {
|
||||
+ gdm_fdprintf (slave_fd_out, "%c%c%c\n",
|
||||
+ STX, BEL, GDM_INTERRUPT_TOKEN_LOGIN);
|
||||
+ }
|
||||
}
|
||||
} else if (s[0] == GDM_SLAVE_NOTIFY_RESPONSE) {
|
||||
gdm_got_ack = TRUE;
|
||||
@@ -5592,6 +5608,10 @@ check_for_interruption (const char *msg)
|
||||
do_restart_greeter = TRUE;
|
||||
}
|
||||
break;
|
||||
+ case GDM_INTERRUPT_TOKEN_LOGIN:
|
||||
+ do_token_login = TRUE;
|
||||
+ do_cancel = TRUE;
|
||||
+ break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
Only in gdm-2.19.5-post/daemon: slave.c~
|
||||
Only in gdm-2.19.5-post/daemon: slave.c.rej
|
||||
diff -upr gdm-2.19.5-pre/daemon/verify-crypt.c gdm-2.19.5-post/daemon/verify-crypt.c
|
||||
--- gdm-2.19.5-pre/daemon/verify-crypt.c 2007-07-30 13:51:14.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/verify-crypt.c 2007-08-03 20:29:12.000000000 -0500
|
||||
@@ -101,7 +101,8 @@ print_cant_auth_errbox (void)
|
||||
gchar *
|
||||
gdm_verify_user (GdmDisplay *d,
|
||||
const char *username,
|
||||
- gboolean allow_retry)
|
||||
+ gboolean allow_retry,
|
||||
+ gboolean token)
|
||||
{
|
||||
gchar *login, *passwd, *ppasswd;
|
||||
struct passwd *pwent;
|
||||
Only in gdm-2.19.5-post/daemon: verify-crypt.c~
|
||||
Only in gdm-2.19.5-post/daemon: verify-crypt.c.rej
|
||||
diff -upr gdm-2.19.5-pre/daemon/verify.h gdm-2.19.5-post/daemon/verify.h
|
||||
--- gdm-2.19.5-pre/daemon/verify.h 2007-07-30 13:51:14.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/verify.h 2007-08-03 20:34:40.000000000 -0500
|
||||
@@ -26,7 +26,8 @@
|
||||
* the timed login timer */
|
||||
gchar *gdm_verify_user (GdmDisplay *d,
|
||||
const char *username,
|
||||
- gboolean allow_retry);
|
||||
+ gboolean allow_retry,
|
||||
+ gboolean token);
|
||||
void gdm_verify_cleanup (GdmDisplay *d);
|
||||
void gdm_verify_check (void);
|
||||
void gdm_verify_select_user (const char *user);
|
||||
Only in gdm-2.19.5-post/daemon: verify.h~
|
||||
Only in gdm-2.19.5-post/daemon: verify.h.rej
|
||||
diff -upr gdm-2.19.5-pre/daemon/verify-pam.c gdm-2.19.5-post/daemon/verify-pam.c
|
||||
--- gdm-2.19.5-pre/daemon/verify-pam.c 2007-08-03 20:26:08.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/verify-pam.c 2007-08-03 20:33:44.000000000 -0500
|
||||
@@ -887,7 +887,8 @@ log_to_audit_system(const char *login,
|
||||
gchar *
|
||||
gdm_verify_user (GdmDisplay *d,
|
||||
const char *username,
|
||||
- gboolean allow_retry)
|
||||
+ gboolean allow_retry,
|
||||
+ gboolean verify_token)
|
||||
{
|
||||
gint pamerr = 0;
|
||||
struct passwd *pwent = NULL;
|
||||
@@ -947,8 +948,10 @@ gdm_verify_user (GdmDisplay *d,
|
||||
* PAM Stacks, in case one display should use a different
|
||||
* authentication mechanism than another display.
|
||||
*/
|
||||
- pam_stack = gdm_daemon_config_get_value_string_per_display (GDM_KEY_PAM_STACK,
|
||||
- (char *)d->name);
|
||||
+ pam_stack = gdm_daemon_config_get_value_string_per_display (verify_token ?
|
||||
+ GDM_KEY_PAM_STACK_SMARTCARD :
|
||||
+ GDM_KEY_PAM_STACK,
|
||||
+ (char *)d->name);
|
||||
|
||||
if ( ! create_pamh (d, pam_stack, login, &pamc, d->name, &pamerr)) {
|
||||
if (started_timer)
|
||||
Only in gdm-2.19.5-post/daemon: verify-pam.c~
|
||||
Only in gdm-2.19.5-post/daemon: verify-pam.c.rej
|
||||
diff -upr gdm-2.19.5-pre/daemon/verify-shadow.c gdm-2.19.5-post/daemon/verify-shadow.c
|
||||
--- gdm-2.19.5-pre/daemon/verify-shadow.c 2007-07-30 13:51:14.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/verify-shadow.c 2007-08-03 20:27:55.000000000 -0500
|
||||
@@ -102,7 +102,8 @@ print_cant_auth_errbox (void)
|
||||
gchar *
|
||||
gdm_verify_user (GdmDisplay *d,
|
||||
const char *username,
|
||||
- gboolean allow_retry)
|
||||
+ gboolean allow_retry,
|
||||
+ gboolean token)
|
||||
{
|
||||
gchar *login, *passwd, *ppasswd;
|
||||
struct passwd *pwent;
|
||||
Only in gdm-2.19.5-post/daemon: verify-shadow.c~
|
||||
Only in gdm-2.19.5-post/daemon: verify-shadow.c.rej
|
||||
Only in gdm-2.19.5-post: error.19199
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- gui/gdmcommon.c.orig 2007-07-17 09:59:20.000000000 +0200
|
||||
+++ gui/gdmcommon.c 2007-07-17 09:59:54.000000000 +0200
|
||||
@@ -399,7 +399,7 @@ gdm_common_text_to_escaped_utf8 (const c
|
||||
while ((*p != '\0') &&
|
||||
!g_utf8_validate (p, -1, &q)) {
|
||||
p = (gchar *) q;
|
||||
- p = '?';
|
||||
+ *p = '?';
|
||||
p++;
|
||||
}
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fda3335079e0a2da0953c61fa515f89393d35a1567b0fb7c988d0aaf02faed1a
|
||||
size 3555139
|
3
gdm-2.19.5.tar.bz2
Normal file
3
gdm-2.19.5.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:13cbc8aaea85a549d1a65ff5a0a569bf927bd52b91725b8e11c01cd17b82bd68
|
||||
size 3663736
|
@ -5,9 +5,9 @@
|
||||
g_unsetenv ("MAIL"); /* Unset $MAIL for broken shells */
|
||||
|
||||
+ if (d->hostname != NULL && d->hostname [0] != '\0') {
|
||||
+ ve_setenv ("XAUTHLOCALHOSTNAME", d->hostname, TRUE);
|
||||
+ g_setenv ("XAUTHLOCALHOSTNAME", d->hostname, TRUE);
|
||||
+ } else {
|
||||
+ ve_setenv ("XAUTHLOCALHOSTNAME", "localhost.localdomain", TRUE);
|
||||
+ g_setenv ("XAUTHLOCALHOSTNAME", "localhost.localdomain", TRUE);
|
||||
+ }
|
||||
+
|
||||
if (d->type == TYPE_STATIC) {
|
||||
|
@ -1,16 +1,15 @@
|
||||
Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter.c
|
||||
+++ gdm-2.17.7/gui/greeter/greeter.c
|
||||
@@ -1163,6 +1163,7 @@ main (int argc, char *argv[])
|
||||
guint sid;
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter.c gdm-2.19.3-post/gui/greeter/greeter.c
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter.c 2007-06-17 13:07:26.000000000 -0400
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter.c 2007-07-31 21:19:51.000000000 -0400
|
||||
@@ -1239,6 +1239,7 @@ main (int argc, char *argv[])
|
||||
int r;
|
||||
gint i;
|
||||
gchar *key_string = NULL;
|
||||
+ GdkColor black = { 0, 0, 0, 0 };
|
||||
|
||||
if (g_getenv ("DOING_GDM_DEVELOPMENT") != NULL)
|
||||
DOING_GDM_DEVELOPMENT = TRUE;
|
||||
@@ -1271,6 +1272,7 @@ main (int argc, char *argv[])
|
||||
@@ -1348,6 +1349,7 @@ main (int argc, char *argv[])
|
||||
}
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
@ -18,7 +17,7 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
|
||||
if G_UNLIKELY (DOING_GDM_DEVELOPMENT) {
|
||||
g_signal_connect (G_OBJECT (window), "key_press_event",
|
||||
@@ -1287,6 +1289,7 @@ main (int argc, char *argv[])
|
||||
@@ -1364,6 +1366,7 @@ main (int argc, char *argv[])
|
||||
gtk_window_set_default_size (GTK_WINDOW (window),
|
||||
gdm_wm_screen.width,
|
||||
gdm_wm_screen.height);
|
||||
@ -26,10 +25,9 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
gtk_container_add (GTK_CONTAINER (window), canvas);
|
||||
|
||||
/*
|
||||
Index: gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter_canvas_item.c
|
||||
+++ gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter_canvas_item.c gdm-2.19.3-post/gui/greeter/greeter_canvas_item.c
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter_canvas_item.c 2007-06-17 13:07:26.000000000 -0400
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter_canvas_item.c 2007-07-31 21:18:11.000000000 -0400
|
||||
@@ -24,6 +24,12 @@
|
||||
#include <glib/gi18n.h>
|
||||
#include <librsvg/rsvg.h>
|
||||
@ -43,7 +41,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
#include "gdm.h"
|
||||
#include "gdmcommon.h"
|
||||
#include "gdmconfig.h"
|
||||
@@ -254,6 +260,127 @@ greeter_item_run_button_action_callback
|
||||
@@ -258,6 +264,127 @@ greeter_item_run_button_action_callback
|
||||
gtk_widget_grab_focus (entry);
|
||||
}
|
||||
|
||||
@ -171,7 +169,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
void
|
||||
greeter_item_create_canvas_item (GreeterItemInfo *item)
|
||||
{
|
||||
@@ -351,12 +478,53 @@ greeter_item_create_canvas_item (Greeter
|
||||
@@ -355,12 +482,53 @@ greeter_item_create_canvas_item (Greeter
|
||||
}
|
||||
|
||||
if (item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL] != NULL)
|
||||
|
@ -1,77 +1,41 @@
|
||||
Index: gdm-2.17.7/config/gdm.conf.in
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/config/gdm.conf.in
|
||||
+++ gdm-2.17.7/config/gdm.conf.in
|
||||
@@ -499,6 +499,9 @@ SoundOnLogin=false
|
||||
# list of libraries, one per line, and load each library in the file.
|
||||
PreFetchProgram=@GDMPREFETCHCMD@
|
||||
|
||||
+# Set to true to show the domain login GUI elements.
|
||||
+#ShowDomain=false
|
||||
+
|
||||
# The chooser is what's displayed when a user wants an indirect XDMCP session,
|
||||
# or selects Run XDMCP chooser from the system menu
|
||||
[chooser]
|
||||
Index: gdm-2.17.7/configure.ac
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/configure.ac
|
||||
+++ gdm-2.17.7/configure.ac
|
||||
@@ -875,6 +875,9 @@ AC_SUBST(GDMPREFETCH)
|
||||
Only in gdm-2.19.3-post: config.h
|
||||
diff -upr gdm-2.19.3-pre/configure.ac gdm-2.19.3-post/configure.ac
|
||||
--- gdm-2.19.3-pre/configure.ac 2007-06-17 12:08:03.000000000 -0500
|
||||
+++ gdm-2.19.3-post/configure.ac 2007-08-02 21:45:37.000000000 -0500
|
||||
@@ -887,6 +887,10 @@ AC_SUBST(GDMPREFETCH)
|
||||
AC_SUBST(GDMPREFETCHLIST)
|
||||
AC_SUBST(GDMPREFETCHCMD)
|
||||
|
||||
+GDM_SCRATCH_DIR="${localstatedir}/gdm"
|
||||
+AC_DEFINE_UNQUOTED(GDM_SCRATCH_DIR, "$GDM_SCRATCH_DIR", [GDM scratch dir])
|
||||
+AC_SUBST(GDM_SCRATCH_DIR)
|
||||
+
|
||||
AC_ARG_ENABLE(secureremote,
|
||||
[ --enable-secureremote=[yes/no] Enable to offer a secure X connection through ssh [default=no]],,
|
||||
enable_secureremote=no)
|
||||
Index: gdm-2.17.7/daemon/gdmconfig.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/daemon/gdmconfig.c
|
||||
+++ gdm-2.17.7/daemon/gdmconfig.c
|
||||
@@ -233,6 +233,7 @@ static gint GdmFlexiReapDelayMinutes;
|
||||
static gint GdmBackgroundProgramInitialDelay = 30;
|
||||
static gint GdmBackgroundProgramRestartDelay = 30;
|
||||
|
||||
+static gboolean GdmShowDomain;
|
||||
static gboolean GdmAllowGtkThemeChange;
|
||||
static gboolean GdmTitleBar;
|
||||
static gboolean GdmIncludeAll;
|
||||
@@ -353,6 +354,7 @@ gdm_config_init (void)
|
||||
realkey_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
|
||||
/* boolean values */
|
||||
+ gdm_config_add_hash (GDM_KEY_SHOW_DOMAIN, &GdmShowDomain, &bool_type);
|
||||
gdm_config_add_hash (GDM_KEY_ALLOW_REMOTE_ROOT, &GdmAllowRemoteRoot, &bool_type);
|
||||
gdm_config_add_hash (GDM_KEY_ALLOW_ROOT, &GdmAllowRoot, &bool_type);
|
||||
gdm_config_add_hash (GDM_KEY_ALLOW_REMOTE_AUTOLOGIN,
|
||||
Index: gdm-2.17.7/daemon/gdm.h
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/daemon/gdm.h
|
||||
+++ gdm-2.17.7/daemon/gdm.h
|
||||
@@ -393,6 +393,8 @@ enum {
|
||||
diff -upr gdm-2.19.3-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.3-post/daemon/gdm-daemon-config-keys.h
|
||||
--- gdm-2.19.3-pre/daemon/gdm-daemon-config-keys.h 2007-06-17 12:07:38.000000000 -0500
|
||||
+++ gdm-2.19.3-post/daemon/gdm-daemon-config-keys.h 2007-08-02 20:59:53.000000000 -0500
|
||||
@@ -172,6 +172,7 @@ G_BEGIN_DECLS
|
||||
#define GDM_KEY_GRAPHICAL_THEME_RAND "greeter/GraphicalThemeRand=false"
|
||||
#define GDM_KEY_GRAPHICAL_THEME_DIR "greeter/GraphicalThemeDir=" DATADIR "/gdm/themes/"
|
||||
#define GDM_KEY_GRAPHICAL_THEMED_COLOR "greeter/GraphicalThemedColor=#76848F"
|
||||
|
||||
+#define GDM_KEY_SHOW_DOMAIN "greeter/ShowDomain=false"
|
||||
+
|
||||
#define GDM_KEY_INFO_MSG_FILE "greeter/InfoMsgFile="
|
||||
#define GDM_KEY_INFO_MSG_FONT "greeter/InfoMsgFont="
|
||||
|
||||
@@ -764,6 +766,7 @@ void gdm_final_cleanup (void);
|
||||
#define GDM_KEY_PRE_FETCH_PROGRAM "greeter/PreFetchProgram="
|
||||
@@ -214,6 +215,7 @@ G_BEGIN_DECLS
|
||||
#define GDM_NOTIFY_TIMED_LOGIN_DELAY "TimedLoginDelay" /* <seconds> */
|
||||
#define GDM_NOTIFY_TIMED_LOGIN_ENABLE "TimedLoginEnable" /* <true/false as int> */
|
||||
#define GDM_NOTIFY_DISALLOW_TCP "DisallowTCP" /* <true/false as int> */
|
||||
+#define GDM_NOTIFY_SHOW_DOMAIN "ShowDomain" /* <trye/false as int> */
|
||||
+#define GDM_NOTIFY_SHOW_DOMAIN "ShowDomain" /* <true/false as int> */
|
||||
#define GDM_NOTIFY_SOUND_ON_LOGIN_FILE "SoundOnLoginFile" /* <sound file> */
|
||||
#define GDM_NOTIFY_SOUND_ON_LOGIN_SUCCESS_FILE "SoundOnLoginSuccessFile" /* <sound file> */
|
||||
#define GDM_NOTIFY_SOUND_ON_LOGIN_FAILURE_FILE "SoundOnLoginFailureFile" /* <sound file> */
|
||||
Index: gdm-2.17.7/daemon/verify-pam.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/daemon/verify-pam.c
|
||||
+++ gdm-2.17.7/daemon/verify-pam.c
|
||||
@@ -60,6 +60,8 @@ static unsigned auth_retries;
|
||||
diff -upr gdm-2.19.3-pre/daemon/verify-pam.c gdm-2.19.3-post/daemon/verify-pam.c
|
||||
--- gdm-2.19.3-pre/daemon/verify-pam.c 2007-06-17 12:07:38.000000000 -0500
|
||||
+++ gdm-2.19.3-post/daemon/verify-pam.c 2007-08-02 20:59:53.000000000 -0500
|
||||
@@ -77,6 +77,8 @@ static unsigned auth_retries;
|
||||
|
||||
/* this is another hack */
|
||||
static gboolean did_we_ask_for_password = FALSE;
|
||||
@ -80,7 +44,7 @@ Index: gdm-2.17.7/daemon/verify-pam.c
|
||||
|
||||
static char *selected_user = NULL;
|
||||
|
||||
@@ -449,6 +451,7 @@ perhaps_translate_message (const char *m
|
||||
@@ -463,6 +465,7 @@ perhaps_translate_message (const char *m
|
||||
g_hash_table_insert (hash, "You are required to change your password immediately (password aged)", _("You are required to change your password immediately (password aged)"));
|
||||
g_hash_table_insert (hash, "You are required to change your password immediately (root enforced)", _("You are required to change your password immediately (root enforced)"));
|
||||
g_hash_table_insert (hash, "Your account has expired; please contact your system administrator", _("Your account has expired; please contact your system administrator"));
|
||||
@ -88,67 +52,120 @@ Index: gdm-2.17.7/daemon/verify-pam.c
|
||||
g_hash_table_insert (hash, "No password supplied", _("No password supplied"));
|
||||
g_hash_table_insert (hash, "Password unchanged", _("Password unchanged"));
|
||||
g_hash_table_insert (hash, "Can not get username", _("Can not get username"));
|
||||
@@ -517,8 +520,9 @@ gdm_verify_pam_conv (int num_msg, struct
|
||||
openlog ("gdm", LOG_PID, LOG_DAEMON);
|
||||
|
||||
for (replies = 0; replies < num_msg; replies++) {
|
||||
- const char *m = (*msg)[replies].msg;
|
||||
- m = perhaps_translate_message (m);
|
||||
+ const char *m_untranslated = (*msg)[replies].msg;
|
||||
+ const char *m;
|
||||
+ m = perhaps_translate_message (m_untranslated);
|
||||
|
||||
switch ((*msg)[replies].msg_style) {
|
||||
|
||||
@@ -574,6 +578,12 @@ gdm_verify_pam_conv (int num_msg, struct
|
||||
|
||||
case PAM_ERROR_MSG:
|
||||
/* PAM sent a message that should displayed to the user */
|
||||
+
|
||||
+ if (strstr (m_untranslated, "account is disabled"))
|
||||
+ is_account_disabled = TRUE;
|
||||
+ else if (strstr (m_untranslated, "account has expired"))
|
||||
+ is_account_expired = TRUE;
|
||||
+
|
||||
gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
|
||||
reply[replies].resp_retcode = PAM_SUCCESS;
|
||||
reply[replies].resp = NULL;
|
||||
@@ -1180,7 +1190,11 @@ authenticate_again:
|
||||
/* Only give this message if we actually asked for
|
||||
password, otherwise it would be silly to say that
|
||||
the password may have been wrong */
|
||||
- if (did_we_ask_for_password) {
|
||||
+ if (is_account_disabled) {
|
||||
+ basemsg = _("\nYour account has been disabled.");
|
||||
+ } else if (is_account_expired) {
|
||||
+ basemsg = _("\nYour account has expired.");
|
||||
+ } else if (did_we_ask_for_password) {
|
||||
basemsg = _("\nIncorrect username or password. "
|
||||
"Letters must be typed in the correct "
|
||||
"case.");
|
||||
@@ -1189,7 +1203,7 @@ authenticate_again:
|
||||
"Letters must be typed in the correct "
|
||||
"case.");
|
||||
}
|
||||
- if (is_capslock) {
|
||||
+ if (is_capslock && !is_account_disabled && !is_account_expired) {
|
||||
msg = g_strconcat (basemsg, " ",
|
||||
_("Caps Lock is on."),
|
||||
NULL);
|
||||
@@ -1302,6 +1316,8 @@ gdm_verify_setup_user (GdmDisplay *d, co
|
||||
@@ -531,8 +534,8 @@ gdm_verify_pam_conv (int num_msg, struct
|
||||
gdm_log_init ();
|
||||
|
||||
/* Start authentication session */
|
||||
did_we_ask_for_password = FALSE;
|
||||
+ is_account_disabled = FALSE;
|
||||
+ is_account_expired = FALSE;
|
||||
if ((pamerr = pam_authenticate (pamh, null_tok)) != PAM_SUCCESS) {
|
||||
if (gdm_slave_action_pending ()) {
|
||||
gdm_error (_("Couldn't authenticate user"));
|
||||
Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter.c
|
||||
+++ gdm-2.17.7/gui/greeter/greeter.c
|
||||
@@ -126,6 +126,53 @@ get_random_theme ()
|
||||
for (replies = 0; replies < num_msg; replies++) {
|
||||
- const char *m = (*msg)[replies].msg;
|
||||
- m = perhaps_translate_message (m);
|
||||
+ const char *m_untranslated = (*msg)[replies].msg;
|
||||
+ const char *m = perhaps_translate_message (m_untranslated);
|
||||
|
||||
switch ((*msg)[replies].msg_style) {
|
||||
|
||||
@@ -588,6 +591,12 @@ gdm_verify_pam_conv (int num_msg, struct
|
||||
|
||||
case PAM_ERROR_MSG:
|
||||
/* PAM sent a message that should displayed to the user */
|
||||
+
|
||||
+ if (strstr (m_untranslated, "account is disabled"))
|
||||
+ is_account_disabled = TRUE;
|
||||
+ else if (strstr (m_untranslated, "account has expired"))
|
||||
+ is_account_expired = TRUE;
|
||||
+
|
||||
gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
|
||||
reply[replies].resp_retcode = PAM_SUCCESS;
|
||||
reply[replies].resp = NULL;
|
||||
@@ -1266,7 +1275,11 @@ gdm_verify_user (GdmDisplay *d,
|
||||
/* Only give this message if we actually asked for
|
||||
password, otherwise it would be silly to say that
|
||||
the password may have been wrong */
|
||||
- if (did_we_ask_for_password) {
|
||||
+ if (is_account_disabled) {
|
||||
+ basemsg = _("\nYour account has been disabled.");
|
||||
+ } else if (is_account_expired) {
|
||||
+ basemsg = _("\nYour account has expired.");
|
||||
+ } else if (did_we_ask_for_password) {
|
||||
basemsg = _("\nIncorrect username or password. "
|
||||
"Letters must be typed in the correct "
|
||||
"case.");
|
||||
@@ -1275,7 +1288,7 @@ gdm_verify_user (GdmDisplay *d,
|
||||
"Letters must be typed in the correct "
|
||||
"case.");
|
||||
}
|
||||
- if (is_capslock) {
|
||||
+ if (is_capslock && !is_account_disabled && !is_account_expired) {
|
||||
msg = g_strconcat (basemsg, " ",
|
||||
_("Caps Lock is on."),
|
||||
NULL);
|
||||
@@ -1388,6 +1401,9 @@ gdm_verify_setup_user (GdmDisplay *d, co
|
||||
|
||||
/* Start authentication session */
|
||||
did_we_ask_for_password = FALSE;
|
||||
+ is_account_disabled = FALSE;
|
||||
+ is_account_expired = FALSE;
|
||||
+
|
||||
if ((pamerr = pam_authenticate (pamh, null_tok)) != PAM_SUCCESS) {
|
||||
if (gdm_slave_action_pending ()) {
|
||||
gdm_error (_("Couldn't authenticate user"));
|
||||
diff -upr gdm-2.19.3-pre/gui/gdmchooser.c gdm-2.19.3-post/gui/gdmchooser.c
|
||||
--- gdm-2.19.3-pre/gui/gdmchooser.c 2007-06-17 12:07:28.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/gdmchooser.c 2007-08-02 22:10:08.000000000 -0500
|
||||
@@ -1798,6 +1798,7 @@ gdm_read_config (void)
|
||||
gdm_config_get_bool (GDM_KEY_ALLOW_ADD);
|
||||
gdm_config_get_bool (GDM_KEY_BROADCAST);
|
||||
gdm_config_get_bool (GDM_KEY_MULTICAST);
|
||||
+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
|
||||
|
||||
gdmcomm_comm_bulk_stop ();
|
||||
|
||||
@@ -1827,6 +1828,7 @@ gdm_reread_config (int sig, gpointer dat
|
||||
gdm_config_reload_int (GDM_KEY_SCAN_TIME) ||
|
||||
gdm_config_reload_bool (GDM_KEY_ALLOW_ADD) ||
|
||||
gdm_config_reload_bool (GDM_KEY_BROADCAST) ||
|
||||
+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
|
||||
gdm_config_reload_bool (GDM_KEY_MULTICAST)) {
|
||||
|
||||
if (RUNNING_UNDER_GDM) {
|
||||
Only in gdm-2.19.3-post/gui: gdmchooser.c~
|
||||
diff -upr gdm-2.19.3-pre/gui/gdmlogin.c gdm-2.19.3-post/gui/gdmlogin.c
|
||||
--- gdm-2.19.3-pre/gui/gdmlogin.c 2007-06-17 12:07:27.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/gdmlogin.c 2007-08-02 22:11:09.000000000 -0500
|
||||
@@ -2975,6 +2975,7 @@ gdm_read_config (void)
|
||||
gdm_config_get_bool (GDM_KEY_TIMED_LOGIN_ENABLE);
|
||||
gdm_config_get_bool (GDM_KEY_TITLE_BAR);
|
||||
gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
|
||||
+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
|
||||
|
||||
/* Keys not to include in reread_config */
|
||||
gdm_config_get_bool (GDM_KEY_LOCK_POSITION);
|
||||
@@ -3057,6 +3058,7 @@ gdm_reread_config (int sig, gpointer dat
|
||||
gdm_config_reload_bool (GDM_KEY_SYSTEM_MENU) ||
|
||||
gdm_config_reload_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
|
||||
gdm_config_reload_bool (GDM_KEY_TITLE_BAR) ||
|
||||
+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
|
||||
gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES)) {
|
||||
|
||||
/* Set busy cursor */
|
||||
Only in gdm-2.19.3-post/gui: gdmlogin.c~
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter.c gdm-2.19.3-post/gui/greeter/greeter.c
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter.c 2007-08-02 20:01:45.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter.c 2007-08-02 23:28:11.000000000 -0500
|
||||
@@ -63,6 +63,13 @@
|
||||
#include "greeter_session.h"
|
||||
#include "greeter_system.h"
|
||||
|
||||
+static GtkWidget *hig_dialog_new (GtkWindow *parent,
|
||||
+ GtkDialogFlags flags,
|
||||
+ GtkMessageType type,
|
||||
+ GtkButtonsType buttons,
|
||||
+ const gchar *primary_message,
|
||||
+ const gchar *secondary_message);
|
||||
+
|
||||
gboolean DOING_GDM_DEVELOPMENT = FALSE;
|
||||
|
||||
GtkWidget *window;
|
||||
@@ -153,6 +160,53 @@ get_random_theme ()
|
||||
return theme;
|
||||
}
|
||||
|
||||
@ -167,12 +184,12 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
+ gdm_wm_focus_new_windows (TRUE);
|
||||
+
|
||||
+ tmp = ve_locale_to_utf8 (errdlg_message);
|
||||
+ dlg = ve_hig_dialog_new (NULL /* parent */,
|
||||
+ GTK_DIALOG_MODAL /* flags */,
|
||||
+ GTK_MESSAGE_ERROR,
|
||||
+ GTK_BUTTONS_OK,
|
||||
+ tmp,
|
||||
+ "");
|
||||
+ dlg = hig_dialog_new (NULL /* parent */,
|
||||
+ GTK_DIALOG_MODAL /* flags */,
|
||||
+ GTK_MESSAGE_ERROR,
|
||||
+ GTK_BUTTONS_OK,
|
||||
+ tmp,
|
||||
+ "");
|
||||
+ g_free (tmp);
|
||||
+ g_free (errdlg_message);
|
||||
+ errdlg_message = NULL;
|
||||
@ -202,7 +219,7 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
static gboolean
|
||||
greeter_ctrl_handler (GIOChannel *source,
|
||||
GIOCondition cond,
|
||||
@@ -192,6 +239,8 @@ process_operation (guchar op_code,
|
||||
@@ -243,6 +297,8 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
case GDM_PROMPT:
|
||||
@ -211,7 +228,7 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
tmp = ve_locale_to_utf8 (args);
|
||||
if (tmp != NULL && strcmp (tmp, _("Username:")) == 0) {
|
||||
gdm_common_login_sound (gdm_config_get_string (GDM_KEY_SOUND_PROGRAM),
|
||||
@@ -214,6 +263,8 @@ process_operation (guchar op_code,
|
||||
@@ -265,6 +321,8 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
case GDM_NOECHO:
|
||||
@ -220,7 +237,7 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
tmp = ve_locale_to_utf8 (args);
|
||||
|
||||
greeter_probably_login_prompt = FALSE;
|
||||
@@ -233,6 +284,8 @@ process_operation (guchar op_code,
|
||||
@@ -284,6 +342,8 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
case GDM_MSG:
|
||||
@ -229,7 +246,7 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
tmp = ve_locale_to_utf8 (args);
|
||||
greeter_item_pam_message (tmp);
|
||||
g_free (tmp);
|
||||
@@ -241,6 +294,8 @@ process_operation (guchar op_code,
|
||||
@@ -292,6 +352,8 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
case GDM_ERRBOX:
|
||||
@ -238,7 +255,7 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
tmp = ve_locale_to_utf8 (args);
|
||||
greeter_item_pam_error (tmp);
|
||||
g_free (tmp);
|
||||
@@ -250,30 +305,17 @@ process_operation (guchar op_code,
|
||||
@@ -301,30 +363,17 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
case GDM_ERRDLG:
|
||||
@ -246,13 +263,13 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
- gdm_wm_focus_new_windows (TRUE);
|
||||
-
|
||||
tmp = ve_locale_to_utf8 (args);
|
||||
- dlg = ve_hig_dialog_new (NULL /* parent */,
|
||||
- GTK_DIALOG_MODAL /* flags */,
|
||||
- GTK_MESSAGE_ERROR,
|
||||
- GTK_BUTTONS_OK,
|
||||
- tmp,
|
||||
- "");
|
||||
+ append_errdlg_message (tmp);
|
||||
- dlg = hig_dialog_new (NULL /* parent */,
|
||||
- GTK_DIALOG_MODAL /* flags */,
|
||||
- GTK_MESSAGE_ERROR,
|
||||
- GTK_BUTTONS_OK,
|
||||
- tmp,
|
||||
- "");
|
||||
+ append_errdlg_message (tmp);
|
||||
g_free (tmp);
|
||||
|
||||
- gdm_wm_center_window (GTK_WINDOW (dlg));
|
||||
@ -267,21 +284,18 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
break;
|
||||
|
||||
case GDM_SESS:
|
||||
+ show_errdlg_messages ();
|
||||
+ show_errdlg_messages ();
|
||||
+
|
||||
tmp = ve_locale_to_utf8 (args);
|
||||
session = gdm_session_lookup (tmp, &lookup_status);
|
||||
if (lookup_status != SESSION_LOOKUP_SUCCESS) {
|
||||
@@ -341,6 +383,8 @@ process_operation (guchar op_code,
|
||||
@@ -392,10 +441,14 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
case GDM_LANG:
|
||||
+ show_errdlg_messages ();
|
||||
+ show_errdlg_messages ();
|
||||
+
|
||||
language = greeter_language_get_language (args);
|
||||
if (greeter_language_get_save_language () == GTK_RESPONSE_CANCEL)
|
||||
printf ("%c%s\n", STX, GDM_RESPONSE_CANCEL);
|
||||
@@ -351,6 +395,8 @@ process_operation (guchar op_code,
|
||||
gdm_lang_op_lang (args);
|
||||
break;
|
||||
|
||||
case GDM_SSESS:
|
||||
@ -290,16 +304,16 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
if (gdm_get_save_session () == GTK_RESPONSE_YES)
|
||||
printf ("%cY\n", STX);
|
||||
else
|
||||
@@ -360,6 +406,8 @@ process_operation (guchar op_code,
|
||||
@@ -405,6 +458,8 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
case GDM_SLANG:
|
||||
+ show_errdlg_messages ();
|
||||
+ show_errdlg_messages ();
|
||||
+
|
||||
if (greeter_language_get_save_language () == GTK_RESPONSE_YES)
|
||||
printf ("%cY\n", STX);
|
||||
else
|
||||
@@ -399,6 +447,8 @@ process_operation (guchar op_code,
|
||||
gdm_lang_op_slang (args);
|
||||
break;
|
||||
|
||||
@@ -447,6 +502,8 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
case GDM_QUIT:
|
||||
@ -308,7 +322,7 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
greeter_item_timed_stop ();
|
||||
|
||||
if (require_quarter) {
|
||||
@@ -503,6 +553,8 @@ process_operation (guchar op_code,
|
||||
@@ -563,6 +620,8 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
case GDM_SAVEDIE:
|
||||
@ -317,7 +331,7 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
/* Set busy cursor */
|
||||
gdm_common_setup_cursor (GDK_WATCH);
|
||||
|
||||
@@ -522,6 +574,8 @@ process_operation (guchar op_code,
|
||||
@@ -582,6 +641,8 @@ process_operation (guchar op_code,
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -326,26 +340,25 @@ Index: gdm-2.17.7/gui/greeter/greeter.c
|
||||
gdm_common_fail_greeter ("Unexpected greeter command received: '%c'", op_code);
|
||||
break;
|
||||
}
|
||||
@@ -849,6 +903,7 @@ gdm_read_config (void)
|
||||
@@ -918,6 +979,7 @@ gdm_read_config (void)
|
||||
gdm_config_get_bool (GDM_KEY_SOUND_ON_LOGIN);
|
||||
gdm_config_get_bool (GDM_KEY_DEFAULT_WELCOME);
|
||||
gdm_config_get_bool (GDM_KEY_DEFAULT_REMOTE_WELCOME);
|
||||
+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
|
||||
+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
|
||||
gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
|
||||
gdm_config_get_bool (GDM_KEY_BROWSER);
|
||||
|
||||
/* Keys for custom commands */
|
||||
@@ -934,6 +989,7 @@ greeter_reread_config (int sig, gpointer
|
||||
@@ -1007,6 +1069,7 @@ greeter_reread_config (int sig, gpointer
|
||||
gdm_config_reload_bool (GDM_KEY_SHOW_LAST_SESSION) ||
|
||||
gdm_config_reload_bool (GDM_KEY_ALLOW_ROOT) ||
|
||||
gdm_config_reload_bool (GDM_KEY_ALLOW_REMOTE_ROOT) ||
|
||||
+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
|
||||
gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES)) {
|
||||
+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
|
||||
gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES) ||
|
||||
gdm_config_reload_bool (GDM_KEY_BROWSER)) {
|
||||
|
||||
/* Set busy cursor */
|
||||
Index: gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter_canvas_item.c
|
||||
+++ gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter_canvas_item.c gdm-2.19.3-post/gui/greeter/greeter_canvas_item.c
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter_canvas_item.c 2007-08-02 20:01:45.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter_canvas_item.c 2007-08-02 20:59:53.000000000 -0500
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
#include <math.h>
|
||||
@ -355,7 +368,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
#include <gtk/gtk.h>
|
||||
#include <glib/gi18n.h>
|
||||
#include <librsvg/rsvg.h>
|
||||
@@ -42,6 +44,9 @@
|
||||
@@ -46,6 +48,9 @@
|
||||
#include "greeter_canvas_text.h"
|
||||
#include "greeter_parser.h"
|
||||
|
||||
@ -365,7 +378,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
/* Keep track of buttons so they can be set sensitive/insensitive */
|
||||
GtkButton *gtk_ok_button = NULL;
|
||||
GtkButton *gtk_start_again_button = NULL;
|
||||
@@ -381,6 +386,189 @@ set_root_pixmap (GdkPixmap *pixmap)
|
||||
@@ -385,6 +390,189 @@ set_root_pixmap (GdkPixmap *pixmap)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -555,7 +568,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
void
|
||||
greeter_item_create_canvas_item (GreeterItemInfo *item)
|
||||
{
|
||||
@@ -672,6 +860,48 @@ greeter_item_create_canvas_item (Greeter
|
||||
@@ -676,6 +864,48 @@ greeter_item_create_canvas_item (Greeter
|
||||
|
||||
break;
|
||||
|
||||
@ -604,10 +617,9 @@ Index: gdm-2.17.7/gui/greeter/greeter_canvas_item.c
|
||||
case GREETER_ITEM_TYPE_LIST:
|
||||
/* Note a list type must be setup later and we will add the list store
|
||||
* to it then, depending on the type. Likely userlist is the
|
||||
Index: gdm-2.17.7/gui/greeter/greeter_configuration.h
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter_configuration.h
|
||||
+++ gdm-2.17.7/gui/greeter/greeter_configuration.h
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter_configuration.h gdm-2.19.3-post/gui/greeter/greeter_configuration.h
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter_configuration.h 2007-06-17 12:07:26.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter_configuration.h 2007-08-02 20:59:53.000000000 -0500
|
||||
@@ -65,6 +65,7 @@ extern gchar *GdmSoundOnLoginFailureFile
|
||||
extern gboolean GdmSoundOnLoginReady;
|
||||
extern gboolean GdmSoundOnLoginSuccess;
|
||||
@ -616,10 +628,9 @@ Index: gdm-2.17.7/gui/greeter/greeter_configuration.h
|
||||
|
||||
extern gboolean GDM_IS_LOCAL;
|
||||
extern gboolean DOING_GDM_DEVELOPMENT;
|
||||
Index: gdm-2.17.7/gui/greeter/greeter.h
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter.h
|
||||
+++ gdm-2.17.7/gui/greeter/greeter.h
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter.h gdm-2.19.3-post/gui/greeter/greeter.h
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter.h 2007-06-17 12:07:26.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter.h 2007-08-02 20:59:53.000000000 -0500
|
||||
@@ -27,6 +27,9 @@ extern GtkWidget *window;
|
||||
|
||||
extern gboolean greeter_probably_login_prompt;
|
||||
@ -630,12 +641,11 @@ Index: gdm-2.17.7/gui/greeter/greeter.h
|
||||
void greeter_ignore_buttons (gboolean val);
|
||||
|
||||
#endif
|
||||
Index: gdm-2.17.7/gui/greeter/greeter_item.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter_item.c
|
||||
+++ gdm-2.17.7/gui/greeter/greeter_item.c
|
||||
@@ -223,6 +223,10 @@ greeter_item_is_visible (GreeterItemInfo
|
||||
g_free (key_string);
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter_item.c gdm-2.19.3-post/gui/greeter/greeter_item.c
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter_item.c 2007-06-17 12:07:26.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter_item.c 2007-08-02 20:59:53.000000000 -0500
|
||||
@@ -234,6 +234,10 @@ greeter_item_is_visible (GreeterItemInfo
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+ if ( ! gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN) &&
|
||||
@ -645,10 +655,9 @@ Index: gdm-2.17.7/gui/greeter/greeter_item.c
|
||||
if (( ! gdm_config_get_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
|
||||
ve_string_empty (gdm_config_get_string (GDM_KEY_TIMED_LOGIN)) ||
|
||||
NULL == g_getenv("GDM_TIMED_LOGIN_OK")) &&
|
||||
Index: gdm-2.17.7/gui/greeter/greeter_item.h
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter_item.h
|
||||
+++ gdm-2.17.7/gui/greeter/greeter_item.h
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter_item.h gdm-2.19.3-post/gui/greeter/greeter_item.h
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter_item.h 2007-06-17 12:07:26.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter_item.h 2007-08-02 20:59:53.000000000 -0500
|
||||
@@ -47,7 +47,8 @@ enum _GreeterItemType {
|
||||
GREETER_ITEM_TYPE_LABEL,
|
||||
GREETER_ITEM_TYPE_ENTRY,
|
||||
@ -659,7 +668,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_item.h
|
||||
};
|
||||
|
||||
/* Make sure to adjust the bitfield in the structure if
|
||||
@@ -147,7 +148,7 @@ struct _GreeterItemInfo {
|
||||
@@ -154,7 +155,7 @@ struct _GreeterItemInfo {
|
||||
union {
|
||||
/* Note: we want to have alphas, colors and have_color coincide for
|
||||
* all types that have it */
|
||||
@ -668,11 +677,18 @@ Index: gdm-2.17.7/gui/greeter/greeter_item.h
|
||||
struct {
|
||||
guint8 alphas[GREETER_ITEM_STATE_MAX];
|
||||
guint32 colors[GREETER_ITEM_STATE_MAX];
|
||||
Index: gdm-2.17.7/gui/greeter/greeter_item_pam.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter_item_pam.c
|
||||
+++ gdm-2.17.7/gui/greeter/greeter_item_pam.c
|
||||
@@ -36,6 +36,7 @@
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter_item_pam.c gdm-2.19.3-post/gui/greeter/greeter_item_pam.c
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter_item_pam.c 2007-06-17 12:07:26.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter_item_pam.c 2007-08-02 22:21:47.000000000 -0500
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "gdm-common.h"
|
||||
#include "gdm-socket-protocol.h"
|
||||
+#include "gdm-daemon-config-keys.h"
|
||||
|
||||
#include "greeter.h"
|
||||
#include "greeter_item.h"
|
||||
@@ -37,6 +38,7 @@
|
||||
#include "gdm.h"
|
||||
#include "gdmwm.h"
|
||||
#include "gdmcommon.h"
|
||||
@ -680,7 +696,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_item_pam.c
|
||||
|
||||
static gboolean messages_to_give = FALSE;
|
||||
static gboolean replace_msg = TRUE;
|
||||
@@ -117,11 +118,29 @@ set_text (GreeterItemInfo *info, const c
|
||||
@@ -116,11 +118,29 @@ set_text (GreeterItemInfo *info, const c
|
||||
info->item);
|
||||
}
|
||||
|
||||
@ -711,7 +727,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_item_pam.c
|
||||
GreeterItemInfo *error_info;
|
||||
|
||||
if (gtk_ok_button != NULL)
|
||||
@@ -153,6 +172,7 @@ greeter_item_pam_login (GtkEntry *entry,
|
||||
@@ -152,6 +172,7 @@ greeter_item_pam_login (GtkEntry *entry,
|
||||
}
|
||||
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (entry), FALSE);
|
||||
@ -719,7 +735,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_item_pam.c
|
||||
|
||||
/* clear the err_box */
|
||||
if (err_box_clear_handler > 0)
|
||||
@@ -167,6 +187,33 @@ greeter_item_pam_login (GtkEntry *entry,
|
||||
@@ -166,6 +187,33 @@ greeter_item_pam_login (GtkEntry *entry,
|
||||
}
|
||||
|
||||
tmp = ve_locale_from_utf8 (str);
|
||||
@ -753,7 +769,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_item_pam.c
|
||||
printf ("%c%s\n", STX, tmp);
|
||||
fflush (stdout);
|
||||
g_free (tmp);
|
||||
@@ -233,6 +280,7 @@ greeter_item_pam_setup (void)
|
||||
@@ -224,6 +272,7 @@ greeter_item_pam_setup (void)
|
||||
|
||||
/* initially insensitive */
|
||||
gtk_widget_set_sensitive (entry, FALSE);
|
||||
@ -761,7 +777,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_item_pam.c
|
||||
}
|
||||
|
||||
g_signal_connect (entry, "activate",
|
||||
@@ -272,6 +320,9 @@ greeter_item_pam_prompt (const char *mes
|
||||
@@ -288,6 +337,9 @@ greeter_item_pam_prompt (const char *mes
|
||||
gtk_entry_set_max_length (GTK_ENTRY (entry), entry_len);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), "");
|
||||
gtk_widget_grab_focus (entry);
|
||||
@ -771,11 +787,10 @@ Index: gdm-2.17.7/gui/greeter/greeter_item_pam.c
|
||||
}
|
||||
|
||||
messages_to_give = FALSE;
|
||||
Index: gdm-2.17.7/gui/greeter/greeter_parser.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter_parser.c
|
||||
+++ gdm-2.17.7/gui/greeter/greeter_parser.c
|
||||
@@ -395,6 +395,11 @@ parse_stock (xmlNodePtr node,
|
||||
diff -upr gdm-2.19.3-pre/gui/greeter/greeter_parser.c gdm-2.19.3-post/gui/greeter/greeter_parser.c
|
||||
--- gdm-2.19.3-pre/gui/greeter/greeter_parser.c 2007-06-17 12:07:26.000000000 -0500
|
||||
+++ gdm-2.19.3-post/gui/greeter/greeter_parser.c 2007-08-02 20:59:53.000000000 -0500
|
||||
@@ -402,6 +402,11 @@ parse_stock (xmlNodePtr node,
|
||||
g_free (*translated_text);
|
||||
*translated_text = g_strdup (_("Username:"));
|
||||
}
|
||||
@ -787,7 +802,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_parser.c
|
||||
else if (g_ascii_strcasecmp ((char *) prop, "ok") == 0)
|
||||
{
|
||||
g_free (*translated_text);
|
||||
@@ -1633,6 +1638,15 @@ parse_entry (xmlNodePtr node,
|
||||
@@ -1649,6 +1654,15 @@ parse_entry (xmlNodePtr node,
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -803,7 +818,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_parser.c
|
||||
parse_items (xmlNodePtr node,
|
||||
GList **items_out,
|
||||
GreeterItemInfo *parent,
|
||||
@@ -1687,6 +1701,8 @@ parse_items (xmlNodePtr node,
|
||||
@@ -1704,6 +1718,8 @@ parse_items (xmlNodePtr node,
|
||||
item_type = GREETER_ITEM_TYPE_LIST;
|
||||
else if (strcmp ((char *) type, "button") == 0)
|
||||
item_type = GREETER_ITEM_TYPE_BUTTON;
|
||||
@ -812,7 +827,7 @@ Index: gdm-2.17.7/gui/greeter/greeter_parser.c
|
||||
else
|
||||
{
|
||||
g_set_error (error,
|
||||
@@ -1733,6 +1749,9 @@ parse_items (xmlNodePtr node,
|
||||
@@ -1750,6 +1766,9 @@ parse_items (xmlNodePtr node,
|
||||
case GREETER_ITEM_TYPE_BUTTON:
|
||||
res = parse_gtkbutton (child, info, error);
|
||||
break;
|
||||
|
@ -1,108 +1,46 @@
|
||||
diff -upr gdm-2.16.1-pre/daemon/gdm.c gdm-2.16.1-post/daemon/gdm.c
|
||||
--- gdm-2.16.1-pre/daemon/gdm.c 2006-09-11 15:36:16.000000000 -0500
|
||||
+++ gdm-2.16.1-post/daemon/gdm.c 2006-11-07 19:19:53.000000000 -0600
|
||||
@@ -2347,6 +2347,9 @@ gdm_handle_message (GdmConnection *conn,
|
||||
return;
|
||||
d = gdm_display_lookup (slave_pid);
|
||||
|
||||
+ if (!gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ return;
|
||||
+
|
||||
gdm_info (_("Master suspending..."));
|
||||
|
||||
sysmenu = gdm_get_value_bool_per_display (d->name, GDM_KEY_SYSTEM_MENU);
|
||||
@@ -3242,21 +3245,24 @@ gdm_handle_user_message (GdmConnection *
|
||||
if (logout_action == GDM_LOGOUT_ACTION_NONE)
|
||||
logout_action = safe_logout_action;
|
||||
|
||||
- if (sysmenu && disp->attached &&
|
||||
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
|
||||
! ve_string_empty (gdm_get_value_string (GDM_KEY_HALT))) {
|
||||
g_string_append_printf (msg, "%s%s", sep, GDM_SUP_LOGOUT_ACTION_HALT);
|
||||
if (logout_action == GDM_LOGOUT_ACTION_HALT)
|
||||
g_string_append (msg, "!");
|
||||
sep = ";";
|
||||
}
|
||||
- if (sysmenu && disp->attached &&
|
||||
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
|
||||
! ve_string_empty (gdm_get_value_string (GDM_KEY_REBOOT))) {
|
||||
g_string_append_printf (msg, "%s%s", sep, GDM_SUP_LOGOUT_ACTION_REBOOT);
|
||||
if (logout_action == GDM_LOGOUT_ACTION_REBOOT)
|
||||
g_string_append (msg, "!");
|
||||
sep = ";";
|
||||
}
|
||||
- if (sysmenu && disp->attached &&
|
||||
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
|
||||
! ve_string_empty (gdm_get_value_string (GDM_KEY_SUSPEND))) {
|
||||
g_string_append_printf (msg, "%s%s", sep, GDM_SUP_LOGOUT_ACTION_SUSPEND);
|
||||
if (logout_action == GDM_LOGOUT_ACTION_SUSPEND)
|
||||
@@ -3292,21 +3298,24 @@ gdm_handle_user_message (GdmConnection *
|
||||
disp->logout_action = GDM_LOGOUT_ACTION_NONE;
|
||||
was_ok = TRUE;
|
||||
} else if (strcmp (action, GDM_SUP_LOGOUT_ACTION_HALT) == 0) {
|
||||
- if (sysmenu && disp->attached &&
|
||||
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
|
||||
! ve_string_empty (gdm_get_value_string (GDM_KEY_HALT))) {
|
||||
disp->logout_action =
|
||||
GDM_LOGOUT_ACTION_HALT;
|
||||
was_ok = TRUE;
|
||||
}
|
||||
} else if (strcmp (action, GDM_SUP_LOGOUT_ACTION_REBOOT) == 0) {
|
||||
- if (sysmenu && disp->attached &&
|
||||
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
|
||||
! ve_string_empty (gdm_get_value_string (GDM_KEY_REBOOT))) {
|
||||
disp->logout_action =
|
||||
GDM_LOGOUT_ACTION_REBOOT;
|
||||
was_ok = TRUE;
|
||||
}
|
||||
} else if (strcmp (action, GDM_SUP_LOGOUT_ACTION_SUSPEND) == 0) {
|
||||
- if (sysmenu && disp->attached &&
|
||||
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
|
||||
! ve_string_empty (gdm_get_value_string (GDM_KEY_SUSPEND))) {
|
||||
disp->logout_action =
|
||||
GDM_LOGOUT_ACTION_SUSPEND;
|
||||
diff -upr gdm-2.16.1-pre/daemon/gdmconfig.c gdm-2.16.1-post/daemon/gdmconfig.c
|
||||
--- gdm-2.16.1-pre/daemon/gdmconfig.c 2006-07-17 13:43:51.000000000 -0500
|
||||
+++ gdm-2.16.1-post/daemon/gdmconfig.c 2006-11-07 23:19:19.000000000 -0600
|
||||
@@ -251,6 +251,8 @@ static gboolean GdmGraphicalThemeRand;
|
||||
static gboolean GdmBroadcast;
|
||||
static gboolean GdmAllowAdd;
|
||||
static gboolean GdmRestartBackgroundProgram;
|
||||
+static gboolean GdmAllowShutdown;
|
||||
+static gboolean GdmSecureShutdown;
|
||||
|
||||
/**
|
||||
* gdm_config_add_hash
|
||||
@@ -418,6 +420,8 @@ gdm_config_init (void)
|
||||
gdm_config_add_hash (GDM_KEY_SOUND_ON_LOGIN, &GdmSoundOnLogin, &bool_type);
|
||||
gdm_config_add_hash (GDM_KEY_RESTART_BACKGROUND_PROGRAM,
|
||||
&GdmRestartBackgroundProgram, &bool_type);
|
||||
+ gdm_config_add_hash (GDM_KEY_ALLOW_SHUTDOWN, &GdmAllowShutdown, &bool_type);
|
||||
+ gdm_config_add_hash (GDM_KEY_SECURE_SHUTDOWN, &GdmSecureShutdown, &bool_type);
|
||||
|
||||
/* string values */
|
||||
gdm_config_add_hash (GDM_KEY_PATH, &GdmPath, &string_type);
|
||||
@@ -1277,6 +1281,10 @@ _gdm_set_value_bool (gchar *key, gboolea
|
||||
notify_displays_int (GDM_NOTIFY_ADD_GTK_MODULES, *setting);
|
||||
else if (is_key (key, GDM_KEY_TIMED_LOGIN_ENABLE))
|
||||
notify_displays_int (GDM_NOTIFY_TIMED_LOGIN_ENABLE, *setting);
|
||||
+ else if (is_key (key, GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ notify_displays_int (GDM_NOTIFY_ALLOW_SHUTDOWN, *setting);
|
||||
+ else if (is_key (key, GDM_KEY_SECURE_SHUTDOWN))
|
||||
+ notify_displays_int (GDM_NOTIFY_SECURE_SHUTDOWN, *setting);
|
||||
}
|
||||
|
||||
if (*setting)
|
||||
diff -upr gdm-2.16.1-pre/daemon/gdm.h gdm-2.16.1-post/daemon/gdm.h
|
||||
--- gdm-2.16.1-pre/daemon/gdm.h 2006-11-07 18:31:11.000000000 -0600
|
||||
+++ gdm-2.16.1-post/daemon/gdm.h 2006-11-07 20:04:54.000000000 -0600
|
||||
@@ -123,6 +123,8 @@ enum {
|
||||
diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-entries.h gdm-2.19.5-post/daemon/gdm-daemon-config-entries.h
|
||||
--- gdm-2.19.5-pre/daemon/gdm-daemon-config-entries.h 2007-07-30 13:51:14.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-entries.h 2007-08-03 19:21:37.000000000 -0500
|
||||
@@ -110,6 +110,7 @@ typedef enum {
|
||||
GDM_ID_ALLOW_ROOT,
|
||||
GDM_ID_ALLOW_REMOTE_ROOT,
|
||||
GDM_ID_ALLOW_REMOTE_AUTOLOGIN,
|
||||
+ GDM_ID_SECURE_SHUTDOWN,
|
||||
GDM_ID_USER_MAX_FILE,
|
||||
GDM_ID_RELAX_PERM,
|
||||
GDM_ID_CHECK_DIR_OWNER,
|
||||
@@ -359,6 +360,7 @@ static const GdmConfigEntry gdm_daemon_c
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "AllowRoot", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_ALLOW_ROOT },
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "AllowRemoteRoot", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_ALLOW_REMOTE_ROOT },
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "AllowRemoteAutoLogin", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_ALLOW_REMOTE_AUTOLOGIN },
|
||||
+ { GDM_CONFIG_GROUP_SECURITY, "SecureShutdown", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_SECURE_SHUTDOWN },
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "UserMaxFile", GDM_CONFIG_VALUE_INT, "65536", GDM_ID_USER_MAX_FILE },
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "RelaxPermissions", GDM_CONFIG_VALUE_INT, "0", GDM_ID_RELAX_PERM },
|
||||
{ GDM_CONFIG_GROUP_SECURITY, "CheckDirOwner", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_CHECK_DIR_OWNER },
|
||||
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 17:56:58.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-03 18:59:38.000000000 -0500
|
||||
@@ -98,6 +98,7 @@ G_BEGIN_DECLS
|
||||
#define GDM_KEY_ALLOW_ROOT "security/AllowRoot=true"
|
||||
#define GDM_KEY_ALLOW_REMOTE_ROOT "security/AllowRemoteRoot=false"
|
||||
#define GDM_KEY_ALLOW_REMOTE_AUTOLOGIN "security/AllowRemoteAutoLogin=false"
|
||||
+#define GDM_KEY_SECURE_SHUTDOWN "security/SecureShutdown=false"
|
||||
#define GDM_KEY_USER_MAX_FILE "security/UserMaxFile=65536"
|
||||
#define GDM_KEY_RELAX_PERM "security/RelaxPermissions=0"
|
||||
#define GDM_KEY_CHECK_DIR_OWNER "security/CheckDirOwner=true"
|
||||
@@ -208,6 +209,7 @@ G_BEGIN_DECLS
|
||||
#define GDM_NOTIFY_ALLOW_REMOTE_ROOT "AllowRemoteRoot" /* <true/false as int> */
|
||||
#define GDM_NOTIFY_ALLOW_ROOT "AllowRoot" /* <true/false as int> */
|
||||
#define GDM_NOTIFY_ALLOW_REMOTE_AUTOLOGIN "AllowRemoteAutoLogin" /* <true/false as int> */
|
||||
+#define GDM_NOTIFY_SECURE_SHUTDOWN "SecureShutdown" /* <true/false as int> */
|
||||
#define GDM_NOTIFY_SYSTEM_MENU "SystemMenu" /* <true/false as int> */
|
||||
#define GDM_NOTIFY_CONFIG_AVAILABLE "ConfigAvailable" /* <true/false as int> */
|
||||
#define GDM_NOTIFY_CHOOSER_BUTTON "ChooserButton" /* <true/false as int> */
|
||||
Only in gdm-2.19.5-post/daemon: gdm.h.rej
|
||||
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-07-30 13:51:14.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/gdm-socket-protocol.h 2007-08-03 18:57:43.000000000 -0500
|
||||
@@ -68,6 +68,8 @@
|
||||
/* Different login interruptions */
|
||||
#define GDM_INTERRUPT_TIMED_LOGIN 'T'
|
||||
#define GDM_INTERRUPT_CONFIGURE 'C'
|
||||
@ -111,38 +49,19 @@ diff -upr gdm-2.16.1-pre/daemon/gdm.h gdm-2.16.1-post/daemon/gdm.h
|
||||
#define GDM_INTERRUPT_SUSPEND 'S'
|
||||
#define GDM_INTERRUPT_SELECT_USER 'U'
|
||||
#define GDM_INTERRUPT_LOGIN_SOUND 'L'
|
||||
@@ -418,6 +420,9 @@ enum {
|
||||
#define GDM_KEY_SHOW_XTERM_FAILSAFE "greeter/ShowXtermFailsafeSession=true"
|
||||
#define GDM_KEY_SHOW_LAST_SESSION "greeter/ShowLastSession=true"
|
||||
|
||||
+#define GDM_KEY_ALLOW_SHUTDOWN "security/AllowShutdown=true"
|
||||
+#define GDM_KEY_SECURE_SHUTDOWN "security/SecureShutdown=false"
|
||||
+
|
||||
#define GDM_SESSION_FAILSAFE_GNOME "GDM_Failsafe.GNOME"
|
||||
#define GDM_SESSION_FAILSAFE_XTERM "GDM_Failsafe.XTERM"
|
||||
|
||||
@@ -733,6 +738,8 @@ void gdm_final_cleanup (void);
|
||||
#define GDM_NOTIFY_SOUND_ON_LOGIN_FAILURE_FILE "SoundOnLoginFailureFile" /* <sound file> */
|
||||
#define GDM_NOTIFY_ADD_GTK_MODULES "AddGtkModules" /* <true/false as int> */
|
||||
#define GDM_NOTIFY_GTK_MODULES_LIST "GtkModulesList" /* <modules list> */
|
||||
+#define GDM_NOTIFY_ALLOW_SHUTDOWN "AllowShutdown" /* <true/false as int> */
|
||||
+#define GDM_NOTIFY_SECURE_SHUTDOWN "SecureShutdown" /* <true/false as int> */
|
||||
|
||||
/* commands, seel GDM_SLAVE_NOTIFY_COMMAND */
|
||||
#define GDM_NOTIFY_DIRTY_SERVERS "DIRTY_SERVERS"
|
||||
diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
--- gdm-2.16.1-pre/daemon/slave.c 2006-11-07 18:31:11.000000000 -0600
|
||||
+++ gdm-2.16.1-post/daemon/slave.c 2006-11-07 19:56:06.000000000 -0600
|
||||
@@ -101,6 +101,8 @@ static gboolean do_timed_login = FALSE;
|
||||
login the timed login */
|
||||
static gboolean do_configurator = FALSE; /* if this is true, login as root
|
||||
* and start the configurator */
|
||||
+static gboolean do_system_halt = FALSE;
|
||||
+static gboolean do_system_reboot = FALSE;
|
||||
static gboolean do_cancel = FALSE; /* if this is true, go back to
|
||||
username entry & unselect face
|
||||
browser (if present) */
|
||||
@@ -1893,6 +1895,97 @@ play_login_sound (const char *sound_file
|
||||
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 17:56:58.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/slave.c 2007-08-03 19:10:15.000000000 -0500
|
||||
@@ -129,6 +129,8 @@ static gboolean do_timed_login =
|
||||
static gboolean do_configurator = FALSE; /* If this is true, login as
|
||||
* root and start the
|
||||
* configurator */
|
||||
+static gboolean do_system_halt = FALSE;
|
||||
+static gboolean do_system_reboot = FALSE;
|
||||
static gboolean do_cancel = FALSE; /* If this is true, go back to
|
||||
username entry & unselect
|
||||
face browser (if present) */
|
||||
@@ -2056,6 +2058,96 @@ play_login_sound (const char *sound_file
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -156,30 +75,29 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
+ gdm_slave_greeter_ctl_no_ret (GDM_MSG, message);
|
||||
+
|
||||
+ /* we always allow root for this */
|
||||
+ oldAllowRoot = gdm_get_value_bool (GDM_KEY_ALLOW_ROOT);
|
||||
+ gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
|
||||
+ oldAllowRoot = gdm_daemon_config_get_value_bool (GDM_KEY_ALLOW_ROOT);
|
||||
+ gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
|
||||
+
|
||||
+ *pwent = getpwuid (0);
|
||||
+ if G_UNLIKELY (*pwent == NULL) {
|
||||
+ /* what? no "root" ?? */
|
||||
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
|
||||
+ gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
|
||||
+ gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
|
||||
+ return FALSE; /* continue */
|
||||
+ }
|
||||
+
|
||||
+ gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, (*pwent)->pw_name);
|
||||
+ login = gdm_verify_user (d,
|
||||
+ (*pwent)->pw_name,
|
||||
+ d->name,
|
||||
+ d->attached);
|
||||
+ gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
|
||||
+ login_user = gdm_verify_user (d,
|
||||
+ (*pwent)->pw_name,
|
||||
+ FALSE);
|
||||
+ gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
|
||||
+
|
||||
+ /* Clear message */
|
||||
+ gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
|
||||
+
|
||||
+ if G_UNLIKELY (do_restart_greeter) {
|
||||
+ g_free (login);
|
||||
+ login = NULL;
|
||||
+ g_free (login_user);
|
||||
+ login_user = NULL;
|
||||
+ do_restart_greeter = FALSE;
|
||||
+ restart_the_greeter ();
|
||||
+ return FALSE; /* continue */
|
||||
@ -188,15 +106,15 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
+ check_notifies_now ();
|
||||
+
|
||||
+ /* The wanker can't remember his password */
|
||||
+ if (login == NULL) {
|
||||
+ if (login_user == NULL) {
|
||||
+ gdm_debug ("gdm_slave_wait_for_login: No login/Bad login");
|
||||
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
|
||||
+ return FALSE; /* continue */
|
||||
+ }
|
||||
+
|
||||
+ /* Wipe the login */
|
||||
+ g_free (login);
|
||||
+ login = NULL;
|
||||
+ g_free (login_user);
|
||||
+ login_user = NULL;
|
||||
+
|
||||
+ /* Note that this can still fall through to
|
||||
+ * the timed login if the user doesn't type in the
|
||||
@ -240,10 +158,10 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
static void
|
||||
gdm_slave_wait_for_login (void)
|
||||
{
|
||||
@@ -1949,88 +2042,13 @@ gdm_slave_wait_for_login (void)
|
||||
@@ -2116,86 +2208,12 @@ gdm_slave_wait_for_login (void)
|
||||
do_configurator = FALSE;
|
||||
g_free (login);
|
||||
login = NULL;
|
||||
g_free (login_user);
|
||||
login_user = NULL;
|
||||
- /* clear any error */
|
||||
- gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX, "");
|
||||
- gdm_slave_greeter_ctl_no_ret
|
||||
@ -251,8 +169,8 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
- _("You must authenticate as root to run configuration."));
|
||||
-
|
||||
- /* we always allow root for this */
|
||||
- oldAllowRoot = gdm_get_value_bool (GDM_KEY_ALLOW_ROOT);
|
||||
- gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
|
||||
- oldAllowRoot = gdm_daemon_config_get_value_bool (GDM_KEY_ALLOW_ROOT);
|
||||
- gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
|
||||
-
|
||||
- pwent = getpwuid (0);
|
||||
- if G_UNLIKELY (pwent == NULL) {
|
||||
@ -260,40 +178,36 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
|
||||
- continue;
|
||||
- }
|
||||
|
||||
-
|
||||
- gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, pwent->pw_name);
|
||||
- login = gdm_verify_user (d,
|
||||
- pwent->pw_name,
|
||||
- d->name,
|
||||
- d->attached);
|
||||
- gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
|
||||
- login_user = gdm_verify_user (d,
|
||||
- pwent->pw_name,
|
||||
- FALSE);
|
||||
- gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
|
||||
-
|
||||
- /* Clear message */
|
||||
- gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
|
||||
-
|
||||
- if G_UNLIKELY (do_restart_greeter) {
|
||||
- g_free (login);
|
||||
- login = NULL;
|
||||
- g_free (login_user);
|
||||
- login_user = NULL;
|
||||
- do_restart_greeter = FALSE;
|
||||
- restart_the_greeter ();
|
||||
+ if (!get_root_auth (_("You must authenticate as root to run configuration."), &pwent)) {
|
||||
+ if (do_timed_login)
|
||||
+ break;
|
||||
continue;
|
||||
}
|
||||
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- check_notifies_now ();
|
||||
-
|
||||
- /* The wanker can't remember his password */
|
||||
- if (login == NULL) {
|
||||
- /* The user can't remember his password */
|
||||
- if (login_user == NULL) {
|
||||
- gdm_debug ("gdm_slave_wait_for_login: No login/Bad login");
|
||||
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- /* Wipe the login */
|
||||
- g_free (login);
|
||||
- login = NULL;
|
||||
- g_free (login_user);
|
||||
- login_user = NULL;
|
||||
-
|
||||
- /* Note that this can still fall through to
|
||||
- * the timed login if the user doesn't type in the
|
||||
@ -303,13 +217,12 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- /* The user is a wanker */
|
||||
- if G_UNLIKELY (do_configurator) {
|
||||
- do_configurator = FALSE;
|
||||
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
|
||||
- /* Now running as root */
|
||||
-
|
||||
- /* Get the root pwent */
|
||||
@ -320,8 +233,11 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
- * since we logged in, but I'm paranoid */
|
||||
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
+ if (!get_root_auth (_("You must authenticate as root to run configuration."), &pwent)) {
|
||||
+ if (do_timed_login)
|
||||
+ break;
|
||||
}
|
||||
|
||||
- d->logged_in = TRUE;
|
||||
- logged_in_uid = 0;
|
||||
- logged_in_gid = 0;
|
||||
@ -332,7 +248,7 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
/* Disable the login screen, we don't want people to
|
||||
* log in in the meantime */
|
||||
gdm_slave_greeter_ctl_no_ret (GDM_DISABLE, "");
|
||||
@@ -2069,6 +2087,49 @@ gdm_slave_wait_for_login (void)
|
||||
@@ -2234,6 +2252,43 @@ gdm_slave_wait_for_login (void)
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -340,13 +256,10 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
+ struct passwd *pwent;
|
||||
+
|
||||
+ do_system_halt = FALSE;
|
||||
+ g_free (login);
|
||||
+ login = NULL;
|
||||
+ g_free (login_user);
|
||||
+ login_user = NULL;
|
||||
+
|
||||
+ if (!gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ continue;
|
||||
+
|
||||
+ if (!gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
|
||||
+ if (!gdm_daemon_config_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
|
||||
+ get_root_auth (_("You must authenticate as root to shut down."), &pwent)) {
|
||||
+ exit_code_to_use = DISPLAY_HALT;
|
||||
+ term_quit ();
|
||||
@ -361,13 +274,10 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
+ struct passwd *pwent;
|
||||
+
|
||||
+ do_system_reboot = FALSE;
|
||||
+ g_free (login);
|
||||
+ login = NULL;
|
||||
+ g_free (login_user);
|
||||
+ login_user = NULL;
|
||||
+
|
||||
+ if (!gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ continue;
|
||||
+
|
||||
+ if (!gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
|
||||
+ if (!gdm_daemon_config_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
|
||||
+ get_root_auth (_("You must authenticate as root to restart the computer."), &pwent)) {
|
||||
+ exit_code_to_use = DISPLAY_REBOOT;
|
||||
+ term_quit ();
|
||||
@ -382,28 +292,22 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
/* The user timed out into a timed login during the
|
||||
* conversation */
|
||||
if (do_timed_login) {
|
||||
@@ -4943,9 +5004,20 @@ check_for_interruption (const char *msg)
|
||||
do_configurator = TRUE;
|
||||
}
|
||||
break;
|
||||
@@ -5453,6 +5508,14 @@ check_for_interruption (const char *msg)
|
||||
/* Not interrupted, continue reading input,
|
||||
* just proxy this to the master server */
|
||||
return TRUE;
|
||||
+ case GDM_INTERRUPT_HALT:
|
||||
+ if (d->attached) {
|
||||
+ if (d->attached)
|
||||
+ do_system_halt = TRUE;
|
||||
+ }
|
||||
+ break;
|
||||
+ case GDM_INTERRUPT_REBOOT:
|
||||
+ if (d->attached) {
|
||||
+ if (d->attached)
|
||||
+ do_system_reboot = TRUE;
|
||||
+ }
|
||||
+ break;
|
||||
case GDM_INTERRUPT_SUSPEND:
|
||||
case GDM_INTERRUPT_LOGIN_SOUND:
|
||||
if (d->attached &&
|
||||
gdm_get_value_bool_per_display (d->name, GDM_KEY_SYSTEM_MENU) &&
|
||||
+ gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
! ve_string_empty (gdm_get_value_string (GDM_KEY_SUSPEND))) {
|
||||
gchar *msg = g_strdup_printf ("%s %ld",
|
||||
GDM_SOP_SUSPEND_MACHINE,
|
||||
@@ -5358,6 +5430,8 @@ gdm_slave_action_pending (void)
|
||||
! play_login_sound (gdm_daemon_config_get_value_string (GDM_KEY_SOUND_ON_LOGIN_FILE))) {
|
||||
@@ -5909,6 +5972,8 @@ gdm_slave_action_pending (void)
|
||||
{
|
||||
if (do_timed_login ||
|
||||
do_configurator ||
|
||||
@ -412,40 +316,32 @@ diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
do_restart_greeter ||
|
||||
do_cancel)
|
||||
return FALSE;
|
||||
@@ -5629,6 +5703,12 @@ gdm_slave_handle_notify (const char *msg
|
||||
@@ -6192,6 +6257,8 @@ gdm_slave_handle_notify (const char *msg
|
||||
remanage_asap = TRUE;
|
||||
}
|
||||
}
|
||||
+ } else if (sscanf (msg, GDM_NOTIFY_ALLOW_SHUTDOWN " %d", &val) == 1) {
|
||||
+ gdm_set_value_bool (GDM_KEY_ALLOW_SHUTDOWN, val);
|
||||
+ if (d->greetpid > 1)
|
||||
+ kill (d->greetpid, SIGHUP);
|
||||
+ } else if (sscanf (msg, GDM_NOTIFY_SECURE_SHUTDOWN " %d", &val) == 1) {
|
||||
+ gdm_set_value_bool (GDM_KEY_SECURE_SHUTDOWN, val);
|
||||
+ gdm_daemon_config_set_value_bool (GDM_KEY_SECURE_SHUTDOWN, val);
|
||||
}
|
||||
}
|
||||
|
||||
diff -upr gdm-2.16.1-pre/gui/gdmlogin.c gdm-2.16.1-post/gui/gdmlogin.c
|
||||
--- gdm-2.16.1-pre/gui/gdmlogin.c 2006-07-21 12:56:26.000000000 -0500
|
||||
+++ gdm-2.16.1-post/gui/gdmlogin.c 2006-11-07 21:19:38.000000000 -0600
|
||||
@@ -658,14 +658,20 @@ gdm_run_gdmconfig (GtkWidget *w, gpointe
|
||||
Only in gdm-2.19.5-post: error.17751
|
||||
diff -upr gdm-2.19.5-pre/gui/gdmlogin.c gdm-2.19.5-post/gui/gdmlogin.c
|
||||
--- gdm-2.19.5-pre/gui/gdmlogin.c 2007-08-03 17:56:58.000000000 -0500
|
||||
+++ gdm-2.19.5-post/gui/gdmlogin.c 2007-08-03 19:24:09.000000000 -0500
|
||||
@@ -692,12 +692,15 @@ gdm_run_gdmconfig (GtkWidget *w, gpointe
|
||||
static void
|
||||
gdm_login_restart_handler (void)
|
||||
{
|
||||
- if (gdm_wm_warn_dialog (
|
||||
- _("Are you sure you want to restart the computer?"), "",
|
||||
- _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ return;
|
||||
|
||||
- closelog ();
|
||||
-
|
||||
- gdm_kill_thingies ();
|
||||
- _exit (DISPLAY_REBOOT);
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
|
||||
+ if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
|
||||
+ _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ closelog ();
|
||||
|
||||
- gdm_kill_thingies ();
|
||||
- _exit (DISPLAY_REBOOT);
|
||||
+ gdm_kill_thingies ();
|
||||
+ _exit (DISPLAY_REBOOT);
|
||||
+ }
|
||||
@ -455,24 +351,19 @@ diff -upr gdm-2.16.1-pre/gui/gdmlogin.c gdm-2.16.1-post/gui/gdmlogin.c
|
||||
}
|
||||
}
|
||||
|
||||
@@ -673,14 +679,20 @@ gdm_login_restart_handler (void)
|
||||
@@ -721,12 +724,15 @@ gdm_custom_cmd_handler (GtkWidget *widge
|
||||
static void
|
||||
gdm_login_halt_handler (void)
|
||||
{
|
||||
- if (gdm_wm_warn_dialog (
|
||||
- _("Are you sure you want to Shut Down the computer?"), "",
|
||||
- _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ return;
|
||||
|
||||
- closelog ();
|
||||
-
|
||||
- gdm_kill_thingies ();
|
||||
- _exit (DISPLAY_HALT);
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
|
||||
+ if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
|
||||
+ _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ closelog ();
|
||||
|
||||
- gdm_kill_thingies ();
|
||||
- _exit (DISPLAY_HALT);
|
||||
+ gdm_kill_thingies ();
|
||||
+ _exit (DISPLAY_HALT);
|
||||
+ }
|
||||
@ -482,16 +373,14 @@ diff -upr gdm-2.16.1-pre/gui/gdmlogin.c gdm-2.16.1-post/gui/gdmlogin.c
|
||||
}
|
||||
}
|
||||
|
||||
@@ -696,11 +708,17 @@ gdm_login_use_chooser_handler (void)
|
||||
@@ -740,11 +746,14 @@ gdm_login_use_chooser_handler (void)
|
||||
static void
|
||||
gdm_login_suspend_handler (void)
|
||||
{
|
||||
- if (gdm_wm_warn_dialog (
|
||||
- _("Are you sure you want to suspend the computer?"), "",
|
||||
- _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ return;
|
||||
|
||||
-
|
||||
- /* suspend interruption */
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
|
||||
+ if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
|
||||
@ -504,263 +393,182 @@ diff -upr gdm-2.16.1-pre/gui/gdmlogin.c gdm-2.16.1-post/gui/gdmlogin.c
|
||||
printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
|
||||
fflush (stdout);
|
||||
}
|
||||
@@ -2369,7 +2387,8 @@ gdm_login_gui_init (void)
|
||||
got_anything = TRUE;
|
||||
}
|
||||
@@ -2911,6 +2920,7 @@ gdm_read_config (void)
|
||||
gdm_config_get_bool (GDM_KEY_TITLE_BAR);
|
||||
gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
|
||||
gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
|
||||
+ gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN);
|
||||
|
||||
- if (gdm_working_command_exists (gdm_config_get_string (GDM_KEY_REBOOT))) {
|
||||
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
+ gdm_working_command_exists (gdm_config_get_string (GDM_KEY_REBOOT))) {
|
||||
item = gtk_menu_item_new_with_mnemonic (_("_Restart"));
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
|
||||
g_signal_connect (G_OBJECT (item), "activate",
|
||||
@@ -2379,7 +2398,8 @@ gdm_login_gui_init (void)
|
||||
got_anything = TRUE;
|
||||
}
|
||||
|
||||
- if (gdm_working_command_exists (gdm_config_get_string (GDM_KEY_HALT))) {
|
||||
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
+ gdm_working_command_exists (gdm_config_get_string (GDM_KEY_HALT))) {
|
||||
item = gtk_menu_item_new_with_mnemonic (_("Shut _Down"));
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
|
||||
g_signal_connect (G_OBJECT (item), "activate",
|
||||
@@ -2389,7 +2409,8 @@ gdm_login_gui_init (void)
|
||||
got_anything = TRUE;
|
||||
}
|
||||
/* Keys not to include in reread_config */
|
||||
gdm_config_get_bool (GDM_KEY_LOCK_POSITION);
|
||||
@@ -2994,6 +3004,7 @@ gdm_reread_config (int sig, gpointer dat
|
||||
gdm_config_reload_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
|
||||
gdm_config_reload_bool (GDM_KEY_TITLE_BAR) ||
|
||||
gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
|
||||
+ gdm_config_reload_bool (GDM_KEY_SECURE_SHUTDOWN) ||
|
||||
gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES)) {
|
||||
|
||||
- if (gdm_working_command_exists (gdm_config_get_string (GDM_KEY_SUSPEND))) {
|
||||
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
|
||||
+ gdm_working_command_exists (gdm_config_get_string (GDM_KEY_SUSPEND))) {
|
||||
item = gtk_menu_item_new_with_mnemonic (_("_Suspend"));
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
|
||||
g_signal_connect (G_OBJECT (item), "activate",
|
||||
Only in gdm-2.16.1-post/gui: gdmlogin.c~
|
||||
diff -upr gdm-2.16.1-pre/gui/gdmsetup.c gdm-2.16.1-post/gui/gdmsetup.c
|
||||
--- gdm-2.16.1-pre/gui/gdmsetup.c 2006-11-07 18:31:11.000000000 -0600
|
||||
+++ gdm-2.16.1-post/gui/gdmsetup.c 2006-11-07 21:23:24.000000000 -0600
|
||||
@@ -1670,9 +1670,6 @@ setup_intspin (const char *name,
|
||||
g_object_set_data_full (G_OBJECT (spin),
|
||||
"key", g_strdup (key),
|
||||
(GDestroyNotify) g_free);
|
||||
- g_object_set_data_full (G_OBJECT (toggle),
|
||||
- "notify_key", g_strdup (key),
|
||||
- (GDestroyNotify) g_free);
|
||||
/* Set busy cursor */
|
||||
Only in gdm-2.19.5-post/gui: gdmlogin.c~
|
||||
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 17:56:58.000000000 -0500
|
||||
+++ gdm-2.19.5-post/gui/greeter/greeter.c 2007-08-03 19:25:02.000000000 -0500
|
||||
@@ -982,6 +982,7 @@ gdm_read_config (void)
|
||||
gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
|
||||
gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
|
||||
gdm_config_get_bool (GDM_KEY_BROWSER);
|
||||
+ gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN);
|
||||
|
||||
gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), val);
|
||||
/* Keys for custom commands */
|
||||
for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) {
|
||||
@@ -1071,6 +1072,7 @@ greeter_reread_config (int sig, gpointer
|
||||
gdm_config_reload_bool (GDM_KEY_ALLOW_REMOTE_ROOT) ||
|
||||
gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
|
||||
gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES) ||
|
||||
+ gdm_config_reload_bool (GDM_KEY_SECURE_SHUTDOWN) ||
|
||||
gdm_config_reload_bool (GDM_KEY_BROWSER)) {
|
||||
|
||||
Only in gdm-2.16.1-post/gui: gdmsetup.c~
|
||||
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_item.c gdm-2.16.1-post/gui/greeter/greeter_item.c
|
||||
--- gdm-2.16.1-pre/gui/greeter/greeter_item.c 2006-11-07 18:31:11.000000000 -0600
|
||||
+++ gdm-2.16.1-post/gui/greeter/greeter_item.c 2006-11-07 21:28:38.000000000 -0600
|
||||
@@ -196,15 +196,15 @@ greeter_item_is_visible (GreeterItemInfo
|
||||
/* Set busy cursor */
|
||||
Only in gdm-2.19.5-post/gui/greeter: greeter.c~
|
||||
diff -upr gdm-2.19.5-pre/gui/greeter/greeter_item.c gdm-2.19.5-post/gui/greeter/greeter_item.c
|
||||
--- gdm-2.19.5-pre/gui/greeter/greeter_item.c 2007-08-03 17:56:58.000000000 -0500
|
||||
+++ gdm-2.19.5-post/gui/greeter/greeter_item.c 2007-08-03 19:02:29.000000000 -0500
|
||||
@@ -214,15 +214,15 @@ greeter_item_is_visible (GreeterItemInfo
|
||||
strcmp (info->show_type, "system") == 0)
|
||||
return FALSE;
|
||||
|
||||
- if (( ! sysmenu || ! GdmHaltFound) &&
|
||||
+ if (( ! sysmenu || ! GdmHaltFound || !gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) &&
|
||||
+ if (( ! sysmenu || ! GdmHaltFound || !gdm_common_is_action_available ("HALT")) &&
|
||||
(info->show_type != NULL &&
|
||||
strcmp (info->show_type, "halt") == 0))
|
||||
return FALSE;
|
||||
- if (( ! sysmenu || ! GdmRebootFound) &&
|
||||
+ if (( ! sysmenu || ! GdmRebootFound || !gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) &&
|
||||
+ if (( ! sysmenu || ! GdmRebootFound || !gdm_common_is_action_available ("REBOOT")) &&
|
||||
(info->show_type != NULL &&
|
||||
strcmp (info->show_type, "reboot") == 0))
|
||||
return FALSE;
|
||||
- if (( ! sysmenu || ! GdmSuspendFound) &&
|
||||
+ if (( ! sysmenu || ! GdmSuspendFound || !gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) &&
|
||||
+ if (( ! sysmenu || ! GdmSuspendFound || !gdm_common_is_action_available ("SUSPEND")) &&
|
||||
(info->show_type != NULL &&
|
||||
strcmp (info->show_type, "suspend") == 0))
|
||||
return FALSE;
|
||||
Only in gdm-2.16.1-post/gui/greeter: greeter_item.c~
|
||||
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_system.c gdm-2.16.1-post/gui/greeter/greeter_system.c
|
||||
--- gdm-2.16.1-pre/gui/greeter/greeter_system.c 2006-08-02 21:32:39.000000000 -0500
|
||||
+++ gdm-2.16.1-post/gui/greeter/greeter_system.c 2006-11-07 21:26:35.000000000 -0600
|
||||
@@ -68,61 +68,63 @@ bin_exists (const char *command)
|
||||
* cannot depend on callback data being passed in.
|
||||
*/
|
||||
Only in gdm-2.19.5-post/gui/greeter: greeter_item.c~
|
||||
diff -upr gdm-2.19.5-pre/gui/greeter/greeter_system.c gdm-2.19.5-post/gui/greeter/greeter_system.c
|
||||
--- gdm-2.19.5-pre/gui/greeter/greeter_system.c 2007-07-30 13:51:01.000000000 -0500
|
||||
+++ gdm-2.19.5-post/gui/greeter/greeter_system.c 2007-08-03 18:41:02.000000000 -0500
|
||||
@@ -77,10 +77,15 @@ bin_exists (const char *command)
|
||||
static void
|
||||
-query_greeter_restart_handler (void)
|
||||
+greeter_restart_handler (void)
|
||||
query_greeter_restart_handler (void)
|
||||
{
|
||||
- if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
|
||||
- _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
- closelog ();
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ return;
|
||||
+
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
|
||||
+ if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
|
||||
+ _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ closelog ();
|
||||
|
||||
- _exit (DISPLAY_REBOOT);
|
||||
+ _exit (DISPLAY_REBOOT);
|
||||
+ }
|
||||
- }
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
|
||||
+ if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
|
||||
+ _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ _exit (DISPLAY_REBOOT);
|
||||
+ }
|
||||
+ } else {
|
||||
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
|
||||
+ fflush (stdout);
|
||||
}
|
||||
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
|
||||
+ fflush (stdout);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
-query_greeter_halt_handler (void)
|
||||
+greeter_halt_handler (void)
|
||||
@@ -101,27 +106,42 @@ query_greeter_custom_cmd_handler (GtkWid
|
||||
static void
|
||||
query_greeter_halt_handler (void)
|
||||
{
|
||||
- if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
|
||||
- _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
- closelog ();
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ return;
|
||||
|
||||
- _exit (DISPLAY_HALT);
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
|
||||
+ if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
|
||||
+ _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ closelog ();
|
||||
+
|
||||
+ _exit (DISPLAY_HALT);
|
||||
+ }
|
||||
+ } else {
|
||||
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
|
||||
- }
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
|
||||
+ if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
|
||||
+ _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ _exit (DISPLAY_HALT);
|
||||
+ }
|
||||
+ } else {
|
||||
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
|
||||
+ fflush (stdout);
|
||||
}
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
-query_greeter_suspend_handler (void)
|
||||
+greeter_suspend_handler (void)
|
||||
query_greeter_suspend_handler (void)
|
||||
{
|
||||
- if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
|
||||
- _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
- /* suspend interruption */
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
|
||||
+ return;
|
||||
+
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
|
||||
+ if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
|
||||
+ _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ /* suspend interruption */
|
||||
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
|
||||
+ fflush (stdout);
|
||||
+ }
|
||||
- printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
|
||||
- fflush (stdout);
|
||||
- }
|
||||
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
|
||||
+ if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
|
||||
+ _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
|
||||
+ /* suspend interruption */
|
||||
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
|
||||
+ fflush (stdout);
|
||||
+ }
|
||||
+ } else {
|
||||
printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
|
||||
fflush (stdout);
|
||||
}
|
||||
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
|
||||
+ fflush (stdout);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
-greeter_restart_handler (void)
|
||||
-{
|
||||
- closelog ();
|
||||
- _exit (DISPLAY_REBOOT);
|
||||
-}
|
||||
-
|
||||
-
|
||||
-static void
|
||||
-greeter_halt_handler (void)
|
||||
-{
|
||||
- closelog ();
|
||||
- _exit (DISPLAY_HALT);
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
-greeter_suspend_handler (void)
|
||||
-{
|
||||
- printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
|
||||
- fflush (stdout);
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
greeter_config_handler (void)
|
||||
greeter_restart_handler (void)
|
||||
{
|
||||
greeter_item_ulist_disable ();
|
||||
@@ -174,36 +176,36 @@ greeter_system_append_system_menu (GtkWi
|
||||
NULL);
|
||||
}
|
||||
|
||||
- if (GdmRebootFound || GdmHaltFound || GdmSuspendFound) {
|
||||
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) && (GdmRebootFound || GdmHaltFound || GdmSuspendFound)) {
|
||||
sep = gtk_separator_menu_item_new ();
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), sep);
|
||||
gtk_widget_show (sep);
|
||||
}
|
||||
|
||||
- if (GdmRebootFound) {
|
||||
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) && GdmRebootFound) {
|
||||
w = gtk_menu_item_new_with_mnemonic (_("_Restart"));
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
|
||||
gtk_widget_show (GTK_WIDGET (w));
|
||||
g_signal_connect (G_OBJECT (w), "activate",
|
||||
- G_CALLBACK (query_greeter_restart_handler),
|
||||
+ G_CALLBACK (greeter_restart_handler),
|
||||
NULL);
|
||||
}
|
||||
|
||||
- if (GdmHaltFound) {
|
||||
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) && GdmHaltFound) {
|
||||
w = gtk_menu_item_new_with_mnemonic (_("Shut _Down"));
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
|
||||
gtk_widget_show (GTK_WIDGET (w));
|
||||
g_signal_connect (G_OBJECT (w), "activate",
|
||||
- G_CALLBACK (query_greeter_halt_handler),
|
||||
+ G_CALLBACK (greeter_halt_handler),
|
||||
NULL);
|
||||
}
|
||||
|
||||
- if (GdmSuspendFound) {
|
||||
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) && GdmSuspendFound) {
|
||||
w = gtk_menu_item_new_with_mnemonic (_("Sus_pend"));
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
|
||||
gtk_widget_show (GTK_WIDGET (w));
|
||||
g_signal_connect (G_OBJECT (w), "activate",
|
||||
- G_CALLBACK (query_greeter_suspend_handler),
|
||||
+ G_CALLBACK (greeter_suspend_handler),
|
||||
NULL);
|
||||
}
|
||||
- _exit (DISPLAY_REBOOT);
|
||||
+ if (GDM_KEY_SECURE_SHUTDOWN) {
|
||||
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
|
||||
+ fflush (stdout);
|
||||
+ } else {
|
||||
+ _exit (DISPLAY_REBOOT);
|
||||
+ }
|
||||
}
|
||||
@@ -281,7 +283,7 @@ greeter_system_handler (GreeterItemInfo
|
||||
|
||||
static void
|
||||
@@ -134,7 +154,12 @@ greeter_custom_cmd_handler (gint cmd_id)
|
||||
static void
|
||||
greeter_halt_handler (void)
|
||||
{
|
||||
- _exit (DISPLAY_HALT);
|
||||
+ if (GDM_KEY_SECURE_SHUTDOWN) {
|
||||
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
|
||||
+ fflush (stdout);
|
||||
+ } else {
|
||||
+ _exit (DISPLAY_HALT);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -342,7 +367,7 @@ greeter_system_handler (GreeterItemInfo
|
||||
vbox,
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
- if (GdmHaltFound) {
|
||||
+ if (GdmHaltFound && gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) {
|
||||
+ if (GdmHaltFound && gdm_common_is_action_available ("HALT")) {
|
||||
if (group_radio != NULL)
|
||||
radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
|
||||
halt_radio = gtk_radio_button_new_with_mnemonic (radio_group,
|
||||
@@ -299,7 +301,7 @@ greeter_system_handler (GreeterItemInfo
|
||||
@@ -360,7 +385,7 @@ greeter_system_handler (GreeterItemInfo
|
||||
gtk_widget_show (halt_radio);
|
||||
}
|
||||
|
||||
- if (GdmRebootFound) {
|
||||
+ if (GdmRebootFound && gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) {
|
||||
+ if (GdmRebootFound && gdm_common_is_action_available ("REBOOT")) {
|
||||
if (group_radio != NULL)
|
||||
radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
|
||||
restart_radio = gtk_radio_button_new_with_mnemonic (radio_group,
|
||||
@@ -316,7 +318,7 @@ greeter_system_handler (GreeterItemInfo
|
||||
gtk_widget_show (restart_radio);
|
||||
@@ -404,7 +429,7 @@ greeter_system_handler (GreeterItemInfo
|
||||
}
|
||||
}
|
||||
|
||||
- if (GdmSuspendFound) {
|
||||
+ if (GdmSuspendFound && gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) {
|
||||
+ if (GdmSuspendFound && gdm_common_is_action_available ("SUSPEND")) {
|
||||
if (group_radio != NULL)
|
||||
radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
|
||||
suspend_radio = gtk_radio_button_new_with_mnemonic (radio_group,
|
||||
@@ -414,13 +416,13 @@ void
|
||||
greeter_item_system_setup (void)
|
||||
{
|
||||
greeter_item_register_action_callback ("reboot_button",
|
||||
- (ActionFunc)query_greeter_restart_handler,
|
||||
+ (ActionFunc)greeter_restart_handler,
|
||||
NULL);
|
||||
greeter_item_register_action_callback ("halt_button",
|
||||
- (ActionFunc)query_greeter_halt_handler,
|
||||
+ (ActionFunc)greeter_halt_handler,
|
||||
NULL);
|
||||
greeter_item_register_action_callback ("suspend_button",
|
||||
- (ActionFunc)query_greeter_suspend_handler,
|
||||
+ (ActionFunc)greeter_suspend_handler,
|
||||
NULL);
|
||||
greeter_item_register_action_callback ("system_button",
|
||||
(ActionFunc)greeter_system_handler,
|
||||
Only in gdm-2.16.1-post/gui/greeter: greeter_system.c~
|
||||
Only in gdm-2.19.5-post/gui/greeter: greeter_system.c~
|
||||
|
@ -1,11 +1,16 @@
|
||||
--- gdm-2.16.1/daemon/verify-pam.c
|
||||
+++ gdm-2.16.1/daemon/verify-pam.c
|
||||
@@ -595,7 +595,7 @@
|
||||
break;
|
||||
case PAM_TEXT_INFO:
|
||||
/* PAM sent a message that should displayed to the user */
|
||||
- gdm_slave_greeter_ctl_no_ret (GDM_MSG, m);
|
||||
+ gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
|
||||
reply[replies].resp_retcode = PAM_SUCCESS;
|
||||
reply[replies].resp = NULL;
|
||||
break;
|
||||
Only in gdm-2.19.5-pre/daemon: gdm-daemon-config-keys.h.orig
|
||||
Only in gdm-2.19.5-pre/daemon: slave.c.orig
|
||||
diff -upr gdm-2.19.5-pre/daemon/verify-pam.c gdm-2.19.5-post/daemon/verify-pam.c
|
||||
--- gdm-2.19.5-pre/daemon/verify-pam.c 2007-08-03 19:47:48.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/verify-pam.c 2007-08-03 19:48:46.000000000 -0500
|
||||
@@ -610,7 +610,7 @@ gdm_verify_pam_conv (int num_msg, struct
|
||||
|
||||
case PAM_TEXT_INFO:
|
||||
/* PAM sent a message that should displayed to the user */
|
||||
- gdm_slave_greeter_ctl_no_ret (GDM_MSG, m);
|
||||
+ gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
|
||||
reply[replies].resp_retcode = PAM_SUCCESS;
|
||||
reply[replies].resp = NULL;
|
||||
break;
|
||||
Only in gdm-2.19.5-pre/daemon: verify-pam.c.orig
|
||||
Only in gdm-2.19.5-post: error.18283
|
||||
|
@ -1,80 +0,0 @@
|
||||
diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
|
||||
--- gdm-2.16.1-pre/daemon/slave.c 2006-08-07 14:49:29.000000000 -0500
|
||||
+++ gdm-2.16.1-post/daemon/slave.c 2006-11-07 16:54:20.000000000 -0600
|
||||
@@ -3358,7 +3358,7 @@ session_child_run (struct passwd *pwent,
|
||||
#ifndef HAVE_TSOL
|
||||
char *argv[4];
|
||||
#else
|
||||
- char *argv[7];
|
||||
+ char *argv[9];
|
||||
#endif
|
||||
|
||||
#ifdef CAN_USE_SETPENV
|
||||
@@ -3584,10 +3584,12 @@ session_child_run (struct passwd *pwent,
|
||||
argv[1] = NULL;
|
||||
argv[2] = NULL;
|
||||
argv[3] = NULL;
|
||||
-#ifdef HAVE_TSOL
|
||||
argv[4] = NULL;
|
||||
argv[5] = NULL;
|
||||
+#ifdef HAVE_TSOL
|
||||
argv[6] = NULL;
|
||||
+ argv[7] = NULL;
|
||||
+ argv[8] = NULL;
|
||||
#endif
|
||||
|
||||
exec = NULL;
|
||||
@@ -3640,11 +3642,27 @@ session_child_run (struct passwd *pwent,
|
||||
argv[3] = argv[4] = argv[5] = argv[6] = NULL;
|
||||
} else {
|
||||
#endif
|
||||
- argv[0] = basexsession;
|
||||
- argv[1] = exec;
|
||||
- argv[2] = NULL;
|
||||
+ /* If it looks like we are using bash, then run the Xsession
|
||||
+ script in a login shell and pass it 'no-fake-login' as its
|
||||
+ second argument. This keeps Xsession from sourcing .profile or
|
||||
+ otherwise trying to pretend to be a login shell. */
|
||||
+
|
||||
+ if (strlen (pwent->pw_shell) > 4
|
||||
+ && ! strcmp (pwent->pw_shell + strlen (pwent->pw_shell) - 5, "/bash")
|
||||
+ && g_file_test (pwent->pw_shell, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_EXECUTABLE)) {
|
||||
+ argv[0] = pwent->pw_shell;
|
||||
+ argv[1] = "--login";
|
||||
+ argv[2] = basexsession;
|
||||
+ argv[3] = exec;
|
||||
+ argv[4] = "no-fake-login";
|
||||
+ argv[5] = NULL;
|
||||
+ } else {
|
||||
+ argv[0] = basexsession;
|
||||
+ argv[1] = exec;
|
||||
+ argv[2] = NULL;
|
||||
+ }
|
||||
#ifdef HAVE_TSOL
|
||||
- argv[3] = argv[4] = argv[5] = argv[6] = NULL;
|
||||
+ argv [3] = argv [4] = argv[5] = argv[6] = argv[7] = argv[8] = NULL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -3793,7 +3811,6 @@ session_child_run (struct passwd *pwent,
|
||||
failsafe = TRUE;
|
||||
}
|
||||
|
||||
-#ifdef HAVE_TSOL
|
||||
gdm_debug ("Running %s %s %s %s %s %s for %s on %s",
|
||||
argv[0],
|
||||
ve_sure_string (argv[1]),
|
||||
@@ -3802,13 +3819,6 @@ session_child_run (struct passwd *pwent,
|
||||
ve_sure_string (argv[4]),
|
||||
ve_sure_string (argv[5]),
|
||||
login, d->name);
|
||||
-#else
|
||||
- gdm_debug ("Running %s %s %s for %s on %s",
|
||||
- argv[0],
|
||||
- ve_sure_string (argv[1]),
|
||||
- ve_sure_string (argv[2]),
|
||||
- login, d->name);
|
||||
-#endif
|
||||
|
||||
if ( ! ve_string_empty (pwent->pw_shell)) {
|
||||
shell = pwent->pw_shell;
|
@ -1,11 +1,10 @@
|
||||
Index: gdm-2.19.3/config/gdm.conf.in
|
||||
===================================================================
|
||||
--- gdm-2.19.3.orig/config/gdm.conf.in
|
||||
+++ gdm-2.19.3/config/gdm.conf.in
|
||||
diff -upr gdm-2.19.5-pre/config/gdm.conf.in gdm-2.19.5-post/config/gdm.conf.in
|
||||
--- gdm-2.19.5-pre/config/gdm.conf.in 2007-07-30 13:51:14.000000000 -0500
|
||||
+++ gdm-2.19.5-post/config/gdm.conf.in 2007-08-03 17:35:14.000000000 -0500
|
||||
@@ -68,11 +68,11 @@ TimedLoginDelay=30
|
||||
|
||||
# The greeter for local (non-xdmcp) logins. Change gdmlogin to gdmgreeter to
|
||||
# get the new graphical greeter.
|
||||
# The greeter for attached (non-xdmcp) logins. Change gdmlogin to gdmgreeter
|
||||
# to get the new graphical greeter.
|
||||
-#Greeter=@libexecdir@/gdmlogin
|
||||
+Greeter=@libexecdir@/gdmgreeter
|
||||
|
||||
@ -65,7 +64,7 @@ Index: gdm-2.19.3/config/gdm.conf.in
|
||||
# Maximum size of a file we wish to read. This makes it hard for a user to DoS
|
||||
# us by using a large file.
|
||||
#UserMaxFile=65536
|
||||
@@ -320,17 +327,18 @@ Enable=false
|
||||
@@ -339,17 +346,18 @@ Enable=false
|
||||
#PingIntervalSeconds=15
|
||||
# The port. 177 is the standard port so better keep it that way.
|
||||
#Port=177
|
||||
@ -90,7 +89,7 @@ Index: gdm-2.19.3/config/gdm.conf.in
|
||||
|
||||
# The GTK+ theme to use for the GUI.
|
||||
#GtkTheme=Default
|
||||
@@ -357,7 +365,7 @@ Enable=false
|
||||
@@ -376,7 +384,7 @@ Enable=false
|
||||
#TitleBar=true
|
||||
# Don't allow user to move the standard login window. Only makes sense if
|
||||
# TitleBar is on.
|
||||
@ -99,7 +98,7 @@ Index: gdm-2.19.3/config/gdm.conf.in
|
||||
# Set a position for the standard login window rather then just centering the
|
||||
# window. If you enter negative values for the position it is taken as an
|
||||
# offset from the right or bottom edge.
|
||||
@@ -378,7 +386,7 @@ Browser=false
|
||||
@@ -397,7 +405,7 @@ Browser=false
|
||||
# User ID's less than the MinimalUID value will not be included in the face
|
||||
# browser or in the gdmselection list for Automatic/Timed login. They will not
|
||||
# be displayed regardless of the settings for Include and Exclude.
|
||||
@ -108,7 +107,7 @@ Index: gdm-2.19.3/config/gdm.conf.in
|
||||
# Users listed in Include will be included in the face browser and in the
|
||||
# gdmsetup selection list for Automatic/Timed login. Users should be separated
|
||||
# by commas.
|
||||
@@ -409,7 +417,7 @@ Browser=false
|
||||
@@ -428,7 +436,7 @@ Browser=false
|
||||
#ChooserButtonLogo=@pixmapdir@/gdm-foot-logo.png
|
||||
# The standard greeter should shake if a user entered the wrong username or
|
||||
# password. Kind of cool looking
|
||||
@ -117,7 +116,7 @@ Index: gdm-2.19.3/config/gdm.conf.in
|
||||
|
||||
# The Actions menu (formerly system menu) is shown in the greeter, this is the
|
||||
# menu that contains reboot, shutdown, suspend, config and chooser. None of
|
||||
@@ -446,12 +454,12 @@ DefaultRemoteWelcome=true
|
||||
@@ -465,12 +473,12 @@ DefaultRemoteWelcome=true
|
||||
# Background settings for the standard greeter:
|
||||
# Type can be 0=None, 1=Image & Color, 2=Color, 3=Image
|
||||
#BackgroundType=2
|
||||
@ -132,7 +131,7 @@ Index: gdm-2.19.3/config/gdm.conf.in
|
||||
GraphicalThemedColor=#76848F
|
||||
# XDMCP session should only get a color, this is the sanest setting since you
|
||||
# don't want to take up too much bandwidth
|
||||
@@ -493,7 +501,7 @@ GraphicalThemedColor=#76848F
|
||||
@@ -512,7 +520,7 @@ GraphicalThemedColor=#76848F
|
||||
# list then provide a list that is delimited by /: to the GraphicalThemes
|
||||
# key and set GraphicalThemeRand to true. Otherwise use GraphicalTheme
|
||||
# and specify just one theme.
|
||||
@ -141,7 +140,7 @@ Index: gdm-2.19.3/config/gdm.conf.in
|
||||
#GraphicalThemes=circles/:happygnome
|
||||
GraphicalThemeDir=@datadir@/gdm/themes/
|
||||
GraphicalThemeRand=false
|
||||
@@ -510,6 +518,7 @@ GraphicalThemeRand=false
|
||||
@@ -529,6 +537,7 @@ GraphicalThemeRand=false
|
||||
# executable (see daemon/SoundProgram) it will play that file instead of just
|
||||
# beeping.
|
||||
#SoundOnLogin=true
|
||||
@ -149,8 +148,8 @@ Index: gdm-2.19.3/config/gdm.conf.in
|
||||
#SoundOnLoginFile=
|
||||
# If SoundOnLoginSuccess, then the greeter will play a sound (as above) when a
|
||||
# user successfully logs in.
|
||||
@@ -597,7 +606,7 @@ Gestures=false
|
||||
# Definition of the standard X server.
|
||||
@@ -629,7 +638,7 @@ Gestures=false
|
||||
|
||||
[server-Standard]
|
||||
name=Standard server
|
||||
-command=@X_SERVER@ @X_CONFIG_OPTIONS@ @XEVIE_OPTION@
|
||||
@ -158,3 +157,5 @@ Index: gdm-2.19.3/config/gdm.conf.in
|
||||
flexible=true
|
||||
# Indicates that the X server should be started at a different process
|
||||
# priority. Values can be any integer value accepted by the setpriority C
|
||||
Only in gdm-2.19.5-post/config: gdm.conf.in.orig
|
||||
Only in gdm-2.19.5-post: error.14848
|
||||
|
@ -1,32 +1,26 @@
|
||||
Index: gdm-2.17.7/gui/greeter/greeter_action_language.c
|
||||
===================================================================
|
||||
--- gdm-2.17.7.orig/gui/greeter/greeter_action_language.c
|
||||
+++ gdm-2.17.7/gui/greeter/greeter_action_language.c
|
||||
@@ -220,6 +220,7 @@ greeter_language_setup_treeview (void)
|
||||
diff -upr gdm-2.19.3-pre/gui/gdmlanguages.c gdm-2.19.3-post/gui/gdmlanguages.c
|
||||
--- gdm-2.19.3-pre/gui/gdmlanguages.c 2007-07-31 20:36:54.000000000 -0400
|
||||
+++ gdm-2.19.3-post/gui/gdmlanguages.c 2007-07-31 20:43:55.000000000 -0400
|
||||
@@ -840,6 +840,7 @@ gdm_lang_setup_treeview (void)
|
||||
GtkWidget *swindow;
|
||||
GtkWidget *label;
|
||||
char *s;
|
||||
+ int y_size;
|
||||
+ gint y_size;
|
||||
|
||||
dialog = gtk_dialog_new_with_buttons (_("Select a Language"),
|
||||
#ifdef TODO
|
||||
@@ -286,9 +287,17 @@ greeter_language_setup_treeview (void)
|
||||
@@ -906,9 +907,13 @@ gdm_lang_setup_treeview (void)
|
||||
gtk_container_add (GTK_CONTAINER (swindow), tv);
|
||||
gtk_box_pack_start (GTK_BOX (main_vbox),
|
||||
swindow, TRUE, TRUE, 0);
|
||||
+
|
||||
+ y_size = gdm_wm_screen.height;
|
||||
+ /* If our screen has any sort of reasonable y-resolution,
|
||||
+ don't make the dialog as tall as the screen. This is a
|
||||
+ silly hack, but does make things a bit prettier. */
|
||||
+ if (y_size > 600)
|
||||
+ y_size = 8 * y_size / 10;
|
||||
+ /* Make the dialog fill 8/10 of the screen's height */
|
||||
+ y_size = (8 * gdm_wm_screen.height) / 10;
|
||||
+
|
||||
gtk_window_set_default_size (GTK_WINDOW (dialog),
|
||||
- MIN (400, gdm_wm_screen.width),
|
||||
MIN (400, gdm_wm_screen.width),
|
||||
- MIN (600, gdm_wm_screen.height));
|
||||
+ MIN (400, gdm_wm_screen.width),
|
||||
+ y_size);
|
||||
+ y_size);
|
||||
g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (tv))),
|
||||
"changed",
|
||||
(GCallback) selection_changed,
|
||||
|
@ -1,22 +0,0 @@
|
||||
--- config/Makefile.am
|
||||
+++ config/Makefile.am
|
||||
@@ -5,7 +5,7 @@
|
||||
instsessdir = $(datadir)/xsessions
|
||||
initdir = $(gdmconfdir)/Init
|
||||
authdir = $(localstatedir)/gdm
|
||||
-logdir = $(localstatedir)/log/gdm
|
||||
+logdir = @logdir@
|
||||
gnomercdir = $(gdmconfdir)
|
||||
postdir = $(gdmconfdir)/PostSession
|
||||
predir = $(gdmconfdir)/PreSession
|
||||
--- configure.ac
|
||||
+++ configure.ac
|
||||
@@ -791,7 +791,7 @@
|
||||
#
|
||||
AC_SUBST(authdir, ${localstatedir}/gdm)
|
||||
AC_SUBST(gdmlocaledir, ${gdmconfdir})
|
||||
-AC_SUBST(logdir, ${localstatedir}/log/gdm)
|
||||
+AC_SUBST(logdir, /var/log/gdm)
|
||||
AC_SUBST(pixmapdir, ${datadir}/pixmaps)
|
||||
|
||||
withval=""
|
@ -1,11 +1,17 @@
|
||||
--- daemon/gdm.h
|
||||
+++ daemon/gdm.h
|
||||
@@ -270,7 +270,7 @@
|
||||
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 19:38:33.000000000 -0500
|
||||
+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-03 19:44:00.000000000 -0500
|
||||
@@ -81,7 +81,7 @@ G_BEGIN_DECLS
|
||||
#define GDM_KEY_FIRST_VT "daemon/FirstVT=7"
|
||||
#define GDM_KEY_VT_ALLOCATION "daemon/VTAllocation=true"
|
||||
#define GDM_KEY_CONSOLE_CANNOT_HANDLE "daemon/ConsoleCannotHandle=am,ar,az,bn,el,fa,gu,hi,ja,ko,ml,mr,pa,ta,zh"
|
||||
|
||||
/* How long to wait before assuming an Xserver has timed out */
|
||||
-#define GDM_KEY_XSERVER_TIMEOUT "daemon/GdmXserverTimeout=10"
|
||||
+#define GDM_KEY_XSERVER_TIMEOUT "daemon/GdmXserverTimeout=30"
|
||||
|
||||
/* Per server definitions */
|
||||
#define GDM_KEY_SERVER_PREFIX "server-"
|
||||
#define GDM_KEY_SYSTEM_COMMANDS_IN_MENU "daemon/SystemCommandsInMenu=HALT;REBOOT;SUSPEND;CUSTOM_CMD"
|
||||
#define GDM_KEY_ALLOW_LOGOUT_ACTIONS "daemon/AllowLogoutActions=HALT;REBOOT;SUSPEND;CUSTOM_CMD"
|
||||
#define GDM_KEY_RBAC_SYSTEM_COMMAND_KEYS "daemon/RBACSystemCommandKeys=" GDM_RBAC_SYSCMD_KEYS
|
||||
Only in gdm-2.19.5-post/daemon: gdm-daemon-config-keys.h~
|
||||
Only in gdm-2.19.5-pre/daemon: gdm-daemon-config-keys.h.orig
|
||||
Only in gdm-2.19.5-pre/daemon: slave.c.orig
|
||||
Only in gdm-2.19.5-pre/daemon: verify-pam.c.orig
|
||||
Only in gdm-2.19.5-post: error.15631
|
||||
|
20
gdm.changes
20
gdm.changes
@ -1,3 +1,23 @@
|
||||
-------------------------------------------------------------------
|
||||
Sat Aug 4 04:17:49 CEST 2007 - hpj@suse.de
|
||||
|
||||
- Update to version 2.19.5.
|
||||
- Fix up gdm-conf.patch.
|
||||
- Fix up gdm-2.19.3-reset-pam.patch.
|
||||
- Fix up gdm-2.19.3-token-login.patch.
|
||||
- Fix up and enable gdm-language-dialog-size.patch.
|
||||
- Fix up and enable gdm-2.8.0.7-bg-4.patch.
|
||||
- Fix up and enable gdm-2.8.0.7-domain-entry.patch.
|
||||
- Fix up and enable gdm-2.8.0.7-halt-needs-root.patch.
|
||||
- Fix up and enable gdm-server-timeout.patch.
|
||||
- Fix up and enable gdm-2.8.0.7-some-info-in-dialog.patch.
|
||||
- Fix up and enable gdm-2.17.7-vt-fallback.patch.
|
||||
- Fix up and enable gdm-2.8.0.0-any-hostname-auth.patch.
|
||||
- Remove gdm-2.19.3.diff (upstreamed).
|
||||
- Remove gdm-2.13.0.4-audit-login.patch (upstreamed).
|
||||
- Remove gdm-logdir.patch (fixed upstream).
|
||||
- Remove gdm-bash-profile.patch (obsolete).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 30 16:41:29 CEST 2007 - jberkman@novell.com
|
||||
|
||||
|
53
gdm.spec
53
gdm.spec
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package gdm (Version 2.19.3)
|
||||
# spec file for package gdm (Version 2.19.5)
|
||||
#
|
||||
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
@ -21,8 +21,8 @@ PreReq: %fillup_prereq
|
||||
PreReq: %insserv_prereq
|
||||
License: GPL v2 or later
|
||||
Group: System/GUI/GNOME
|
||||
Version: 2.19.3
|
||||
Release: 12
|
||||
Version: 2.19.5
|
||||
Release: 1
|
||||
Summary: The GNOME 2.x Display Manager
|
||||
Source: %{name}-%{version}.tar.bz2
|
||||
Source1: gdm.pamd
|
||||
@ -32,10 +32,7 @@ Source3: SuSEconfig.gdm
|
||||
Source4: init.earlygdm
|
||||
Source5: sysconfig.displaymanager-gdm
|
||||
Patch0: gdm-conf.patch
|
||||
Patch1: %{name}-%{version}.diff
|
||||
Patch2: gdm-bash-profile.patch
|
||||
Patch3: gdm-language-dialog-size.patch
|
||||
Patch4: gdm-logdir.patch
|
||||
Patch5: gdm-xdm-sessions.patch
|
||||
Patch9: gdm-presession-kde-path.patch
|
||||
Patch12: gdm-gdmsetup-rootonly.patch
|
||||
@ -51,7 +48,6 @@ Patch26: gdm-2.8.0.7-some-info-in-dialog.patch
|
||||
Patch28: gdm-X_SERVER.patch
|
||||
Patch29: gdm-gdmsetup.patch
|
||||
Patch30: gdm-conf-custom-sysconfig.patch
|
||||
Patch33: gdm-2.13.0.4-audit-login.patch
|
||||
Patch34: gdm-2.17.7-vt-fallback.patch
|
||||
Patch35: gdm-2.19.3-reset-pam.patch
|
||||
Patch36: gdm-2.19.3-dbus-security-tokens.patch
|
||||
@ -84,31 +80,25 @@ Authors:
|
||||
%setup
|
||||
gnome-patch-translation-prepare
|
||||
%patch0 -p1
|
||||
%patch1
|
||||
#%patch -p1
|
||||
#%patch2 -p1
|
||||
#%patch3 -p1
|
||||
#%patch4
|
||||
%patch3 -p1
|
||||
%patch5 -p1
|
||||
%patch9 -p1
|
||||
%patch12
|
||||
#%patch13 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
#%patch19 -p1
|
||||
# %if %suse_version > 1000
|
||||
#%patch20 -p1
|
||||
# FIXME: this needs to be re-done
|
||||
# %patch21 -p1
|
||||
# %endif
|
||||
%patch19 -p1
|
||||
%if %suse_version > 1000
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
%endif
|
||||
%patch22 -p1
|
||||
#%patch24
|
||||
#%patch26 -p1
|
||||
%patch24 -p1
|
||||
%patch26 -p1
|
||||
%patch28
|
||||
%patch29
|
||||
%patch30
|
||||
#%patch33 -p1
|
||||
#%patch34 -p1
|
||||
%patch34 -p1
|
||||
%patch35 -p1
|
||||
%patch36 -p1
|
||||
%patch37 -p1
|
||||
@ -233,6 +223,23 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Sat Aug 04 2007 - hpj@suse.de
|
||||
- Update to version 2.19.5.
|
||||
- Fix up gdm-conf.patch.
|
||||
- Fix up gdm-2.19.3-reset-pam.patch.
|
||||
- Fix up gdm-2.19.3-token-login.patch.
|
||||
- Fix up and enable gdm-language-dialog-size.patch.
|
||||
- Fix up and enable gdm-2.8.0.7-bg-4.patch.
|
||||
- Fix up and enable gdm-2.8.0.7-domain-entry.patch.
|
||||
- Fix up and enable gdm-2.8.0.7-halt-needs-root.patch.
|
||||
- Fix up and enable gdm-server-timeout.patch.
|
||||
- Fix up and enable gdm-2.8.0.7-some-info-in-dialog.patch.
|
||||
- Fix up and enable gdm-2.17.7-vt-fallback.patch.
|
||||
- Fix up and enable gdm-2.8.0.0-any-hostname-auth.patch.
|
||||
- Remove gdm-2.19.3.diff (upstreamed).
|
||||
- Remove gdm-2.13.0.4-audit-login.patch (upstreamed).
|
||||
- Remove gdm-logdir.patch (fixed upstream).
|
||||
- Remove gdm-bash-profile.patch (obsolete).
|
||||
* Mon Jul 30 2007 - jberkman@novell.com
|
||||
- use smartcard pam stack when cards are inserted
|
||||
* Wed Jul 25 2007 - jpr@suse.de
|
||||
|
Loading…
x
Reference in New Issue
Block a user