From a9bfb7c924af2020d1a3c5ab6a0bccc43d2ef821 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Sat, 21 Jan 2023 14:54:14 +0100 Subject: [PATCH] idle-inhibit: fix use-after-free A user reported a crash that only reproduces when preloading a hardened malloc implementation. From the stack trace, this use-after-free seems to be the most likely cause. Yay hardened malloc! --- river/IdleInhibitor.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/river/IdleInhibitor.zig b/river/IdleInhibitor.zig index 6482222..2cebf97 100644 --- a/river/IdleInhibitor.zig +++ b/river/IdleInhibitor.zig @@ -28,7 +28,8 @@ fn handleDestroy(listener: *wl.Listener(*wlr.IdleInhibitorV1), _: *wlr.IdleInhib const node = @fieldParentPtr(std.TailQueue(Self).Node, "data", self); server.idle_inhibitor_manager.inhibitors.remove(node); - util.gpa.destroy(node); self.inhibitor_manager.idleInhibitCheckActive(); + + util.gpa.destroy(node); }