From 13d985489788fa5349b3457d6eb1c19bad8f37e9 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Tue, 20 Feb 2024 18:14:30 +0000 Subject: [PATCH] xdgpopup: fix UAF because of an invalid listener connection destroy should be connected to popup::destroy, not popup::surface::destroy... ref #4751 --- src/events/Popups.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/Popups.cpp b/src/events/Popups.cpp index bcdb1808..ae95bc5e 100644 --- a/src/events/Popups.cpp +++ b/src/events/Popups.cpp @@ -55,7 +55,7 @@ void addPopupGlobalCoords(void* pPopup, int* x, int* y) { void createNewPopup(wlr_xdg_popup* popup, SXDGPopup* pHyprPopup) { pHyprPopup->popup = popup; - pHyprPopup->hyprListener_destroyPopupXDG.initCallback(&popup->base->events.destroy, &Events::listener_destroyPopupXDG, pHyprPopup, "HyprPopup"); + pHyprPopup->hyprListener_destroyPopupXDG.initCallback(&popup->events.destroy, &Events::listener_destroyPopupXDG, pHyprPopup, "HyprPopup"); pHyprPopup->hyprListener_mapPopupXDG.initCallback(&popup->base->surface->events.map, &Events::listener_mapPopupXDG, pHyprPopup, "HyprPopup"); pHyprPopup->hyprListener_unmapPopupXDG.initCallback(&popup->base->surface->events.unmap, &Events::listener_unmapPopupXDG, pHyprPopup, "HyprPopup"); pHyprPopup->hyprListener_newPopupFromPopupXDG.initCallback(&popup->base->events.new_popup, &Events::listener_newPopupFromPopupXDG, pHyprPopup, "HyprPopup");