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

Eric Anholt eric at anholt.net
Tue Mar 24 12:08:26 PDT 2015


Daniel Martin <consume.noise at gmail.com> writes:

> On 9 February 2015 at 15:09, Jon TURNEY <jon.turney at dronecode.org.uk> wrote:
>> 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.
>>
>
> Ah, I see. Another way to fix it would have been to return such an
> error from ephyr_glamor_connect() like xcb_connect() would do. But,
> that be more complicated then this simple check ...
>
> Reviewed-by: Daniel Martin <consume.noise at gmail.com>

Thanks!  Applied to -next.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20150324/bfa4638c/attachment.sig>


More information about the xorg-devel mailing list