[PATCHv3 13/14] xfree86: fix bad free configInputDevices

Erkki Seppala erkki.seppala at vincit.fi
Thu Mar 31 03:57:55 PDT 2011


On 30.03.2011 16:18, Dan Nicholson wrote:
> <tiago.vignatti at nokia.com>  wrote:
>> diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
>> index 7a23253..114bdc3 100644
>> --- a/hw/xfree86/common/xf86Config.c
>> +++ b/hw/xfree86/common/xf86Config.c
>> @@ -1459,8 +1459,9 @@ configInputDevices(XF86ConfLayoutPtr layout, serverLayoutPtr servlayoutp)
>>      while (irp) {
>>         indp[count] = xf86AllocateInput();
>>         if (!configInput(indp[count], irp->iref_inputdev, X_CONFIG)) {
>> -           while(count--)
>> +           do {
>>                 free(indp[count]);
>> +           } while(count--);
>>             free(indp);
>>             return FALSE;
>>         }
>
> Since the original code was doing a post-test decrement, wouldn't it
> have wound all the way down to "free(indp[0])"? If it was "while
> (--count)", I'd agree this is needed.

If count = 1, the original code would wind up releasing only indp[0]. 
The revised code releases both indp[0] and indp[1], where indp[1] is 
allocated just a few lines above.


More information about the xorg-devel mailing list