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

Dan Nicholson dbn.lists at gmail.com
Thu Mar 31 05:41:35 PDT 2011


On Thu, Mar 31, 2011 at 3:57 AM, Erkki Seppala <erkki.seppala at vincit.fi> wrote:
> 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.

Oh, right that's what I was missing. With the corrected blame commit,

Reviewed-by: Dan Nicholson <dbn.lists at gmail.com>


More information about the xorg-devel mailing list