From 634f28fa1fd2678d5b73b80367dc18acc929187e Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 12 Jun 2017 11:01:29 +0200 Subject: [PATCH] Fix sporadic crash in QXcbScreen::getOutputProperty() Although [0] claims "This request does never generate any errors", it seems I sometimes get back a NULL pointer from xcb_randr_get_output_property_reply(), leading to a segfault (in the qdatetimeedit auto-test). So check reply isn't NULL before dereferencing it. [0] https://www.systutorials.com/docs/linux/man/3-xcb_randr_get_output_property_reply/ Change-Id: Iadae835bb3017bf9bb40f180b75b0c391384f99b Reviewed-by: Gatis Paeglis --- src/plugins/platforms/xcb/qxcbscreen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp index 0bc38869ac..79f37bb028 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.cpp +++ b/src/plugins/platforms/xcb/qxcbscreen.cpp @@ -865,7 +865,7 @@ QByteArray QXcbScreen::getOutputProperty(xcb_atom_t atom) const xcb_randr_get_output_property(xcb_connection(), m_output, atom, XCB_ATOM_ANY, 0, 100, false, false); auto reply = xcb_randr_get_output_property_reply(xcb_connection(), cookie, nullptr); - if (reply->type == XCB_ATOM_INTEGER && reply->format == 8) { + if (reply && reply->type == XCB_ATOM_INTEGER && reply->format == 8) { quint8 *data = new quint8[reply->num_items]; memcpy(data, xcb_randr_get_output_property_data(reply), reply->num_items); result = QByteArray(reinterpret_cast(data), reply->num_items);