xcb: Avoid use-after-free in QXcbConnection::initializeScreens()
Extend the scope of the resources variable to avoid its destruction while it's still in use. Fixes: QTBUG-88512 Pick-to: 5.15 5.12 Change-Id: I3298aabc871ff455bd1203ec276e7600d3e151ef Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>bb10
parent
36b1d37cef
commit
86b8c5c3f3
|
|
@ -288,6 +288,8 @@ void QXcbConnection::initializeScreens()
|
|||
// RRGetScreenResources in this case.
|
||||
auto resources_current = Q_XCB_REPLY(xcb_randr_get_screen_resources_current,
|
||||
xcb_connection(), xcbScreen->root);
|
||||
decltype(Q_XCB_REPLY(xcb_randr_get_screen_resources,
|
||||
xcb_connection(), xcbScreen->root)) resources;
|
||||
if (!resources_current) {
|
||||
qWarning("failed to get the current screen resources");
|
||||
} else {
|
||||
|
|
@ -298,8 +300,8 @@ void QXcbConnection::initializeScreens()
|
|||
timestamp = resources_current->config_timestamp;
|
||||
outputs = xcb_randr_get_screen_resources_current_outputs(resources_current.get());
|
||||
} else {
|
||||
auto resources = Q_XCB_REPLY(xcb_randr_get_screen_resources,
|
||||
xcb_connection(), xcbScreen->root);
|
||||
resources = Q_XCB_REPLY(xcb_randr_get_screen_resources,
|
||||
xcb_connection(), xcbScreen->root);
|
||||
if (!resources) {
|
||||
qWarning("failed to get the screen resources");
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in New Issue