glx: Fix SEGV due to dereferencing a NULL ptr from XCB-GLX.
When run in optirun, applications that linked to
libGLX.so and then proceeded
to querying Mesa for extension strings caused a SEGV in Mesa.
glXQueryExtensionsString was calling a chain of functions that
eventually led to
__glXQueryServerString. This function would call
The latter for some unknown reason returned
NULL. Passing this
xcb_glx_query_server_string_string_length would cause a SEGV as the
function tried to dereference it.
The reason behind the function returning
NULL is yet to be determined,
however, simply checking that the ptr is not
NULL resolves this. A
similar check has been added to
__glXGetString for completeness sake,
although not immediately necessary.
In addition to that, we stumbled into a similar problem in
AllocAndFetchScreenConfigs which tries to access the configs to free
__glXQueryServerString fails. This, of course, SEGVs, because
the configs are yet to have been allocated. Simply continuing past the configs
if their config ptrs are
NULL resolves this. We also switch to
make sure that the config ptrs are
NULL by default, and not some uninitialized
Cc: email@example.com Fixes: 24b8a8cf "glx: implement __glXGetString, hide __glXGetStringFromServer" Fixes: cb3610e3 "Import the GLX client side library, formerly from xc/lib/GL/glx. Build it " Signed-off-by: Hal Gentz firstname.lastname@example.org