From 32ed7aad234bcb15cb42d5de524ff67bb57ef8d8 Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Tue, 26 Feb 2008 05:03:33 +0000 Subject: [PATCH] - Update to 2.21.8 --- .cvsignore | 2 +- gdm-2.21.8-fedora-logo.patch | 13 ++ gdm-2.21.8-validate-dmrc.patch | 284 +++++++++++++++++++++++++++++++++ gdm.spec | 13 +- sources | 2 +- 5 files changed, 311 insertions(+), 3 deletions(-) create mode 100644 gdm-2.21.8-fedora-logo.patch create mode 100644 gdm-2.21.8-validate-dmrc.patch diff --git a/.cvsignore b/.cvsignore index 49626fe..f138337 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -gdm-2.21.7.tar.gz +gdm-2.21.8.tar.gz diff --git a/gdm-2.21.8-fedora-logo.patch b/gdm-2.21.8-fedora-logo.patch new file mode 100644 index 0000000..ad3f681 --- /dev/null +++ b/gdm-2.21.8-fedora-logo.patch @@ -0,0 +1,13 @@ +Index: gdm/gui/simple-greeter/gdm-simple-greeter.schemas.in +=================================================================== +--- gdm/gui/simple-greeter/gdm-simple-greeter.schemas.in (revision 5874) ++++ gdm/gui/simple-greeter/gdm-simple-greeter.schemas.in (working copy) +@@ -6,7 +6,7 @@ + /apps/gdm/simple-greeter/logo-icon-name + gdm-simple-greeter + string +- computer ++ fedora-logo-icon + + Icon name to use for greeter logo + Set to the themed icon name to use for the greeter logo. diff --git a/gdm-2.21.8-validate-dmrc.patch b/gdm-2.21.8-validate-dmrc.patch new file mode 100644 index 0000000..426e310 --- /dev/null +++ b/gdm-2.21.8-validate-dmrc.patch @@ -0,0 +1,284 @@ +Index: gdm/daemon/gdm-session-direct.c +=================================================================== +--- gdm/daemon/gdm-session-direct.c (revision 5874) ++++ gdm/daemon/gdm-session-direct.c (working copy) +@@ -842,6 +842,130 @@ gdm_session_direct_handle_saved_language + return DBUS_HANDLER_RESULT_HANDLED; + } + ++static gboolean ++is_prog_in_path (const char *prog) ++{ ++ char *f; ++ gboolean ret; ++ ++ f = g_find_program_in_path (prog); ++ ret = (f != NULL); ++ g_free (f); ++ return ret; ++} ++ ++static gboolean ++get_session_command_for_file (const char *file, ++ char **command) ++{ ++ GKeyFile *key_file; ++ GError *error; ++ char *full_path; ++ char *exec; ++ gboolean ret; ++ gboolean res; ++ const char *search_dirs[] = { ++ "/etc/X11/sessions/", ++ DMCONFDIR "/Sessions/", ++ DATADIR "/gdm/BuiltInSessions/", ++ DATADIR "/xsessions/", ++ NULL ++ }; ++ ++ exec = NULL; ++ ret = FALSE; ++ if (command != NULL) { ++ *command = NULL; ++ } ++ ++ key_file = g_key_file_new (); ++ ++ g_debug ("GdmSessionDirect: looking for session file '%s'", file); ++ ++ error = NULL; ++ full_path = NULL; ++ res = g_key_file_load_from_dirs (key_file, ++ file, ++ search_dirs, ++ &full_path, ++ G_KEY_FILE_NONE, ++ &error); ++ if (! res) { ++ g_debug ("GdmSessionDirect: File '%s' not found: %s", file, error->message); ++ g_error_free (error); ++ if (command != NULL) { ++ *command = NULL; ++ } ++ goto out; ++ } ++ ++ error = NULL; ++ res = g_key_file_get_boolean (key_file, ++ G_KEY_FILE_DESKTOP_GROUP, ++ G_KEY_FILE_DESKTOP_KEY_HIDDEN, ++ &error); ++ if (error == NULL && res) { ++ g_debug ("GdmSessionDirect: Session %s is marked as hidden", file); ++ goto out; ++ } ++ ++ error = NULL; ++ exec = g_key_file_get_string (key_file, ++ G_KEY_FILE_DESKTOP_GROUP, ++ G_KEY_FILE_DESKTOP_KEY_TRY_EXEC, ++ &error); ++ if (exec == NULL) { ++ g_debug ("GdmSessionDirect: %s key not found", G_KEY_FILE_DESKTOP_KEY_TRY_EXEC); ++ goto out; ++ } ++ ++ res = is_prog_in_path (exec); ++ g_free (exec); ++ ++ if (! res) { ++ g_debug ("GdmSessionDirect: Command not found: %s", G_KEY_FILE_DESKTOP_KEY_TRY_EXEC); ++ goto out; ++ } ++ ++ error = NULL; ++ exec = g_key_file_get_string (key_file, ++ G_KEY_FILE_DESKTOP_GROUP, ++ G_KEY_FILE_DESKTOP_KEY_EXEC, ++ &error); ++ if (error != NULL) { ++ g_debug ("GdmSessionDirect: %s key not found: %s", ++ G_KEY_FILE_DESKTOP_KEY_EXEC, ++ error->message); ++ g_error_free (error); ++ goto out; ++ } ++ ++ if (command != NULL) { ++ *command = g_strdup (exec); ++ } ++ ret = TRUE; ++ ++out: ++ g_free (exec); ++ ++ return ret; ++} ++ ++static gboolean ++get_session_command_for_name (const char *name, ++ char **command) ++{ ++ gboolean res; ++ char *filename; ++ ++ filename = g_strdup_printf ("%s.desktop", name); ++ ++ command = NULL; ++ res = get_session_command_for_file (filename, command); ++ ++ return res; ++} ++ + static DBusHandlerResult + gdm_session_direct_handle_saved_session_name_read (GdmSessionDirect *session, + DBusConnection *connection, +@@ -862,6 +986,14 @@ gdm_session_direct_handle_saved_session_ + dbus_connection_send (connection, reply, NULL); + dbus_message_unref (reply); + ++ if (! get_session_command_for_name (session_name, NULL)) { ++ /* ignore sessions that don't exist */ ++ g_debug ("GdmSessionDirect: not using invalid .dmrc session: %s", session_name); ++ g_free (session->priv->saved_session); ++ session->priv->saved_session = NULL; ++ goto out; ++ } ++ + if (strcmp (session_name, + get_default_session_name (session)) != 0) { + g_free (session->priv->saved_session); +@@ -870,7 +1002,7 @@ gdm_session_direct_handle_saved_session_ + _gdm_session_default_session_name_changed (GDM_SESSION (session), + session_name); + } +- ++ out: + return DBUS_HANDLER_RESULT_HANDLED; + } + +@@ -1603,115 +1735,6 @@ send_environment (GdmSessionDirect *sess + session); + } + +-static gboolean +-is_prog_in_path (const char *prog) +-{ +- char *f; +- gboolean ret; +- +- f = g_find_program_in_path (prog); +- ret = (f != NULL); +- g_free (f); +- return ret; +-} +- +-static gboolean +-get_session_command_for_file (const char *file, +- char **command) +-{ +- GKeyFile *key_file; +- GError *error; +- char *full_path; +- char *exec; +- gboolean ret; +- gboolean res; +- const char *search_dirs[] = { +- "/etc/X11/sessions/", +- DMCONFDIR "/Sessions/", +- DATADIR "/gdm/BuiltInSessions/", +- DATADIR "/xsessions/", +- NULL +- }; +- +- exec = NULL; +- ret = FALSE; +- if (command != NULL) { +- *command = NULL; +- } +- +- key_file = g_key_file_new (); +- +- g_debug ("GdmSessionDirect: looking for session file '%s'", file); +- +- error = NULL; +- full_path = NULL; +- res = g_key_file_load_from_dirs (key_file, +- file, +- search_dirs, +- &full_path, +- G_KEY_FILE_NONE, +- &error); +- if (! res) { +- g_debug ("GdmSessionDirect: File '%s' not found: %s", file, error->message); +- g_error_free (error); +- if (command != NULL) { +- *command = NULL; +- } +- goto out; +- } +- +- error = NULL; +- res = g_key_file_get_boolean (key_file, +- G_KEY_FILE_DESKTOP_GROUP, +- G_KEY_FILE_DESKTOP_KEY_HIDDEN, +- &error); +- if (error == NULL && res) { +- g_debug ("GdmSessionDirect: Session %s is marked as hidden", file); +- goto out; +- } +- +- error = NULL; +- exec = g_key_file_get_string (key_file, +- G_KEY_FILE_DESKTOP_GROUP, +- G_KEY_FILE_DESKTOP_KEY_TRY_EXEC, +- &error); +- if (exec == NULL) { +- g_debug ("GdmSessionDirect: %s key not found", G_KEY_FILE_DESKTOP_KEY_TRY_EXEC); +- goto out; +- } +- +- res = is_prog_in_path (exec); +- g_free (exec); +- +- if (! res) { +- g_debug ("GdmSessionDirect: Command not found: %s", G_KEY_FILE_DESKTOP_KEY_TRY_EXEC); +- goto out; +- } +- +- error = NULL; +- exec = g_key_file_get_string (key_file, +- G_KEY_FILE_DESKTOP_GROUP, +- G_KEY_FILE_DESKTOP_KEY_EXEC, +- &error); +- if (error != NULL) { +- g_debug ("GdmSessionDirect: %s key not found: %s", +- G_KEY_FILE_DESKTOP_KEY_EXEC, +- error->message); +- g_error_free (error); +- goto out; +- } +- +- if (command != NULL) { +- *command = g_strdup (exec); +- } +- ret = TRUE; +- +-out: +- g_free (exec); +- +- return ret; +-} +- + static const char * + get_language_name (GdmSessionDirect *session) + { +@@ -1725,6 +1748,8 @@ get_language_name (GdmSessionDirect *ses + static const char * + get_session_name (GdmSessionDirect *session) + { ++ /* FIXME: test the session names before we use them? */ ++ + if (session->priv->selected_session != NULL) { + return session->priv->selected_session; + } diff --git a/gdm.spec b/gdm.spec index e5d98c7..5db6555 100644 --- a/gdm.spec +++ b/gdm.spec @@ -18,7 +18,7 @@ Summary: The GNOME Display Manager Name: gdm -Version: 2.21.7 +Version: 2.21.8 Release: 1%{?dist} Epoch: 1 License: GPLv2+ @@ -29,6 +29,9 @@ Source1: gdm-pam Source2: gdm-autologin-pam Source3: gdmsetup-pam +Patch1: gdm-2.21.8-fedora-logo.patch +Patch2: gdm-2.21.8-validate-dmrc.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Prereq: /usr/sbin/useradd @@ -98,12 +101,17 @@ several different X sessions on your local machine at the same time. %prep %setup -q +%patch1 -p1 -b .fedora-logo +%patch2 -p1 -b .validate-dmrc %build cp -f %{SOURCE1} data/gdm cp -f %{SOURCE2} data/gdm-autologin cp -f %{SOURCE3} utils/gdmsetup-pam +intltoolize --force +autoreconf + %configure --with-pam-prefix=%{_sysconfdir} \ --enable-console-helper \ --disable-scrollkeeper \ @@ -291,6 +299,9 @@ fi %attr(1770, root, gdm) %dir %{_localstatedir}/lib/gdm %changelog +* Mon Feb 25 2008 Jon McCann - 1:2.21.8-1 +- Update to 2.21.8 + * Tue Feb 12 2008 Jon McCann - 1:2.21.7-1 - Update to 2.21.7 diff --git a/sources b/sources index 9ad61e2..84b6ba0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -248c1ce8c8c5fb5065e5b11fc13f5000 gdm-2.21.7.tar.gz +5eecea9d8466bcab8790699685f28b0b gdm-2.21.8.tar.gz