SHA256
1
0
forked from pool/gdm

Accepting request 85641 from GNOME:Factory

Pushing G:F

OBS-URL: https://build.opensuse.org/request/show/85641
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gdm?expand=0&rev=127
This commit is contained in:
Lars Vogdt 2011-10-02 08:02:24 +00:00 committed by Git OBS Bridge
commit 118cd42a33
5 changed files with 45 additions and 203 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:56c43b8875ecf75aa30e22f849233fa63fee22b759dcfea9098eddd547ad4f7c
size 2363614

3
gdm-3.2.0.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8a4986bdaeb8040644c76384af6f0f7f2346f51e93eabd7c1aaff272c167c102
size 2359531

View File

@ -1,227 +1,62 @@
From f91f017071ffa5f5999e6c2e2c0929e290482932 Mon Sep 17 00:00:00 2001 From 8874626358898d717ac2b7ee812eb039536deb80 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com> From: Ray Strode <rstrode@redhat.com>
Date: Mon, 19 Sep 2011 22:16:25 +0000 Date: Mon, 26 Sep 2011 11:45:15 -0400
Subject: daemon: add better unified authentication compatibility Subject: [PATCH] daemon: fix the legacy auth compatibility layer
The daemon and fallback greeter support --disable-split-authentication, In commit f91f017071ffa5f5999e6c2e2c0929e290482932 I
but the new shiny greeter doesn't. This posed a problem for introduced a translation layer that keeps compatibility
distributions that want to use the new shiny greeter (in an albeit for distros who build with --disable-split-authentication.
degraded mode) but don't yet have support at the system level for
split authentication.
This commit adds a small amount of goo to make the split authentication The commit was somewhat faulty, though. I made some last
pam service names translate to the unified pam service name and minute clean ups to the patch before committing that I didn't
thus give the shell greeter a level of compatibility with fully test. Those cleanups resulted in the pam service name
--disable-split-authentication. getting improperly translated and broke the compatibility layer
the commit introduced.
https://bugzilla.gnome.org/show_bug.cgi?id=658451
--- ---
diff --git a/configure.ac b/configure.ac daemon/gdm-greeter-server.c | 8 ++++----
index 6893c26..8d746c8 100644 1 files changed, 4 insertions(+), 4 deletions(-)
--- a/configure.ac
+++ b/configure.ac
@@ -234,6 +234,10 @@ AC_ARG_ENABLE(split-authentication,
enable_split_authentication=yes)
AM_CONDITIONAL(ENABLE_SPLIT_AUTHENTICATION, test x$enable_split_authentication = xyes)
+if test x$enable_split_authentication = xyes; then
+ AC_DEFINE(ENABLE_SPLIT_AUTHENTICATION, 1, [Define if split authentication is enabled])
+fi
+
AC_ARG_ENABLE(console-helper,
AS_HELP_STRING([--enable-console-helper],
[Enable PAM console helper @<:@default=auto@:>@]),,
diff --git a/daemon/gdm-greeter-server.c b/daemon/gdm-greeter-server.c diff --git a/daemon/gdm-greeter-server.c b/daemon/gdm-greeter-server.c
index 4c40a4e..4803bc3 100644 index 4803bc3..535fdbf 100644
--- a/daemon/gdm-greeter-server.c --- a/daemon/gdm-greeter-server.c
+++ b/daemon/gdm-greeter-server.c +++ b/daemon/gdm-greeter-server.c
@@ -60,6 +60,8 @@ struct GdmGreeterServerPrivate @@ -486,7 +486,7 @@ handle_begin_verification (GdmGreeterServer *greeter_server,
DBusServer *server;
char *server_address;
DBusConnection *greeter_connection;
+
+ guint using_legacy_service_name : 1;
};
enum {
@@ -246,11 +248,42 @@ send_dbus_void_signal (GdmGreeterServer *greeter_server,
dbus_message_unref (message);
}
+static const char *
+translate_outgoing_service_name (GdmGreeterServer *greeter_server,
+ const char *service_name)
+{
+#ifndef ENABLE_SPLIT_AUTHENTICATION
+ if (strcmp (service_name, "gdm") == 0 && greeter_server->priv->using_legacy_service_name) {
+ return "gdm-password";
+ }
+#endif
+
+ return service_name;
+}
+
+static const char *
+translate_incoming_service_name (GdmGreeterServer *greeter_server,
+ const char *service_name)
+{
+#ifndef ENABLE_SPLIT_AUTHENTICATION
+ if (strcmp (service_name, "gdm-password") == 0) {
+ g_debug ("GdmGreeterServer: Adjusting pam service from '%s' to 'gdm' for legacy compatibility", service_name);
+ service_name = "gdm";
+ greeter_server->priv->using_legacy_service_name = TRUE;
+ } else if (g_str_has_prefix (service_name, "gdm-") == 0 && strcmp (service_name, "gdm-autologin") != 0) {
+ g_debug ("GdmGreeterServer: Rejecting pam service '%s' for legacy compatibility", service_name);
+ return NULL;
+ }
+#endif
+ return service_name;
+}
+
gboolean
gdm_greeter_server_info_query (GdmGreeterServer *greeter_server,
const char *service_name,
const char *text)
{
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
send_dbus_string_string_signal (greeter_server, "InfoQuery", service_name, text);
return TRUE;
@@ -261,6 +294,7 @@ gdm_greeter_server_secret_info_query (GdmGreeterServer *greeter_server,
const char *service_name,
const char *text)
{
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
send_dbus_string_string_signal (greeter_server, "SecretInfoQuery", service_name, text);
return TRUE;
}
@@ -270,6 +304,7 @@ gdm_greeter_server_info (GdmGreeterServer *greeter_server,
const char *service_name,
const char *text)
{
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
send_dbus_string_string_signal (greeter_server, "Info", service_name, text);
return TRUE;
}
@@ -279,6 +314,7 @@ gdm_greeter_server_problem (GdmGreeterServer *greeter_server,
const char *service_name,
const char *text)
{
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
send_dbus_string_string_signal (greeter_server, "Problem", service_name, text);
return TRUE;
}
@@ -287,6 +323,7 @@ gboolean
gdm_greeter_server_authentication_failed (GdmGreeterServer *greeter_server,
const char *service_name)
{
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
send_dbus_string_signal (greeter_server, "AuthenticationFailed", service_name);
return TRUE;
}
@@ -295,6 +332,7 @@ gboolean
gdm_greeter_server_service_unavailable (GdmGreeterServer *greeter_server,
const char *service_name)
{
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
send_dbus_string_signal (greeter_server, "ServiceUnavailable", service_name);
return TRUE;
}
@@ -310,6 +348,7 @@ gboolean
gdm_greeter_server_ready (GdmGreeterServer *greeter_server,
const char *service_name)
{
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
send_dbus_string_signal (greeter_server, "Ready", service_name);
return TRUE;
}
@@ -318,6 +357,7 @@ gboolean
gdm_greeter_server_conversation_stopped (GdmGreeterServer *greeter_server,
const char *service_name)
{
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
send_dbus_string_signal (greeter_server, "ConversationStopped", service_name);
return TRUE;
}
@@ -355,6 +395,7 @@ void
gdm_greeter_server_session_opened (GdmGreeterServer *greeter_server,
const char *service_name)
{
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
send_dbus_string_signal (greeter_server, "SessionOpened", service_name);
}
@@ -394,6 +435,7 @@ handle_start_conversation (GdmGreeterServer *greeter_server,
DBusMessage *reply;
DBusError error;
const char *service_name;
+ const char *translated_service_name;
dbus_error_init (&error);
if (! dbus_message_get_args (message, &error,
@@ -409,7 +451,14 @@ handle_start_conversation (GdmGreeterServer *greeter_server,
dbus_connection_send (connection, reply, NULL); dbus_connection_send (connection, reply, NULL);
dbus_message_unref (reply); dbus_message_unref (reply);
- g_signal_emit (greeter_server, signals [START_CONVERSATION], 0, service_name); - service_name = translate_outgoing_service_name (greeter_server, service_name);
+ translated_service_name = translate_incoming_service_name (greeter_server, service_name); + service_name = translate_incoming_service_name (greeter_server, service_name);
+
+ if (translated_service_name == NULL) {
+ gdm_greeter_server_service_unavailable (greeter_server, service_name);
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+
+ g_signal_emit (greeter_server, signals [START_CONVERSATION], 0, translated_service_name);
return DBUS_HANDLER_RESULT_HANDLED;
}
@@ -437,6 +486,7 @@ handle_begin_verification (GdmGreeterServer *greeter_server,
dbus_connection_send (connection, reply, NULL);
dbus_message_unref (reply);
+ service_name = translate_outgoing_service_name (greeter_server, service_name);
g_signal_emit (greeter_server, signals [BEGIN_VERIFICATION], 0, service_name); g_signal_emit (greeter_server, signals [BEGIN_VERIFICATION], 0, service_name);
return DBUS_HANDLER_RESULT_HANDLED; return DBUS_HANDLER_RESULT_HANDLED;
@@ -494,6 +544,7 @@ handle_begin_verification_for_user (GdmGreeterServer *greeter_server, @@ -544,7 +544,7 @@ handle_begin_verification_for_user (GdmGreeterServer *greeter_server,
dbus_connection_send (connection, reply, NULL); dbus_connection_send (connection, reply, NULL);
dbus_message_unref (reply); dbus_message_unref (reply);
+ service_name = translate_outgoing_service_name (greeter_server, service_name); - service_name = translate_outgoing_service_name (greeter_server, service_name);
+ service_name = translate_incoming_service_name (greeter_server, service_name);
g_signal_emit (greeter_server, signals [BEGIN_VERIFICATION_FOR_USER], 0, service_name, text); g_signal_emit (greeter_server, signals [BEGIN_VERIFICATION_FOR_USER], 0, service_name, text);
return DBUS_HANDLER_RESULT_HANDLED; return DBUS_HANDLER_RESULT_HANDLED;
@@ -524,6 +575,7 @@ handle_answer_query (GdmGreeterServer *greeter_server, @@ -575,7 +575,7 @@ handle_answer_query (GdmGreeterServer *greeter_server,
dbus_connection_send (connection, reply, NULL); dbus_connection_send (connection, reply, NULL);
dbus_message_unref (reply); dbus_message_unref (reply);
+ service_name = translate_outgoing_service_name (greeter_server, service_name); - service_name = translate_outgoing_service_name (greeter_server, service_name);
+ service_name = translate_incoming_service_name (greeter_server, service_name);
g_signal_emit (greeter_server, signals [QUERY_ANSWER], 0, service_name, text); g_signal_emit (greeter_server, signals [QUERY_ANSWER], 0, service_name, text);
return DBUS_HANDLER_RESULT_HANDLED; return DBUS_HANDLER_RESULT_HANDLED;
@@ -711,6 +763,7 @@ handle_start_session_when_ready (GdmGreeterServer *greeter_server, @@ -763,7 +763,7 @@ handle_start_session_when_ready (GdmGreeterServer *greeter_server,
dbus_connection_send (connection, reply, NULL); dbus_connection_send (connection, reply, NULL);
dbus_message_unref (reply); dbus_message_unref (reply);
+ service_name = (char *) translate_outgoing_service_name (greeter_server, service_name); - service_name = (char *) translate_outgoing_service_name (greeter_server, service_name);
+ service_name = (char *) translate_incoming_service_name (greeter_server, service_name);
if (should_start_session) { if (should_start_session) {
g_signal_emit (greeter_server, signals [START_SESSION_WHEN_READY], 0, service_name); g_signal_emit (greeter_server, signals [START_SESSION_WHEN_READY], 0, service_name);
} else { } else {
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
index 38e7a84..b9165fd 100644
--- a/daemon/gdm-simple-slave.c
+++ b/daemon/gdm-simple-slave.c
@@ -1034,10 +1034,11 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server,
const char *service_name,
GdmSimpleSlave *slave)
{
- g_debug ("GdmSimpleSlave: starting conversation with '%s' pam service'", service_name);
if (slave->priv->greeter_reset_id > 0) {
return;
}
+
+ g_debug ("GdmSimpleSlave: starting conversation with '%s' pam service'", service_name);
gdm_session_start_conversation (GDM_SESSION (slave->priv->session),
service_name);
}
-- --
cgit v0.9.0.2 1.7.6.2

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Tue Sep 27 07:07:10 UTC 2011 - vuntz@opensuse.org
- Update to version 3.2.0:
+ Updated translations.
- Replace gdm-unified-auth.patch with the fix from upstream.
------------------------------------------------------------------- -------------------------------------------------------------------
Sat Sep 24 14:56:10 UTC 2011 - vuntz@opensuse.org Sat Sep 24 14:56:10 UTC 2011 - vuntz@opensuse.org

View File

@ -22,11 +22,11 @@
Name: gdm Name: gdm
License: GPLv2+ License: GPLv2+
Group: System/GUI/GNOME Group: System/GUI/GNOME
Version: 3.1.92 Version: 3.2.0
Release: 1 Release: 1
Summary: The GNOME Display Manager Summary: The GNOME Display Manager
Url: http://projects.gnome.org/gdm/ Url: http://projects.gnome.org/gdm/
Source: http://download.gnome.org/sources/gdm/3.1/%{name}-%{version}.tar.bz2 Source: http://download.gnome.org/sources/gdm/3.2/%{name}-%{version}.tar.bz2
Source1: gdm.pamd Source1: gdm.pamd
Source2: gdm-autologin.pamd Source2: gdm-autologin.pamd
Source3: gdm-welcome.pamd Source3: gdm-welcome.pamd
@ -69,7 +69,7 @@ Patch35: gdm-xauthlocalhostname.patch
Patch40: gdm-look-at-runlevel.patch Patch40: gdm-look-at-runlevel.patch
# PATCH-FIX-OPENSUSE gdm-selinux.patch -- Small changes to make it compile fine with SELinux # PATCH-FIX-OPENSUSE gdm-selinux.patch -- Small changes to make it compile fine with SELinux
Patch60: gdm-selinux.patch Patch60: gdm-selinux.patch
# PATCH-FIX-OPENSUSE gdm-unified-auth.patch dimstar@opensuse.org -- Revert "better unified authentication compatibility" # PATCH-FIX-OPENSUSE gdm-unified-auth.patch bgo#658451 vuntz@opensuse.org -- Fix "better unified authentication compatibility"
Patch61: gdm-unified-auth.patch Patch61: gdm-unified-auth.patch
BuildRequires: check-devel BuildRequires: check-devel
BuildRequires: dbus-1-glib-devel BuildRequires: dbus-1-glib-devel
@ -237,7 +237,7 @@ translation-update-upstream
%patch35 -p0 %patch35 -p0
%patch40 -p1 %patch40 -p1
%patch60 %patch60
%patch61 -p1 -R %patch61 -p1
#gnome-patch-translation-update #gnome-patch-translation-update
%build %build