Update to gdm-3.34.1.

This commit is contained in:
ajacoutot 2019-11-02 15:34:07 +00:00
parent b3d907f02d
commit 3d5b297869
18 changed files with 351 additions and 177 deletions

View File

@ -1,10 +1,9 @@
# $OpenBSD: Makefile,v 1.279 2019/07/07 11:20:51 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.280 2019/11/02 15:34:07 ajacoutot Exp $
COMMENT= GNOME display manager
GNOME_PROJECT= gdm
GNOME_VERSION= 3.32.0
REVISION= 0
GNOME_VERSION= 3.34.1
DISTFILES= ${DISTNAME}${EXTRACT_SUFX} puflogh1000X248.gif:0
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
@ -54,7 +53,7 @@ LIB_DEPENDS= audio/libcanberra,-gtk3 \
security/openpam \
sysutils/accountsservice
MODGNOME_TOOLS += gobject-introspection gtk-update-icon-cache yelp
MODGNOME_TOOLS= gobject-introspection yelp
MODGNOME_CPPFLAGS= -I${X11BASE}/include -DHAS_SA_LEN
MODGNOME_LDFLAGS= -L${X11BASE}/lib
@ -62,6 +61,7 @@ CONFIGURE_STYLE= gnu
CONFIGURE_ARGS= --mandir=${PREFIX}/man \
--disable-systemd-journal \
--disable-user-display-server \
--without-systemd \
--without-plymouth \
--with-lang-file=${SYSCONFDIR}/gdm/locale.conf \
@ -99,6 +99,7 @@ pre-configure:
autoreconf -fi
post-install:
${INSTALL_DATA_DIR} ${PREFIX}/share/pixmaps/
${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/puflogh1000X248.gif \
${PREFIX}/share/pixmaps/
rm -r ${WRKINST}/var/run/gdm ${WRKINST}/rules.d

View File

@ -1,4 +1,4 @@
SHA256 (gnome/gdm-3.32.0.tar.xz) = ZD2wyMUImpYoK0wlm4gjym360erW8tACXRwSEdNv14s=
SHA256 (gnome/gdm-3.34.1.tar.xz) = 6F32V6qNk2GvT7EiAU2PEjqTv+RadmL7orNz2Dnb2NM=
SHA256 (gnome/puflogh1000X248.gif) = /Cl2kyuX6zQVfYO41Zjey65xUZ28V2as8j9eS13SG6k=
SIZE (gnome/gdm-3.32.0.tar.xz) = 1262344
SIZE (gnome/gdm-3.34.1.tar.xz) = 1244960
SIZE (gnome/puflogh1000X248.gif) = 28427

View File

@ -1,4 +1,10 @@
$OpenBSD: patch-common_gdm-common_c,v 1.6 2019/01/18 05:51:51 ajacoutot Exp $
$OpenBSD: patch-common_gdm-common_c,v 1.7 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From fcba1e1a5d556ce7b52101dbd2d1ba4a19469161 Mon Sep 17 00:00:00 2001
From: Iain Lane <iain@orangesquash.org.uk>
Date: Fri, 5 Jan 2018 11:53:34 +0000
Subject: [PATCH] manager: Find user's current graphical session, not session of caller
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
@ -359,7 +365,7 @@ Index: common/gdm-common.c
{
gboolean ret;
int res, i;
@@ -476,8 +779,8 @@ out:
@@ -476,15 +779,14 @@ out:
}
static gboolean
@ -370,7 +376,27 @@ Index: common/gdm-common.c
{
gboolean ret;
int res;
@@ -531,9 +834,9 @@ goto_login_session (GDBusConnection *connection,
char *our_session;
char *session_id;
char *seat_id;
- GError *local_error = NULL;
ret = FALSE;
session_id = NULL;
@@ -497,8 +799,10 @@ goto_login_session (GDBusConnection *connection,
* since the data allocated is from libsystemd-logind, which
* does not use GLib's g_malloc (). */
- if (!gdm_find_display_session_for_uid (getuid (), &our_session, &local_error)) {
- g_propagate_prefixed_error (error, local_error, _("Could not identify the current session: "));
+ res = sd_pid_get_session (0, &our_session);
+ if (res < 0) {
+ g_debug ("failed to determine own session: %s", strerror (-res));
+ g_set_error (error, GDM_COMMON_ERROR, 0, _("Could not identify the current session."));
return FALSE;
}
@@ -530,9 +834,9 @@ goto_login_session (GDBusConnection *connection,
return FALSE;
}
@ -382,7 +408,7 @@ Index: common/gdm-common.c
if (res) {
ret = TRUE;
@@ -552,6 +855,7 @@ goto_login_session (GDBusConnection *connection,
@@ -551,6 +855,7 @@ goto_login_session (GDBusConnection *connection,
return ret;
}
@ -390,7 +416,7 @@ Index: common/gdm-common.c
gboolean
gdm_goto_login_session (GError **error)
@@ -567,7 +871,17 @@ gdm_goto_login_session (GError **error)
@@ -566,7 +871,17 @@ gdm_goto_login_session (GError **error)
return FALSE;
}
@ -409,3 +435,118 @@ Index: common/gdm-common.c
}
static void
@@ -841,114 +1156,4 @@ gdm_shell_expand (const char *str,
}
}
return g_string_free (s, FALSE);
-}
-
-static gboolean
-_systemd_session_is_graphical (const char *session_id)
-{
- const gchar * const graphical_session_types[] = { "wayland", "x11", "mir", NULL };
- int saved_errno;
- g_autofree gchar *type = NULL;
-
- saved_errno = sd_session_get_type (session_id, &type);
- if (saved_errno < 0) {
- g_warning ("Couldn't get type for session '%s': %s",
- session_id,
- g_strerror (-saved_errno));
- return FALSE;
- }
-
- if (!g_strv_contains (graphical_session_types, type)) {
- g_debug ("Session '%s' is not a graphical session (type: '%s')",
- session_id,
- type);
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gboolean
-_systemd_session_is_active (const char *session_id)
-{
- const gchar * const active_states[] = { "active", "online", NULL };
- int saved_errno;
- g_autofree gchar *state = NULL;
-
- /*
- * display sessions can be 'closing' if they are logged out but some
- * processes are lingering; we shouldn't consider these (this is
- * checking for a race condition since we specified
- * GDM_SYSTEMD_SESSION_REQUIRE_ONLINE)
- */
- saved_errno = sd_session_get_state (session_id, &state);
- if (saved_errno < 0) {
- g_warning ("Couldn't get state for session '%s': %s",
- session_id,
- g_strerror (-saved_errno));
- return FALSE;
- }
-
- if (!g_strv_contains (active_states, state)) {
- g_debug ("Session '%s' is not active or online", session_id);
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gdm_find_display_session_for_uid (const uid_t uid,
- char **out_session_id,
- GError **error)
-{
- char *local_session_id = NULL;
- g_auto(GStrv) sessions = NULL;
- int n_sessions;
-
- g_return_val_if_fail (out_session_id != NULL, FALSE);
-
- g_debug ("Finding a graphical session for user %d", uid);
-
- n_sessions = sd_uid_get_sessions (uid,
- GDM_SYSTEMD_SESSION_REQUIRE_ONLINE,
- &sessions);
-
- if (n_sessions < 0) {
- g_set_error (error,
- GDM_COMMON_ERROR,
- 0,
- "Failed to get sessions for user %d",
- uid);
- return FALSE;
- }
-
- for (int i = 0; i < n_sessions; ++i) {
- g_debug ("Considering session '%s'", sessions[i]);
-
- if (!_systemd_session_is_graphical (sessions[i]))
- continue;
-
- if (!_systemd_session_is_active (sessions[i]))
- continue;
-
- /*
- * We get the sessions from newest to oldest, so take the last
- * one we find that's good
- */
- local_session_id = sessions[i];
- }
-
- if (local_session_id == NULL) {
- g_set_error (error,
- GDM_COMMON_ERROR,
- 0,
- "Could not find a graphical session for user %d",
- uid);
- return FALSE;
- }
-
- *out_session_id = g_strdup (local_session_id);
-
- return TRUE;
}

View File

@ -1,4 +1,10 @@
$OpenBSD: patch-common_gdm-common_h,v 1.3 2019/01/18 05:51:51 ajacoutot Exp $
$OpenBSD: patch-common_gdm-common_h,v 1.4 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From fcba1e1a5d556ce7b52101dbd2d1ba4a19469161 Mon Sep 17 00:00:00 2001
From: Iain Lane <iain@orangesquash.org.uk>
Date: Fri, 5 Jan 2018 11:53:34 +0000
Subject: [PATCH] manager: Find user's current graphical session, not session of caller
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
@ -9,17 +15,30 @@ Subject: require logind support
Index: common/gdm-common.h
--- common/gdm-common.h.orig
+++ common/gdm-common.h
@@ -33,6 +33,9 @@
expr; \
} while G_UNLIKELY (errno == EINTR);
@@ -37,6 +37,11 @@
#define GDM_SYSTEMD_SESSION_REQUIRE_ONLINE 0
+/* check if logind is running */
+#define LOGIND_RUNNING() (access("/run/systemd/seats/", F_OK) >= 0)
+
+#define GDM_SYSTEMD_SESSION_REQUIRE_ONLINE 0
+
GQuark gdm_common_error_quark (void);
#define GDM_COMMON_ERROR gdm_common_error_quark()
@@ -72,10 +75,6 @@ gboolean gdm_shell_var_is_valid_char (char c,
@@ -51,10 +56,6 @@ int gdm_wait_on_and_disown_pid (int pid,
int gdm_signal_pid (int pid,
int signal);
-gboolean gdm_find_display_session_for_uid (const uid_t uid,
- char **out_session_id,
- GError **error);
-
gboolean gdm_get_pwent_for_name (const char *name,
struct passwd **pwentp);
@@ -81,10 +82,6 @@ gboolean gdm_shell_var_is_valid_char (char c,
char * gdm_shell_expand (const char *str,
GdmExpandVarFunc expand_func,
gpointer user_data);

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-configure_ac,v 1.16 2019/01/18 05:51:51 ajacoutot Exp $
$OpenBSD: patch-configure_ac,v 1.17 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - Linux-PAM
From 714b6af29b916ac7da0cdab6f83460574ed49cf2 Mon Sep 17 00:00:00 2001
@ -17,7 +17,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=722482
Index: configure.ac
--- configure.ac.orig
+++ configure.ac
@@ -223,12 +223,6 @@ AM_CONDITIONAL(ENABLE_EXHERBO_PAM_CONFIG, test x$with_
@@ -224,12 +224,6 @@ AM_CONDITIONAL(ENABLE_EXHERBO_PAM_CONFIG, test x$with_
AM_CONDITIONAL(ENABLE_LFS_PAM_CONFIG, test x$with_default_pam_config = xlfs)
AM_CONDITIONAL(ENABLE_ARCH_PAM_CONFIG, test x$with_default_pam_config = xarch)
@ -30,7 +30,7 @@ Index: configure.ac
AC_ARG_ENABLE(console-helper,
AS_HELP_STRING([--enable-console-helper],
[Enable PAM console helper @<:@default=auto@:>@]),,
@@ -258,6 +252,17 @@ AC_ARG_WITH([udevdir],
@@ -259,6 +253,17 @@ AC_ARG_WITH([udevdir],
AS_HELP_STRING([--with-udevdir=DIR],
[Directory for udev files]),
[with_udevdir=$withval], [with_udevdir=$($PKG_CONFIG --variable=udevdir udev)])
@ -48,7 +48,7 @@ Index: configure.ac
AC_ARG_WITH([systemdsystemunitdir],
AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
[Directory for systemd service files]),
@@ -529,6 +534,8 @@ fi
@@ -530,6 +535,8 @@ fi
if test "x$supports_pam_extensions" = "xyes" ; then
AM_CONDITIONAL(SUPPORTS_PAM_EXTENSIONS, true)
AC_DEFINE(SUPPORTS_PAM_EXTENSIONS, 1, [Define if PAM supports GDMs custom extensions])
@ -57,7 +57,7 @@ Index: configure.ac
fi
AC_CHECK_LIB(keyutils, keyctl_read, [
@@ -612,14 +619,8 @@ dnl --------------------------------------------------
@@ -613,14 +620,8 @@ dnl --------------------------------------------------
dnl - Check for utmp stuff
dnl ---------------------------------------------------------------------------
@ -74,7 +74,7 @@ Index: configure.ac
AC_CHECK_LIB(util, logwtmp, [
AC_DEFINE(HAVE_LOGWTMP, 1, [Define if have logwtmp])
EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
@@ -828,12 +829,42 @@ AC_SUBST(XINERAMA_LIBS)
@@ -829,12 +830,42 @@ AC_SUBST(XINERAMA_LIBS)
CPPFLAGS="$xinerama_save_cppflags"
dnl ---------------------------------------------------------------------------
@ -133,7 +133,7 @@ Index: configure.ac
AC_ARG_WITH(gnome-settings-daemon-directory,
[AC_HELP_STRING([--with-gnome-settings-daemon-directory],
[Specify the directory of gnome-settings-daemon used by the chooser @<:@default=libexecdir@:>@])],,
@@ -1494,6 +1533,7 @@ echo "
@@ -1490,6 +1529,7 @@ echo "
dmconfdir: ${dmconfdir}
localstatedir: ${localstatedir}
datadir: ${datadir}
@ -141,7 +141,7 @@ Index: configure.ac
gnome-settings-daemon location: ${with_gnome_settings_daemon_directory}
gnome-session-check-accel location: ${with_check_accelerated_directory}
source code location: ${srcdir}
@@ -1524,6 +1564,8 @@ echo \
@@ -1520,6 +1560,8 @@ echo \
" Xinerama support: ${XINERAMA_SUPPORT}
XDMCP support: ${XDMCP_SUPPORT}
SELinux support: ${use_selinux}
@ -150,7 +150,7 @@ Index: configure.ac
systemd unit dir: ${with_systemdsystemunitdir}
udev dir: ${with_udevdir}
plymouth support: ${use_plymouth}
@@ -1533,3 +1575,4 @@ echo \
@@ -1529,3 +1571,4 @@ echo \
Enable documentation: ${enable_documentation}
Install GDM's Xsession: ${enable_gdm_xsession}
"

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-daemon_Makefile_am,v 1.3 2017/11/05 02:17:07 ajacoutot Exp $
$OpenBSD: patch-daemon_Makefile_am,v 1.4 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
@ -17,7 +17,7 @@ Index: daemon/Makefile.am
$(DISABLE_DEPRECATED_CFLAGS) \
$(DAEMON_CFLAGS) \
$(XLIB_CFLAGS) \
@@ -267,6 +268,11 @@ EXTRA_gdm_SOURCES = \
@@ -278,6 +279,11 @@ EXTRA_gdm_SOURCES = \
$(XDMCP_SOURCES) \
$(NULL)
@ -29,7 +29,7 @@ Index: daemon/Makefile.am
gdm_LDADD = \
$(top_builddir)/common/libgdmcommon.la \
$(XLIB_LIBS) \
@@ -277,6 +283,10 @@ gdm_LDADD = \
@@ -288,6 +294,10 @@ gdm_LDADD = \
$(JOURNALD_LIBS) \
$(EXTRA_DAEMON_LIBS) \
$(NULL)

View File

@ -1,11 +1,11 @@
$OpenBSD: patch-daemon_gdm-display_c,v 1.7 2019/05/08 21:32:35 ajacoutot Exp $
$OpenBSD: patch-daemon_gdm-display_c,v 1.8 2019/11/02 15:34:07 ajacoutot Exp $
XXX fix+push upstream
Index: daemon/gdm-display.c
--- daemon/gdm-display.c.orig
+++ daemon/gdm-display.c
@@ -241,8 +241,8 @@ setup_xhost_auth (XHostAddress *host_entr
@@ -242,8 +242,8 @@ setup_xhost_auth (XHostAddress *host_entr
host_entries[1].address = "localuser\0" GDM_USERNAME;
host_entries[1].length = sizeof ("localuser\0" GDM_USERNAME);
host_entries[2].family = FamilyServerInterpreted;
@ -16,11 +16,3 @@ Index: daemon/gdm-display.c
}
gboolean
@@ -1720,7 +1720,6 @@ void
gdm_display_stop_greeter_session (GdmDisplay *self)
{
GdmDisplayPrivate *priv;
- GError *error = NULL;
priv = gdm_display_get_instance_private (self);

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-daemon_gdm-launch-environment_c,v 1.9 2019/01/18 05:51:51 ajacoutot Exp $
$OpenBSD: patch-daemon_gdm-launch-environment_c,v 1.10 2019/11/02 15:34:07 ajacoutot Exp $
XXX fix+push upstream
@ -26,7 +26,7 @@ Index: daemon/gdm-launch-environment.c
#define GDM_SESSION_MODE "gdm"
#define INITIAL_SETUP_SESSION_MODE "initial-setup"
#define GNOME_SESSION_SESSIONS_PATH DATADIR "/gnome-session/sessions"
@@ -214,6 +214,9 @@ build_launch_environment (GdmLaunchEnvironment *launch
@@ -212,6 +212,9 @@ build_launch_environment (GdmLaunchEnvironment *launch
char *seat_id;
seat_id = launch_environment->priv->x11_display_seat_id;
@ -36,7 +36,7 @@ Index: daemon/gdm-launch-environment.c
g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
}
@@ -239,6 +242,8 @@ on_session_setup_complete (GdmSession *session,
@@ -237,6 +240,8 @@ on_session_setup_complete (GdmSession *session,
gdm_session_set_environment_variable (launch_environment->priv->session, key, value);
}
g_hash_table_destroy (hash);

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-daemon_gdm-local-display-factory_c,v 1.12 2019/05/08 21:58:04 ajacoutot Exp $
$OpenBSD: patch-daemon_gdm-local-display-factory_c,v 1.13 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
@ -44,7 +44,7 @@ Index: daemon/gdm-local-display-factory.c
+#endif
#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER)
char *tty_of_active_vt;
unsigned int active_vt;
@@ -87,7 +93,9 @@ static void on_display_status_changed
GParamSpec *arg1,
GdmLocalDisplayFactory *factory);
@ -64,7 +64,7 @@ Index: daemon/gdm-local-display-factory.c
display = gdm_local_display_new ();
if (gdm_local_display_factory_use_wayland ())
g_object_set (G_OBJECT (display), "session-type", "wayland", NULL);
@@ -343,7 +351,7 @@ on_display_status_changed (GdmDisplay *dis
@@ -370,7 +378,7 @@ on_display_status_changed (GdmDisplay *dis
/* reset num failures */
factory->num_failures = 0;
@ -73,7 +73,7 @@ Index: daemon/gdm-local-display-factory.c
}
break;
case GDM_DISPLAY_FAILED:
@@ -430,15 +438,19 @@ create_display (GdmLocalDisplayFactory *factory,
@@ -464,15 +472,19 @@ create_display (GdmLocalDisplayFactory *factory,
{
GdmDisplayStore *store;
GdmDisplay *display = NULL;
@ -93,7 +93,7 @@ Index: daemon/gdm-local-display-factory.c
display = gdm_display_store_find (store, lookup_by_seat_id, (gpointer) seat_id);
/* Ensure we don't create the same display more than once */
@@ -447,6 +459,7 @@ create_display (GdmLocalDisplayFactory *factory,
@@ -481,6 +493,7 @@ create_display (GdmLocalDisplayFactory *factory,
return NULL;
}
@ -101,7 +101,7 @@ Index: daemon/gdm-local-display-factory.c
/* If we already have a login window, switch to it */
if (gdm_get_login_window_session_id (seat_id, &login_session_id)) {
GdmDisplay *display;
@@ -460,14 +473,15 @@ create_display (GdmLocalDisplayFactory *factory,
@@ -494,14 +507,15 @@ create_display (GdmLocalDisplayFactory *factory,
g_object_set (G_OBJECT (display), "status", GDM_DISPLAY_MANAGED, NULL);
g_debug ("GdmLocalDisplayFactory: session %s found, activating.",
login_session_id);
@ -119,7 +119,7 @@ Index: daemon/gdm-local-display-factory.c
if (g_strcmp0 (seat_id, "seat0") == 0) {
display = gdm_local_display_new ();
if (session_type != NULL) {
@@ -499,6 +513,7 @@ create_display (GdmLocalDisplayFactory *factory,
@@ -533,6 +547,7 @@ create_display (GdmLocalDisplayFactory *factory,
return display;
}
@ -127,15 +127,15 @@ Index: daemon/gdm-local-display-factory.c
static void
delete_display (GdmLocalDisplayFactory *factory,
const char *seat_id) {
@@ -839,6 +854,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla
g_clear_pointer (&factory->tty_of_active_vt, g_free);
@@ -911,6 +926,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla
}
#endif
}
+#endif
static void
on_display_added (GdmDisplayStore *display_store,
@@ -872,6 +888,7 @@ static gboolean
@@ -944,6 +960,7 @@ static gboolean
gdm_local_display_factory_start (GdmDisplayFactory *base_factory)
{
GdmLocalDisplayFactory *factory = GDM_LOCAL_DISPLAY_FACTORY (base_factory);
@ -143,7 +143,7 @@ Index: daemon/gdm-local-display-factory.c
GdmDisplayStore *store;
g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE);
@@ -890,8 +907,17 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba
@@ -962,8 +979,17 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba
factory,
0);
@ -163,7 +163,7 @@ Index: daemon/gdm-local-display-factory.c
}
static gboolean
@@ -902,7 +928,9 @@ gdm_local_display_factory_stop (GdmDisplayFactory *bas
@@ -974,7 +1000,9 @@ gdm_local_display_factory_stop (GdmDisplayFactory *bas
g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE);
@ -173,7 +173,7 @@ Index: daemon/gdm-local-display-factory.c
store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
@@ -1054,7 +1082,9 @@ gdm_local_display_factory_finalize (GObject *object)
@@ -1126,7 +1154,9 @@ gdm_local_display_factory_finalize (GObject *object)
g_hash_table_destroy (factory->used_display_numbers);

View File

@ -1,4 +1,10 @@
$OpenBSD: patch-daemon_gdm-manager_c,v 1.22 2019/02/27 03:18:40 ajacoutot Exp $
$OpenBSD: patch-daemon_gdm-manager_c,v 1.23 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From fcba1e1a5d556ce7b52101dbd2d1ba4a19469161 Mon Sep 17 00:00:00 2001
From: Iain Lane <iain@orangesquash.org.uk>
Date: Fri, 5 Jan 2018 11:53:34 +0000
Subject: [PATCH] manager: Find user's current graphical session, not session of caller
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From 21905303afbd508f3bf599ad219c9209413c53a2 Mon Sep 17 00:00:00 2001
@ -57,7 +63,7 @@ Index: daemon/gdm-manager.c
typedef struct
{
GdmManager *manager;
@@ -204,9 +215,10 @@ plymouth_quit_without_transition (void)
@@ -205,9 +216,10 @@ plymouth_quit_without_transition (void)
}
#endif
@ -70,7 +76,7 @@ Index: daemon/gdm-manager.c
{
char *session, *gsession;
int ret;
@@ -231,11 +243,61 @@ get_session_id_for_pid (pid_t pid,
@@ -232,11 +244,61 @@ get_session_id_for_pid (pid_t pid,
return NULL;
}
}
@ -135,7 +141,7 @@ Index: daemon/gdm-manager.c
{
int ret;
@@ -252,8 +314,62 @@ get_uid_for_session_id (const char *session_id,
@@ -253,8 +315,62 @@ get_uid_for_session_id (const char *session_id,
return TRUE;
}
@ -198,7 +204,7 @@ Index: daemon/gdm-manager.c
lookup_by_session_id (const char *id,
GdmDisplay *display,
gpointer user_data)
@@ -265,11 +381,51 @@ lookup_by_session_id (const char *id,
@@ -266,11 +382,51 @@ lookup_by_session_id (const char *id,
return g_strcmp0 (current, looking_for) == 0;
}
@ -253,7 +259,7 @@ Index: daemon/gdm-manager.c
char *session_class = NULL;
int ret;
@@ -293,29 +449,49 @@ is_login_session (GdmManager *self,
@@ -294,29 +450,49 @@ is_login_session (GdmManager *self,
g_free (session_class);
return TRUE;
}
@ -310,7 +316,7 @@ Index: daemon/gdm-manager.c
g_dbus_error_get_remote_error (error), error->message);
g_error_free (error);
return FALSE;
@@ -325,7 +501,119 @@ session_unlock (GdmManager *manager,
@@ -326,7 +502,119 @@ session_unlock (GdmManager *manager,
return TRUE;
}
@ -430,7 +436,7 @@ Index: daemon/gdm-manager.c
static GdmSession *
find_session_for_user_on_seat (GdmManager *manager,
const char *username,
@@ -373,11 +661,44 @@ find_session_for_user_on_seat (GdmManager *manager,
@@ -374,11 +662,44 @@ find_session_for_user_on_seat (GdmManager *manager,
return NULL;
}
@ -478,7 +484,7 @@ Index: daemon/gdm-manager.c
char *seat;
int ret;
gboolean is_remote;
@@ -402,10 +723,12 @@ is_remote_session (GdmManager *self,
@@ -403,10 +724,12 @@ is_remote_session (GdmManager *self,
return is_remote;
}
@ -493,7 +499,7 @@ Index: daemon/gdm-manager.c
{
int ret;
char *seat, *out_seat;
@@ -430,11 +753,85 @@ get_seat_id_for_session_id (const char *session_id,
@@ -431,11 +754,85 @@ get_seat_id_for_session_id (const char *session_id,
return out_seat;
}
@ -581,7 +587,7 @@ Index: daemon/gdm-manager.c
int ret;
char *tty, *out_tty;
@@ -457,7 +854,21 @@ get_tty_for_session_id (const char *session_id,
@@ -458,7 +855,21 @@ get_tty_for_session_id (const char *session_id,
return out_tty;
}
@ -603,16 +609,22 @@ Index: daemon/gdm-manager.c
static void
get_display_and_details_for_bus_sender (GdmManager *self,
GDBusConnection *connection,
@@ -500,7 +911,7 @@ get_display_and_details_for_bus_sender (GdmManager
@@ -501,11 +912,10 @@ get_display_and_details_for_bus_sender (GdmManager
goto out;
}
- session_id = get_session_id_for_pid (pid, &error);
- ret = gdm_find_display_session_for_uid (caller_uid, &session_id, &error);
+ session_id = get_session_id_for_pid (connection, pid, &error);
if (session_id == NULL) {
g_debug ("GdmManager: Error while retrieving session id for sender: %s",
@@ -514,7 +925,7 @@ get_display_and_details_for_bus_sender (GdmManager
- if (!ret) {
- g_debug ("GdmManager: Unable to find display session for uid %d: %s",
- (int) caller_uid,
+ if (session_id == NULL) {
+ g_debug ("GdmManager: Error while retrieving session id for sender: %s",
error->message);
g_error_free (error);
goto out;
@@ -516,7 +926,7 @@ get_display_and_details_for_bus_sender (GdmManager
}
if (out_is_login_screen != NULL) {
@ -621,7 +633,7 @@ Index: daemon/gdm-manager.c
if (error != NULL) {
g_debug ("GdmManager: Error while checking if sender is login screen: %s",
@@ -524,7 +935,7 @@ get_display_and_details_for_bus_sender (GdmManager
@@ -526,7 +936,7 @@ get_display_and_details_for_bus_sender (GdmManager
}
}
@ -630,7 +642,7 @@ Index: daemon/gdm-manager.c
g_debug ("GdmManager: Error while retrieving uid for session: %s",
error->message);
g_error_free (error);
@@ -541,7 +952,7 @@ get_display_and_details_for_bus_sender (GdmManager
@@ -543,7 +953,7 @@ get_display_and_details_for_bus_sender (GdmManager
}
if (out_seat_id != NULL) {
@ -639,7 +651,7 @@ Index: daemon/gdm-manager.c
if (error != NULL) {
g_debug ("GdmManager: Error while retrieving seat id for session: %s",
@@ -551,7 +962,7 @@ get_display_and_details_for_bus_sender (GdmManager
@@ -553,7 +963,7 @@ get_display_and_details_for_bus_sender (GdmManager
}
if (out_is_remote != NULL) {
@ -648,7 +660,7 @@ Index: daemon/gdm-manager.c
if (error != NULL) {
g_debug ("GdmManager: Error while retrieving remoteness for session: %s",
@@ -607,7 +1018,7 @@ switch_to_compatible_user_session (GdmManager *manager
@@ -609,7 +1019,7 @@ switch_to_compatible_user_session (GdmManager *manager
if (existing_session != NULL) {
ssid_to_activate = gdm_session_get_session_id (existing_session);
if (seat_id != NULL) {
@ -657,7 +669,7 @@ Index: daemon/gdm-manager.c
if (! res) {
g_debug ("GdmManager: unable to activate session: %s", ssid_to_activate);
goto out;
@@ -709,29 +1120,6 @@ out:
@@ -711,29 +1121,6 @@ out:
return recorded;
}
@ -687,7 +699,7 @@ Index: daemon/gdm-manager.c
static gboolean
gdm_manager_handle_register_display (GdmDBusManager *manager,
GDBusMethodInvocation *invocation,
@@ -771,7 +1159,7 @@ gdm_manager_handle_register_display (GdmDBusManager
@@ -773,7 +1160,7 @@ gdm_manager_handle_register_display (GdmDBusManager
}
}
@ -696,7 +708,7 @@ Index: daemon/gdm-manager.c
if (session != NULL) {
GPid pid;
@@ -949,7 +1337,8 @@ on_reauthentication_client_rejected (GdmSession
@@ -980,7 +1367,8 @@ on_reauthentication_client_rejected (GdmSession
* same audit session, ignore it since it doesn't "own" the
* reauthentication session
*/
@ -706,7 +718,7 @@ Index: daemon/gdm-manager.c
NULL);
session_id = g_object_get_data (G_OBJECT (session), "caller-session-id");
@@ -1167,16 +1556,19 @@ static gboolean
@@ -1199,16 +1587,19 @@ static gboolean
display_is_on_seat0 (GdmDisplay *display)
{
gboolean is_on_seat0 = TRUE;
@ -733,7 +745,7 @@ Index: daemon/gdm-manager.c
return is_on_seat0;
}
@@ -1998,11 +2390,57 @@ on_user_session_died (GdmSession *session,
@@ -2031,11 +2422,57 @@ on_user_session_died (GdmSession *session,
}
static char *
@ -793,7 +805,7 @@ Index: daemon/gdm-manager.c
}
static void
@@ -2011,25 +2449,6 @@ on_session_reauthenticated (GdmSession *session,
@@ -2044,25 +2481,6 @@ on_session_reauthenticated (GdmSession *session,
GdmManager *manager)
{
gboolean fail_if_already_switched = FALSE;

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-daemon_gdm-session-record_c,v 1.10 2018/08/15 13:49:01 ajacoutot Exp $
$OpenBSD: patch-daemon_gdm-session-record_c,v 1.11 2019/11/02 15:34:07 ajacoutot Exp $
https://bugzilla.gnome.org/show_bug.cgi?id=722482
@ -32,7 +32,7 @@ Index: daemon/gdm-session-record.c
#if !defined(GDM_NEW_SESSION_RECORDS_FILE)
# if defined(WTMPX_FILE)
# define GDM_NEW_SESSION_RECORDS_FILE WTMPX_FILE
@@ -170,6 +183,84 @@ record_set_line (UTMP *u,
@@ -168,6 +181,84 @@ record_set_line (UTMP *u,
g_debug ("using ut_line %.*s", (int) sizeof (u->ut_line), u->ut_line);
}
@ -117,7 +117,7 @@ Index: daemon/gdm-session-record.c
void
gdm_session_record_login (GPid session_pid,
const char *user_name,
@@ -216,8 +307,9 @@ gdm_session_record_login (GPid sessio
@@ -214,8 +305,9 @@ gdm_session_record_login (GPid sessio
setutxent();
pututxline (&session_record);
endutxent();
@ -129,7 +129,7 @@ Index: daemon/gdm-session-record.c
#endif
}
@@ -261,8 +353,8 @@ gdm_session_record_logout (GPid sessi
@@ -259,8 +351,8 @@ gdm_session_record_logout (GPid sessi
setutxent();
pututxline (&session_record);
endutxent();

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-daemon_gdm-session-worker_c,v 1.19 2019/01/18 05:51:51 ajacoutot Exp $
$OpenBSD: patch-daemon_gdm-session-worker_c,v 1.20 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
@ -58,7 +58,7 @@ Index: daemon/gdm-session-worker.c
#endif
#ifndef GDM_SESSION_ROOT_UID
@@ -136,6 +140,10 @@ struct GdmSessionWorkerPrivate
@@ -125,6 +129,10 @@ struct GdmSessionWorkerPrivate
int exit_code;
@ -69,7 +69,7 @@ Index: daemon/gdm-session-worker.c
pam_handle_t *pam_handle;
GPid child_pid;
@@ -150,6 +158,7 @@ struct GdmSessionWorkerPrivate
@@ -139,6 +147,7 @@ struct GdmSessionWorkerPrivate
char *hostname;
char *username;
char *log_file;
@ -77,9 +77,9 @@ Index: daemon/gdm-session-worker.c
char *session_id;
uid_t uid;
gid_t gid;
@@ -223,6 +232,204 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker,
G_IMPLEMENT_INTERFACE (GDM_DBUS_TYPE_WORKER,
worker_interface_init))
@@ -213,6 +222,204 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker,
worker_interface_init)
G_ADD_PRIVATE (GdmSessionWorker))
+#ifdef WITH_CONSOLE_KIT
+static gboolean
@ -282,7 +282,7 @@ Index: daemon/gdm-session-worker.c
/* adapted from glib script_execute */
static void
script_execute (const gchar *file,
@@ -674,7 +881,9 @@ gdm_session_worker_process_pam_message (GdmSessionWork
@@ -664,7 +871,9 @@ gdm_session_worker_process_pam_message (GdmSessionWork
char *user_answer;
gboolean res;
char *utf8_msg;
@ -292,7 +292,7 @@ Index: daemon/gdm-session-worker.c
if (response != NULL) {
*response = NULL;
@@ -878,6 +1087,7 @@ gdm_session_worker_stop_auditor (GdmSessionWorker *wor
@@ -868,6 +1077,7 @@ gdm_session_worker_stop_auditor (GdmSessionWorker *wor
worker->priv->auditor = NULL;
}
@ -300,45 +300,15 @@ Index: daemon/gdm-session-worker.c
static void
on_release_display (int signal)
{
@@ -1020,6 +1230,7 @@ jump_to_vt (GdmSessionWorker *worker,
@@ -1010,6 +1220,7 @@ jump_to_vt (GdmSessionWorker *worker,
close (active_vt_tty_fd);
}
+#endif
static void
gdm_session_worker_uninitialize_pam (GdmSessionWorker *worker,
@@ -1050,11 +1261,13 @@ gdm_session_worker_uninitialize_pam (GdmSessionWorker
gdm_session_worker_stop_auditor (worker);
+#ifdef WITH_SYSTEMD
if (g_strcmp0 (worker->priv->display_seat_id, "seat0") == 0) {
if (worker->priv->login_vt != worker->priv->session_vt) {
jump_to_vt (worker, worker->priv->login_vt);
}
}
+#endif
worker->priv->login_vt = 0;
worker->priv->session_vt = 0;
@@ -1105,6 +1318,7 @@ _get_xauth_for_pam (const char *x11_authority_file)
}
#endif
+#ifdef WITH_SYSTEMD
static gboolean
ensure_login_vt (GdmSessionWorker *worker)
{
@@ -1130,6 +1344,7 @@ out:
close (fd);
return got_login_vt;
}
+#endif
static gboolean
gdm_session_worker_initialize_pam (GdmSessionWorker *worker,
@@ -1146,7 +1361,6 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
gdm_session_worker_set_state (GdmSessionWorker *worker,
@@ -1126,7 +1337,6 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
{
struct pam_conv pam_conversation;
int error_code;
@ -346,7 +316,7 @@ Index: daemon/gdm-session-worker.c
g_assert (worker->priv->pam_handle == NULL);
@@ -1213,10 +1427,12 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
@@ -1193,10 +1403,12 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
}
}
@ -360,23 +330,22 @@ Index: daemon/gdm-session-worker.c
if (strcmp (service, "gdm-launch-environment") == 0) {
gdm_session_worker_set_environment_variable (worker, "XDG_SESSION_CLASS", "greeter");
@@ -1225,6 +1441,7 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
@@ -1205,12 +1417,14 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
g_debug ("GdmSessionWorker: state SETUP_COMPLETE");
worker->priv->state = GDM_SESSION_WORKER_STATE_SETUP_COMPLETE;
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE);
+#ifdef WITH_SYSTEMD
/* Temporarily set PAM_TTY with the currently active VT (login screen)
/* Temporarily set PAM_TTY with the login VT,
PAM_TTY will be reset with the users VT right before the user session is opened */
if (ensure_login_vt (worker)) {
@@ -1233,6 +1450,7 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
}
g_snprintf (tty_string, 256, "/dev/tty%d", GDM_INITIAL_VT);
pam_set_item (worker->priv->pam_handle, PAM_TTY, tty_string);
if (!display_is_local)
worker->priv->password_is_required = TRUE;
+#endif
out:
if (error_code != PAM_SUCCESS) {
@@ -1528,7 +1746,7 @@ _lookup_passwd_info (const char *username,
@@ -1506,7 +1720,7 @@ _lookup_passwd_info (const char *username,
if (passwd_entry->pw_shell != NULL && passwd_entry->pw_shell[0] != '\0') {
*shellp = g_strdup (passwd_entry->pw_shell);
} else {
@ -385,7 +354,7 @@ Index: daemon/gdm-session-worker.c
}
}
ret = TRUE;
@@ -1781,6 +1999,26 @@ gdm_session_worker_get_environment (GdmSessionWorker *
@@ -1759,6 +1973,26 @@ gdm_session_worker_get_environment (GdmSessionWorker *
return (const char * const *) pam_getenvlist (worker->priv->pam_handle);
}
@ -412,7 +381,7 @@ Index: daemon/gdm-session-worker.c
static gboolean
run_script (GdmSessionWorker *worker,
const char *dir)
@@ -1811,6 +2049,9 @@ session_worker_child_watch (GPid pid,
@@ -1789,6 +2023,9 @@ session_worker_child_watch (GPid pid,
: WIFSIGNALED (status) ? WTERMSIG (status)
: -1);
@ -422,7 +391,7 @@ Index: daemon/gdm-session-worker.c
gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS);
@@ -2001,6 +2242,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
@@ -1979,6 +2216,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
error_code = PAM_SUCCESS;
@ -430,7 +399,7 @@ Index: daemon/gdm-session-worker.c
/* If we're in new vt mode, jump to the new vt now. There's no need to jump for
* the other two modes: in the logind case, the session will activate itself when
* ready, and in the reuse server case, we're already on the correct VT. */
@@ -2009,6 +2251,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
@@ -1987,6 +2225,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
jump_to_vt (worker, worker->priv->session_vt);
}
}
@ -438,7 +407,7 @@ Index: daemon/gdm-session-worker.c
if (!worker->priv->is_program_session && !run_script (worker, GDMCONFDIR "/PostLogin")) {
g_set_error (error,
@@ -2071,6 +2314,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
@@ -2049,6 +2288,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
_exit (EXIT_FAILURE);
}
@ -446,7 +415,7 @@ Index: daemon/gdm-session-worker.c
/* Take control of the tty
*/
if (needs_controlling_terminal) {
@@ -2078,6 +2322,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
@@ -2056,6 +2296,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
g_debug ("GdmSessionWorker: could not take control of tty: %m");
}
}
@ -454,7 +423,7 @@ Index: daemon/gdm-session-worker.c
#ifdef HAVE_LOGINCAP
if (setusercontext (NULL, passwd_entry, passwd_entry->pw_uid, LOGIN_SETALL) < 0) {
@@ -2209,11 +2454,13 @@ gdm_session_worker_start_session (GdmSessionWorker *w
@@ -2187,11 +2428,13 @@ gdm_session_worker_start_session (GdmSessionWorker *w
return TRUE;
}
@ -468,7 +437,7 @@ Index: daemon/gdm-session-worker.c
int session_vt = 0;
fd = open ("/dev/tty0", O_RDWR | O_NOCTTY);
@@ -2223,6 +2470,11 @@ set_up_for_new_vt (GdmSessionWorker *worker)
@@ -2201,6 +2444,11 @@ set_up_for_new_vt (GdmSessionWorker *worker)
return FALSE;
}
@ -478,9 +447,9 @@ Index: daemon/gdm-session-worker.c
+ }
+
if (worker->priv->display_is_initial) {
session_vt = atoi (GDM_INITIAL_VT);
session_vt = GDM_INITIAL_VT;
} else {
@@ -2232,6 +2484,7 @@ set_up_for_new_vt (GdmSessionWorker *worker)
@@ -2210,6 +2458,7 @@ set_up_for_new_vt (GdmSessionWorker *worker)
}
}
@ -488,7 +457,7 @@ Index: daemon/gdm-session-worker.c
worker->priv->session_vt = session_vt;
close (fd);
@@ -2294,6 +2547,7 @@ fail:
@@ -2272,6 +2521,7 @@ fail:
close (fd);
return FALSE;
}
@ -496,7 +465,7 @@ Index: daemon/gdm-session-worker.c
static gboolean
set_up_for_current_vt (GdmSessionWorker *worker,
@@ -2361,12 +2615,14 @@ set_up_for_current_vt (GdmSessionWorker *worker,
@@ -2339,12 +2589,14 @@ set_up_for_current_vt (GdmSessionWorker *worker,
}
#endif
@ -511,7 +480,7 @@ Index: daemon/gdm-session-worker.c
return TRUE;
out:
@@ -2392,6 +2648,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
@@ -2370,6 +2622,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
break;
case GDM_SESSION_DISPLAY_MODE_NEW_VT:
case GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED:
@ -519,7 +488,7 @@ Index: daemon/gdm-session-worker.c
if (!set_up_for_new_vt (worker)) {
g_set_error (error,
GDM_SESSION_WORKER_ERROR,
@@ -2399,6 +2656,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
@@ -2377,6 +2630,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
"Unable to open VT");
return FALSE;
}
@ -527,9 +496,9 @@ Index: daemon/gdm-session-worker.c
break;
}
@@ -2421,8 +2679,18 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
@@ -2399,8 +2653,18 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
g_debug ("GdmSessionWorker: state SESSION_OPENED");
worker->priv->state = GDM_SESSION_WORKER_STATE_SESSION_OPENED;
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SESSION_OPENED);
+#ifdef WITH_SYSTEMD
session_id = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_ID");
@ -546,7 +515,7 @@ Index: daemon/gdm-session-worker.c
if (session_id != NULL) {
g_free (worker->priv->session_id);
worker->priv->session_id = session_id;
@@ -2527,6 +2795,19 @@ gdm_session_worker_handle_set_session_name (GdmDBusWor
@@ -2508,6 +2772,19 @@ gdm_session_worker_handle_set_session_name (GdmDBusWor
}
static gboolean
@ -566,7 +535,7 @@ Index: daemon/gdm-session-worker.c
gdm_session_worker_handle_set_session_display_mode (GdmDBusWorker *object,
GDBusMethodInvocation *invocation,
const char *str)
@@ -2953,6 +3234,7 @@ gdm_session_worker_handle_open (GdmDBusWorker
@@ -2934,6 +3211,7 @@ gdm_session_worker_handle_open (GdmDBusWorker
return TRUE;
}
@ -574,7 +543,7 @@ Index: daemon/gdm-session-worker.c
static char **
filter_extensions (const char * const *extensions)
{
@@ -2978,6 +3260,7 @@ filter_extensions (const char * const *extensions)
@@ -2959,6 +3237,7 @@ filter_extensions (const char * const *extensions)
return filtered_extensions;
}
@ -582,7 +551,7 @@ Index: daemon/gdm-session-worker.c
static gboolean
gdm_session_worker_handle_initialize (GdmDBusWorker *object,
@@ -2997,8 +3280,10 @@ gdm_session_worker_handle_initialize (GdmDBusWorker
@@ -2978,8 +3257,10 @@ gdm_session_worker_handle_initialize (GdmDBusWorker
while (g_variant_iter_loop (&iter, "{sv}", &key, &value)) {
if (g_strcmp0 (key, "service") == 0) {
worker->priv->service = g_variant_dup_string (value, NULL);
@ -593,7 +562,7 @@ Index: daemon/gdm-session-worker.c
} else if (g_strcmp0 (key, "username") == 0) {
worker->priv->username = g_variant_dup_string (value, NULL);
} else if (g_strcmp0 (key, "is-program-session") == 0) {
@@ -3438,6 +3723,7 @@ worker_interface_init (GdmDBusWorkerIface *interface)
@@ -3419,6 +3700,7 @@ worker_interface_init (GdmDBusWorkerIface *interface)
interface->handle_open = gdm_session_worker_handle_open;
interface->handle_set_language_name = gdm_session_worker_handle_set_language_name;
interface->handle_set_session_name = gdm_session_worker_handle_set_session_name;

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-daemon_gdm-session_c,v 1.20 2019/05/08 21:58:04 ajacoutot Exp $
$OpenBSD: patch-daemon_gdm-session_c,v 1.21 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
@ -15,7 +15,7 @@ Subject: session: drop session-type property
Index: daemon/gdm-session.c
--- daemon/gdm-session.c.orig
+++ daemon/gdm-session.c
@@ -3189,6 +3189,10 @@ gdm_session_bypasses_xsession (GdmSession *self)
@@ -3228,6 +3228,10 @@ gdm_session_bypasses_xsession (GdmSession *self)
g_return_val_if_fail (self != NULL, FALSE);
g_return_val_if_fail (GDM_IS_SESSION (self), FALSE);
@ -26,7 +26,7 @@ Index: daemon/gdm-session.c
#ifdef ENABLE_WAYLAND_SUPPORT
if (gdm_session_is_wayland_session (self)) {
bypasses_xsession = TRUE;
@@ -3281,6 +3285,27 @@ gdm_session_select_program (GdmSession *self,
@@ -3320,6 +3324,27 @@ gdm_session_select_program (GdmSession *self,
g_free (self->selected_program);
self->selected_program = g_strdup (text);

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-daemon_gdm-session_h,v 1.5 2019/05/08 21:32:35 ajacoutot Exp $
$OpenBSD: patch-daemon_gdm-session_h,v 1.6 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From a9cacb929470eb82582396984c61d5b611bfeb1a Mon Sep 17 00:00:00 2001
@ -9,7 +9,7 @@ Subject: session: drop session-type property
Index: daemon/gdm-session.h
--- daemon/gdm-session.h.orig
+++ daemon/gdm-session.h
@@ -121,6 +121,8 @@ void gdm_session_answer_query
@@ -122,6 +122,8 @@ void gdm_session_answer_query
const char *text);
void gdm_session_select_program (GdmSession *session,
const char *command_line);

View File

@ -1,9 +1,9 @@
$OpenBSD: patch-data_Makefile_am,v 1.8 2019/05/08 21:32:35 ajacoutot Exp $
$OpenBSD: patch-data_Makefile_am,v 1.9 2019/11/02 15:34:07 ajacoutot Exp $
Index: data/Makefile.am
--- data/Makefile.am.orig
+++ data/Makefile.am
@@ -222,6 +222,7 @@ if ENABLE_GDM_XSESSION
@@ -220,6 +220,7 @@ if ENABLE_GDM_XSESSION
Xsession: $(srcdir)/Xsession.in
sed -e 's,[@]XSESSION_SHELL[@],$(XSESSION_SHELL),g' \
-e 's,[@]libexecdir[@],$(libexecdir),g' \

View File

@ -0,0 +1,19 @@
$OpenBSD: patch-libgdm_Makefile_am,v 1.1 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From fcba1e1a5d556ce7b52101dbd2d1ba4a19469161 Mon Sep 17 00:00:00 2001
From: Iain Lane <iain@orangesquash.org.uk>
Date: Fri, 5 Jan 2018 11:53:34 +0000
Subject: [PATCH] manager: Find user's current graphical session, not session of caller
Index: libgdm/Makefile.am
--- libgdm/Makefile.am.orig
+++ libgdm/Makefile.am
@@ -66,7 +66,6 @@ libgdm_la_LDFLAGS =
$(END_OF_LIST)
libgdm_la_LIBADD = \
- $(top_builddir)/common/libgdmcommon.la \
$(LIBGDM_LIBS) \
$(SYSTEMD_LIBS) \
$(END_OF_LIST)

View File

@ -1,4 +1,10 @@
$OpenBSD: patch-libgdm_gdm-user-switching_c,v 1.2 2019/01/18 05:51:51 ajacoutot Exp $
$OpenBSD: patch-libgdm_gdm-user-switching_c,v 1.3 2019/11/02 15:34:07 ajacoutot Exp $
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From fcba1e1a5d556ce7b52101dbd2d1ba4a19469161 Mon Sep 17 00:00:00 2001
From: Iain Lane <iain@orangesquash.org.uk>
Date: Fri, 5 Jan 2018 11:53:34 +0000
Subject: [PATCH] manager: Find user's current graphical session, not session of caller
REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
@ -366,7 +372,7 @@ Index: libgdm/gdm-user-switching.c
{
gboolean ret;
int res, i;
@@ -182,9 +487,9 @@ out:
@@ -182,16 +487,15 @@ out:
}
static gboolean
@ -379,7 +385,29 @@ Index: libgdm/gdm-user-switching.c
{
gboolean ret;
int res;
@@ -238,9 +543,9 @@ goto_login_session (GDBusConnection *connection,
char *our_session;
char *session_id;
char *seat_id;
- GError *local_error = NULL;
ret = FALSE;
session_id = NULL;
@@ -203,9 +507,12 @@ goto_login_session (GDBusConnection *connection,
/* Note that we mostly use free () here, instead of g_free ()
* since the data allocated is from libsystemd-logind, which
* does not use GLib's g_malloc (). */
- if (!gdm_find_display_session_for_uid (getuid (), &our_session, &local_error)) {
- g_propagate_prefixed_error (error, local_error, _("Could not identify the current session: "));
+ res = sd_pid_get_session (0, &our_session);
+ if (res < 0) {
+ g_debug ("failed to determine own session: %s", strerror (-res));
+ g_set_error (error, GDM_CLIENT_ERROR, 0, _("Could not identify the current session."));
+
return FALSE;
}
@@ -236,9 +543,9 @@ goto_login_session (GDBusConnection *connection,
return FALSE;
}
@ -391,7 +419,7 @@ Index: libgdm/gdm-user-switching.c
if (res) {
ret = TRUE;
@@ -259,10 +564,11 @@ goto_login_session (GDBusConnection *connection,
@@ -257,10 +564,11 @@ goto_login_session (GDBusConnection *connection,
return ret;
}
@ -404,7 +432,7 @@ Index: libgdm/gdm-user-switching.c
{
GDBusConnection *connection;
gboolean retval;
@@ -271,8 +577,23 @@ gdm_goto_login_session_sync (GCancellable *cancellabl
@@ -269,8 +577,23 @@ gdm_goto_login_session_sync (GCancellable *cancellabl
if (!connection)
return FALSE;

View File

@ -1,4 +1,4 @@
@comment $OpenBSD: PLIST,v 1.94 2019/05/08 21:32:35 ajacoutot Exp $
@comment $OpenBSD: PLIST,v 1.95 2019/11/02 15:34:08 ajacoutot Exp $
@comment starts a full gnome-session as _gdm which requires a valid homedir
@newgroup _gdm:676
@newuser _gdm:676:_gdm:daemon:GNOME Display Manager:/var/db/gdm:/sbin/nologin
@ -203,9 +203,6 @@ share/help/zh_CN/
share/help/zh_CN/gdm/
share/help/zh_CN/gdm/index.docbook
share/help/zh_CN/gdm/legal.xml
share/icons/hicolor/16x16/apps/gdm-xnest.png
share/icons/hicolor/32x32/apps/gdm-setup.png
share/icons/hicolor/32x32/apps/gdm-xnest.png
share/locale/af/LC_MESSAGES/gdm.mo
share/locale/am/LC_MESSAGES/gdm.mo
share/locale/an/LC_MESSAGES/gdm.mo
@ -269,6 +266,9 @@ share/locale/lv/LC_MESSAGES/gdm.mo
share/locale/mai/LC_MESSAGES/gdm.mo
share/locale/mg/LC_MESSAGES/gdm.mo
share/locale/mi/LC_MESSAGES/gdm.mo
share/locale/mjw/
share/locale/mjw/LC_MESSAGES/
share/locale/mjw/LC_MESSAGES/gdm.mo
share/locale/mk/LC_MESSAGES/gdm.mo
share/locale/ml/LC_MESSAGES/gdm.mo
share/locale/mn/LC_MESSAGES/gdm.mo
@ -314,12 +314,6 @@ share/locale/zh_HK/LC_MESSAGES/gdm.mo
share/locale/zh_TW/LC_MESSAGES/gdm.mo
share/locale/zu/LC_MESSAGES/gdm.mo
share/pixmaps/
share/pixmaps/gdm-foot-logo.png
share/pixmaps/gdm-setup.png
share/pixmaps/gdm-xnest.png
share/pixmaps/gdm.png
share/pixmaps/nobody.png
share/pixmaps/nohost.png
share/pixmaps/puflogh1000X248.gif
@mode 0755
@sample /var/log/gdm/
@ -328,5 +322,4 @@ share/pixmaps/puflogh1000X248.gif
@sample /var/cache/gdm/
@group
@mode
@tag gtk-update-icon-cache %D/share/icons/hicolor
@tag glib-compile-schemas