diff --git a/include/common/macros.h b/include/common/macros.h index 38ab45de..25226261 100644 --- a/include/common/macros.h +++ b/include/common/macros.h @@ -3,6 +3,7 @@ #define LABWC_MACROS_H #include +#include /** * 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 */ diff --git a/src/output.c b/src/output.c index 85157c7d..3b4a26ca 100644 --- a/src/output.c +++ b/src/output.c @@ -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;