Ignore window icon in XCB when its size exceeds maximum request length

When setting a window icon with its data size exceeding
the value returned by xcb_get_maximum_request_length(), the application
fails with XCB error code 4 (Maximum allowed requested length exceeded).
This patch adds a check if icon_data.size() exceeds
xcb_get_maximum_request_length(). If that is the case the icon is being
ignored and a warning is logged.

Fixes: QTBUG-102628
Pick-to: 6.3 6.2 5.15
Change-Id: Id47a0833efd16cd29b030e8c880acb416cbc500b
Reviewed-by: Liang Qi <liang.qi@qt.io>
bb10
Axel Spoerl 2022-04-28 17:03:03 +02:00
parent 08a4fd3570
commit ebdaf8ef9c
1 changed files with 6 additions and 0 deletions

View File

@ -1328,6 +1328,12 @@ void QXcbWindow::setWindowIcon(const QIcon &icon)
}
if (!icon_data.isEmpty()) {
// Ignore icon exceeding maximum xcb request length
if (icon_data.size() > xcb_get_maximum_request_length(xcb_connection())) {
qWarning("Ignoring window icon: Size %llu exceeds maximum xcb request length %u.",
icon_data.size(), xcb_get_maximum_request_length(xcb_connection()));
return;
}
xcb_change_property(xcb_connection(),
XCB_PROP_MODE_REPLACE,
m_window,