From 9b3f71390c3db14fd2fa2ff14d533eee34538c55 Mon Sep 17 00:00:00 2001 From: heather7283 <142042427+heather7283@users.noreply.github.com> Date: Fri, 24 Jan 2025 19:51:31 +0400 Subject: [PATCH] layershell: check if layer is valid (#9156) fixes compositor crash when client tried to create a layer surface with invalid layer argument --- src/protocols/LayerShell.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/protocols/LayerShell.cpp b/src/protocols/LayerShell.cpp index 1533a7c0..c88dc925 100644 --- a/src/protocols/LayerShell.cpp +++ b/src/protocols/LayerShell.cpp @@ -233,6 +233,11 @@ void CLayerShellProtocol::onGetLayerSurface(CZwlrLayerShellV1* pMgr, uint32_t id return; } + if UNLIKELY (layer > ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY) { + pMgr->error(ZWLR_LAYER_SHELL_V1_ERROR_INVALID_LAYER, "Invalid layer"); + return; + } + const auto RESOURCE = m_vLayers.emplace_back(makeShared(makeShared(CLIENT, pMgr->version(), id), SURF, namespace_, PMONITOR, layer)); if UNLIKELY (!RESOURCE->good()) {