[PATCH] ephyr: Avoid a segfault with 'DISPLAY= Xephy -glamor'

Jon TURNEY jon.turney at dronecode.org.uk
Mon Feb 9 06:09:32 PST 2015


On 09/02/2015 14:03, Daniel Martin wrote:
> On 9 February 2015 at 14:45, Jon TURNEY <jon.turney at dronecode.org.uk> wrote:
>> ephyr_glamor_connect() returns NULL if we failed, but applying
>> xcb_connection_has_error() to NULL is not permitted.
>>
>> Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
>> ---
>>   hw/kdrive/ephyr/hostx.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
>> index f64861b..15edce8 100644
>> --- a/hw/kdrive/ephyr/hostx.c
>> +++ b/hw/kdrive/ephyr/hostx.c
>> @@ -443,7 +443,7 @@ hostx_init(void)
>>       else
>>   #endif
>>           HostX.conn = xcb_connect(NULL, &HostX.screen);
>> -    if (xcb_connection_has_error(HostX.conn)) {
>> +    if (!HostX.conn || xcb_connection_has_error(HostX.conn)) {
>
> No need to change the check, as xcb_connect() ...
>      "Always returns a non-NULL pointer to a xcb_connection_t, even on failure."
>      http://cgit.freedesktop.org/xcb/libxcb/tree/src/xcb.h#n549

I'm afraid you need to look at a little more context than is in the diff.

If glamor is enabled, HostX.conn contains the result of 
ephyr_glamor_connect(), not xcb_connect(), which can be NULL.



More information about the xorg-devel mailing list