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>
Date: Mon, 19 Sep 2011 22:16:25 +0000
Subject: daemon: add better unified authentication compatibility
Date: Mon, 26 Sep 2011 11:45:15 -0400
Subject: [PATCH] daemon: fix the legacy auth compatibility layer
The daemon and fallback greeter support --disable-split-authentication,
but the new shiny greeter doesn't. This posed a problem for
distributions that want to use the new shiny greeter (in an albeit
degraded mode) but don't yet have support at the system level for
split authentication.
In commit f91f017071ffa5f5999e6c2e2c0929e290482932 I
introduced a translation layer that keeps compatibility
for distros who build with --disable-split-authentication.
This commit adds a small amount of goo to make the split authentication
pam service names translate to the unified pam service name and
thus give the shell greeter a level of compatibility with
--disable-split-authentication.
The commit was somewhat faulty, though. I made some last
minute clean ups to the patch before committing that I didn't
fully test. Those cleanups resulted in the pam service name
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
index 6893c26..8d746c8 100644
--- 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)
daemon/gdm-greeter-server.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
+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
index 4c40a4e..4803bc3 100644
index 4803bc3..535fdbf 100644
--- a/daemon/gdm-greeter-server.c
+++ b/daemon/gdm-greeter-server.c
@@ -60,6 +60,8 @@ struct GdmGreeterServerPrivate
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,
@@ -486,7 +486,7 @@ handle_begin_verification (GdmGreeterServer *greeter_server,
dbus_connection_send (connection, reply, NULL);
dbus_message_unref (reply);
- g_signal_emit (greeter_server, signals [START_CONVERSATION], 0, service_name);
+ translated_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);
- 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], 0, service_name);
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_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);
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_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);
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_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) {
g_signal_emit (greeter_server, signals [START_SESSION_WHEN_READY], 0, service_name);
} 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

View File

@ -22,11 +22,11 @@
Name: gdm
License: GPLv2+
Group: System/GUI/GNOME
Version: 3.1.92
Version: 3.2.0
Release: 1
Summary: The GNOME Display Manager
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
Source2: gdm-autologin.pamd
Source3: gdm-welcome.pamd
@ -69,7 +69,7 @@ Patch35: gdm-xauthlocalhostname.patch
Patch40: gdm-look-at-runlevel.patch
# PATCH-FIX-OPENSUSE gdm-selinux.patch -- Small changes to make it compile fine with SELinux
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
BuildRequires: check-devel
BuildRequires: dbus-1-glib-devel
@ -237,7 +237,7 @@ translation-update-upstream
%patch35 -p0
%patch40 -p1
%patch60
%patch61 -p1 -R
%patch61 -p1
#gnome-patch-translation-update
%build