[PATCH v2 libXi 2/2] XListInputDevices: don't touch ndevices in case of error

Nicolas Boichat drinkcat at chromium.org
Mon Oct 17 06:14:18 UTC 2016


+sadrul

On Mon, Oct 17, 2016 at 1:43 PM, Peter Hutterer
<peter.hutterer at who-t.net> wrote:
> On Fri, Oct 14, 2016 at 02:28:55PM +0100, Emil Velikov wrote:
>> On 13 October 2016 at 04:58, Peter Hutterer <peter.hutterer at who-t.net> wrote:
>> > We used to always set *ndevices to the number of devices returned by the
>> > server. This magically worked because we pretty much never returned an error
>> > except on faulty server or library implementations. With 19a9cd60 we now have
>> > more chances of getting an error, so the polite thing is to just leave *ndevices
>> > alone when we error out.
>> >
>> > Document it as such in the man page, just in case someone accidentally reads
>> > it.
>> >
>> > Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
>> > CC: Niels Ole Salscheider <niels_ole at salscheider-online.de>
>> > ---
>> > Changes to v1:
>> > - Niels' first patch set ndevices to 0, this one leaves it untouched
>> >
>> Slightly split between "doing the right thing" and "the cat is out of
>> the bag" ;-)
>
> I don't think the cat is out of the bag anyway here. ndevices was *always*
> wrong in case of error. either it was untouched or set to the list of
> devices even though NULL was returned. the only reason this worked is
> because we never had an error. the cat remains thus firmly packaged, if (as
> usual) in an unclear state of vividness.
>
>> I'm leaning towards the former, although we might want to prod
>> Chromium devs and/or send them a patch ?
>
> the chromium code is broken, it cannot handle *any* error case. on the first
> call, the devices list is NULL and count is 0. XListInputDevices is
> fails, we currently get a NULL list but a count of != 0. Which
> will then crash when looping through the list and dereferencing the
> nonexistent members. At least with this fix, count stays on 0 and while
> XListInputDevices will get called every time, everything else
> should simply skip over any loop over the devices then (since count remains
> at 0).
>
> anyway, I just tried to file a bug, but "You need a Google Account
> associated with your email address in order to use the bug system." so there
> goes that idea. so now I'm just CC-ing the three most recent @chromium.org
> addresses from xorg-devel and cross my fingers and hope :)

Filed https://bugs.chromium.org/p/chromium/issues/detail?id=656506,
thanks for reporting!

Best,

Nicolas


More information about the xorg-devel mailing list