Disable all output leasing due to a wlroots UAF

This commit is contained in:
Consolatis 2025-07-05 00:19:33 +02:00 committed by Johan Malm
parent 4699d446cb
commit 38a1a9bbbc
2 changed files with 13 additions and 0 deletions

View file

@ -3,6 +3,7 @@
#define LABWC_MACROS_H
#include <limits.h>
#include <wlr/version.h>
/**
* ARRAY_SIZE() - Get the number of elements in array.
@ -61,4 +62,7 @@
#define BOUNDED_INT(a) ((a) < INT_MAX && (a) > INT_MIN)
#endif
#define LAB_WLR_VERSION_AT_LEAST(major, minor, micro) \
(WLR_VERSION_NUM >= (((major) << 16) | ((minor) << 8) | (micro)))
#endif /* LABWC_MACROS_H */

View file

@ -445,11 +445,20 @@ handle_new_output(struct wl_listener *listener, void *data)
* to use planes and present directly.
* This is also useful for debugging the DRM parts of
* another compositor.
*
* All drm leasing is disabled due to a UAF bug in wlroots.
* We assume that the fix will be backported to 0.19.1 and thus
* check for a version >= 0.19.1. See following link for the fix status:
* https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5104
*
* TODO: remove once labwc starts tracking 0.20.x and the fix has been merged.
*/
#if LAB_WLR_VERSION_AT_LEAST(0, 19, 1)
if (server->drm_lease_manager && wlr_output_is_drm(wlr_output)) {
wlr_drm_lease_v1_manager_offer_output(
server->drm_lease_manager, wlr_output);
}
#endif
/*
* Don't configure any non-desktop displays, such as VR headsets;