xfree86: Fix null pointer dereference
Hans de Goede
hdegoede at redhat.com
Fri Sep 23 12:54:45 UTC 2016
Hi,
On 09/23/2016 03:33 PM, Eric Engestrom wrote:
> On Fri, Sep 23, 2016 at 03:12:18PM +0300, Hans de Goede wrote:
>> Hi,
>>
>> On 01/13/2016 07:47 AM, Kyle Guinn wrote:
>>> Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93675
>>>
>>> Signed-off-by: Kyle Guinn <elyk03 at gmail.com>
>>
>> Thanks for the patch, I've queued this up at:
>>
>> https://cgit.freedesktop.org/~jwrdegoede/xserver
>>
>> For a 1.19 bug-fix pull-req I'm preparing at.
>>
>> Note I've simplified the patch to:
>>
>> - if (d) {
>> + if (d && d->pI2CBus) {
>>
>> Instead of the nested ifs you used, still many thanks
>> for tracking this crashed down!
>
> I find this better too, but if you do that you need to move
>
> if (unalloc)
> free(d);
>
> out of that `if (d && d->pI2CBus)` :)
Good one, thanks for catching that.
Regards,
Hans
>>> ---
>>> hw/xfree86/i2c/xf86i2c.c | 22 ++++++++++++----------
>>> 1 file changed, 12 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/hw/xfree86/i2c/xf86i2c.c b/hw/xfree86/i2c/xf86i2c.c
>>> index 2a8b8df..62b647c 100644
>>> --- a/hw/xfree86/i2c/xf86i2c.c
>>> +++ b/hw/xfree86/i2c/xf86i2c.c
>>> @@ -615,19 +615,21 @@ void
>>> xf86DestroyI2CDevRec(I2CDevPtr d, Bool unalloc)
>>> {
>>> if (d) {
>>> - I2CDevPtr *p;
>>> + if (d->pI2CBus) {
>>> + I2CDevPtr *p;
>>>
>>> - /* Remove this from the list of active I2C devices. */
>>> + /* Remove this from the list of active I2C devices. */
>>>
>>> - for (p = &d->pI2CBus->FirstDev; *p != NULL; p = &(*p)->NextDev)
>>> - if (*p == d) {
>>> - *p = (*p)->NextDev;
>>> - break;
>>> - }
>>> + for (p = &d->pI2CBus->FirstDev; *p != NULL; p = &(*p)->NextDev)
>>> + if (*p == d) {
>>> + *p = (*p)->NextDev;
>>> + break;
>>> + }
>>>
>>> - xf86DrvMsg(d->pI2CBus->scrnIndex, X_INFO,
>>> - "I2C device \"%s:%s\" removed.\n",
>>> - d->pI2CBus->BusName, d->DevName);
>>> + xf86DrvMsg(d->pI2CBus->scrnIndex, X_INFO,
>>> + "I2C device \"%s:%s\" removed.\n",
>>> + d->pI2CBus->BusName, d->DevName);
>>> + }
>>>
>>> if (unalloc)
>>> free(d);
>>>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list