diff -Nru gdm3-3.36.3/debian/changelog gdm3-3.36.3/debian/changelog --- gdm3-3.36.3/debian/changelog 2021-07-12 09:44:23.000000000 +0000 +++ gdm3-3.36.3/debian/changelog 2020-10-27 14:57:05.000000000 +0000 @@ -1,19 +1,3 @@ -gdm3 (3.36.3-0ubuntu0.20.04.4) focal; urgency=medium - - * debian/patches/ubuntu/reset-session-on-pam-error.patch: - - Backport upstream commit to fix ending up on a black screen when pam - session errors out. (LP: #1935818) - - -- Didier Roche Mon, 12 Jul 2021 11:44:23 +0200 - -gdm3 (3.36.3-0ubuntu0.20.04.3) focal; urgency=medium - - * debian/patches/git_display_segfault.patch: - - Backport crash fix when using Xvfb in some situations - (lp: #1861769) - - -- Sebastien Bacher Tue, 10 Nov 2020 13:27:10 +0100 - gdm3 (3.36.3-0ubuntu0.20.04.2) focal-security; urgency=medium * SECURITY UPDATE: gnome-initial-setup launch issue diff -Nru gdm3-3.36.3/debian/patches/git_display_segfault.patch gdm3-3.36.3/debian/patches/git_display_segfault.patch --- gdm3-3.36.3/debian/patches/git_display_segfault.patch 2020-11-10 12:27:10.000000000 +0000 +++ gdm3-3.36.3/debian/patches/git_display_segfault.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -From b7bbd224b0aef9d6c75c876153fdf778b5346fd9 Mon Sep 17 00:00:00 2001 -From 84b4f871e3d8276a102285ac83d21ef11256d6c3 Mon Sep 17 00:00:00 2001 -From: Benjamin Berg -Date: Fri, 21 Aug 2020 12:14:32 +0200 -Subject: manager: Fix possible crash by initializing display - -Some people insist on running sessions in ways where we cannot detect -them properly. In that case, we shouldn't find a display, but the -variable was not initialized and we could end up accessing random memory -resulting in a crash. - -Fix it by adding the missing initializer. ---- - daemon/gdm-manager.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: gdm/daemon/gdm-manager.c -=================================================================== ---- gdm.orig/daemon/gdm-manager.c -+++ gdm/daemon/gdm-manager.c -@@ -576,10 +576,11 @@ get_display_and_details_for_bus_sender ( - lookup_by_session_id, - (gpointer) session_id); - -+out: - if (out_display != NULL) { - *out_display = display; - } --out: -+ - g_free (session_id); - } - -@@ -811,7 +812,7 @@ gdm_manager_handle_register_session (Gdm - GVariant *details) - { - GdmManager *self = GDM_MANAGER (manager); -- GdmDisplay *display; -+ GdmDisplay *display = NULL; - const char *sender; - GDBusConnection *connection; - diff -Nru gdm3-3.36.3/debian/patches/series gdm3-3.36.3/debian/patches/series --- gdm3-3.36.3/debian/patches/series 2021-07-12 09:44:23.000000000 +0000 +++ gdm3-3.36.3/debian/patches/series 2020-10-27 14:57:01.000000000 +0000 @@ -13,5 +13,3 @@ ubuntu/prefer_ubuntu_session_fallback.patch ubuntu/gdm3.service-wait-for-drm-device-before-trying-to-start-i.patch CVE-2020-16125.patch -git_display_segfault.patch -ubuntu/reset-session-on-pam-error.patch diff -Nru gdm3-3.36.3/debian/patches/ubuntu/reset-session-on-pam-error.patch gdm3-3.36.3/debian/patches/ubuntu/reset-session-on-pam-error.patch --- gdm3-3.36.3/debian/patches/ubuntu/reset-session-on-pam-error.patch 2021-07-12 09:44:23.000000000 +0000 +++ gdm3-3.36.3/debian/patches/ubuntu/reset-session-on-pam-error.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,104 +0,0 @@ -From: Marco Trevisan -Date: Tue, 7 Aug 2018 11:15:57 +0100 -Subject: Only emit verification-complete on reauth or after session is opened - -Backport upstream fix: -We're currently emitting verification-complete signal as soon as we -got a positive authentication callback from the worker, however at this -point we've not opened the session yet, and if that fails we'll end up -in a scenario where gdm assumed that we're logging in, and so its -greeter is shut down and never restarted on its VT until we manually -switch back and forth from it. Meanwhile the session opening failure is -never exposed to the user. - -So, do not emit verification-completed on logins, until we've opened -the session. -However, re-order the session-opened callback events so that we keep -notifying verification-complete before than session-opened. - -Index: gdm3-3.36.3/daemon/gdm-session.c -=================================================================== ---- gdm3-3.36.3.orig/daemon/gdm-session.c -+++ gdm3-3.36.3/daemon/gdm-session.c -@@ -172,6 +172,7 @@ enum { - AUTHENTICATION_FAILED, - VERIFICATION_COMPLETE, - SESSION_OPENED, -+ SESSION_OPENED_FAILED, - SESSION_STARTED, - SESSION_START_FAILED, - SESSION_EXITED, -@@ -319,18 +320,18 @@ on_establish_credentials_cb (GdmDBusWork - service_name = g_strdup (conversation->service_name); - - if (worked) { -- if (self->user_verifier_interface != NULL) { -- gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface, -- service_name); -- g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name); -- } -- - switch (self->verification_mode) { - case GDM_SESSION_VERIFICATION_MODE_LOGIN: - case GDM_SESSION_VERIFICATION_MODE_CHOOSER: - gdm_session_open_session (self, service_name); - break; - case GDM_SESSION_VERIFICATION_MODE_REAUTHENTICATE: -+ if (self->user_verifier_interface != NULL) { -+ gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface, -+ service_name); -+ g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name); -+ } -+ break; - default: - break; - } -@@ -871,24 +872,24 @@ on_opened (GdmDBusWorker *worker, - - conversation->session_id = g_strdup (session_id); - -- if (self->greeter_interface != NULL) { -- gdm_dbus_greeter_emit_session_opened (self->greeter_interface, -- service_name); -- } -- - if (self->user_verifier_interface != NULL) { - gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface, - service_name); - g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name); - } - -+ if (self->greeter_interface != NULL) { -+ gdm_dbus_greeter_emit_session_opened (self->greeter_interface, -+ service_name); -+ } -+ - g_debug ("GdmSession: Emitting 'session-opened' signal"); - g_signal_emit (self, signals[SESSION_OPENED], 0, service_name, session_id); - } else { - report_and_stop_conversation (self, service_name, error); - - g_debug ("GdmSession: Emitting 'session-start-failed' signal"); -- g_signal_emit (self, signals[SESSION_START_FAILED], 0, service_name, error->message); -+ g_signal_emit (self, signals[SESSION_OPENED_FAILED], 0, service_name, error->message); - } - } - -@@ -3742,6 +3743,17 @@ gdm_session_class_init (GdmSessionClass - 2, - G_TYPE_STRING, - G_TYPE_STRING); -+ signals [SESSION_OPENED_FAILED] = -+ g_signal_new ("session-opened-failed", -+ GDM_TYPE_SESSION, -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, -+ NULL, -+ g_cclosure_marshal_generic, -+ G_TYPE_NONE, -+ 2, -+ G_TYPE_STRING, G_TYPE_STRING); - signals [SESSION_STARTED] = - g_signal_new ("session-started", - GDM_TYPE_SESSION,