From 35bedf2f8947a2423632fd0aa2f25ddb6bda0c15 Mon Sep 17 00:00:00 2001 From: Bobby Rong Date: Sun, 13 Feb 2022 17:24:33 +0800 Subject: [PATCH] pantheon.elementary-greeter: actually fix the crash Fixed a use-after-free issue where logged_in_context is used in update_style(). There are several reports for this but upstream has no action for this so far during the 6.x cycle. See the provided link for more details. (cherry picked from commit f29955df819d176e269725557876fca38ecf10d7) Note: the above is the original commit message, the patch has been accepted on upstream. --- .../desktop/elementary-greeter/default.nix | 3 +++ .../elementary-greeter/fix-crash.patch | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 pkgs/desktops/pantheon/desktop/elementary-greeter/fix-crash.patch diff --git a/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix b/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix index 18e00e63bccbc..a72c66d3b9457 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix @@ -94,6 +94,9 @@ stdenv.mkDerivation rec { src = ./hardcode-fallback-background.patch; default_wallpaper = "${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}"; }) + # https://github.com/NixOS/nixpkgs/issues/151609 + # https://github.com/elementary/greeter/issues/578#issuecomment-1030746697 + ./fix-crash.patch ]; preFixup = '' diff --git a/pkgs/desktops/pantheon/desktop/elementary-greeter/fix-crash.patch b/pkgs/desktops/pantheon/desktop/elementary-greeter/fix-crash.patch new file mode 100644 index 0000000000000..ca6f6aab6d606 --- /dev/null +++ b/pkgs/desktops/pantheon/desktop/elementary-greeter/fix-crash.patch @@ -0,0 +1,21 @@ +diff --git a/src/Cards/UserCard.vala b/src/Cards/UserCard.vala +index 83df22c..8cd917e 100644 +--- a/src/Cards/UserCard.vala ++++ b/src/Cards/UserCard.vala +@@ -42,6 +42,7 @@ public class Greeter.UserCard : Greeter.BaseCard { + private Gtk.Stack login_stack; + private Greeter.PasswordEntry password_entry; + ++ private SelectionCheck logged_in; + private unowned Gtk.StyleContext logged_in_context; + private weak Gtk.StyleContext main_grid_style_context; + private weak Gtk.StyleContext password_entry_context; +@@ -214,7 +215,7 @@ public class Greeter.UserCard : Greeter.BaseCard { + }; + avatar_overlay.add (avatar); + +- var logged_in = new SelectionCheck () { ++ logged_in = new SelectionCheck () { + halign = Gtk.Align.END, + valign = Gtk.Align.END + };