diff --git a/modules/window-thumbnail/core/graphics-memory-buffer.cpp b/modules/window-thumbnail/core/graphics-memory-buffer.cpp index edaa00b931fef8643fe68c4bdfb7bbb44ff0a0a1..e6e1bdc9ab7411cdb9abdd045d078fbf2d437e33 100644 --- a/modules/window-thumbnail/core/graphics-memory-buffer.cpp +++ b/modules/window-thumbnail/core/graphics-memory-buffer.cpp @@ -101,7 +101,8 @@ bool GraphicsMemoryBuffer::createDmabufResources() EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT, EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT } }; - for (uint32_t i = 0; i < m_bufferInfo.n_planes; i++) { + const uint32_t planeCount = qMin(m_bufferInfo.n_planes, 4u); + for (uint32_t i = 0; i < planeCount; i++) { ADD_ATTRIB(attr_names[i].fd, m_bufferInfo.planes[i].fd); ADD_ATTRIB(attr_names[i].offset, m_bufferInfo.planes[i].offset); ADD_ATTRIB(attr_names[i].pitch, m_bufferInfo.planes[i].stride); diff --git a/platform/wayland/kywc-capture-manager.cpp b/platform/wayland/kywc-capture-manager.cpp index 2d536ed91ec03bedede7766f7249088727c57c9b..f8b1bb9cc48981a52030eb3b8ddbf886a1936b8c 100644 --- a/platform/wayland/kywc-capture-manager.cpp +++ b/platform/wayland/kywc-capture-manager.cpp @@ -195,6 +195,11 @@ void KywcCaptureFrame::Private::bufferWithPlaneCallback(void *data, kywc_capture return; } + if (index >= 4) { + close(fd); + return; + } + p->currentBuffer.planes[index].fd = fd; p->currentBuffer.planes[index].offset = offset; p->currentBuffer.planes[index].stride = stride;