From f29955df819d176e269725557876fca38ecf10d7 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. --- .../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 e8f6638f105..fe7a8e946d1 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix @@ -47,6 +47,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 # Fix build with meson 0.61 # https://github.com/elementary/greeter/pull/590 (fetchpatch { 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 00000000000..ca6f6aab6d6 --- /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 + };