| Message ID | 1477347953-9687-1-git-send-email-agoins@nvidia.com |
|---|---|
| State | Accepted |
| Headers | show |
| Series |
"ramdac: Check sPriv != NULL in xf86CheckHWCursor()"
( rev:
1
)
in
X.org (DEPRECATED - USE GITLAB) |
diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c index da2b181..5e99526 100644 --- a/hw/xfree86/ramdac/xf86HWCurs.c +++ b/hw/xfree86/ramdac/xf86HWCurs.c @@ -148,7 +148,8 @@ xf86CheckHWCursor(ScreenPtr pScreen, CursorPtr cursor, xf86CursorInfoPtr infoPtr continue; sPriv = dixLookupPrivate(&pSlave->devPrivates, xf86CursorScreenKey); - if (!xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) + if (!sPriv || + !xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) return FALSE; } return TRUE;
Am 25.10.2016 00:25, schrieb Alex Goins: > xf86CheckHWCursor() would dereference sPriv without NULL checking it. If Option > "SWCursor" is specified, sPriv == NULL. In this case we should assume that HW > cursors are not supported. > > Signed-off-by: Alex Goins <agoins@nvidia.com> > Reviewed-by: Andy Ritger <aritger@nvidia.com> > --- > hw/xfree86/ramdac/xf86HWCurs.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c > index da2b181..5e99526 100644 > --- a/hw/xfree86/ramdac/xf86HWCurs.c > +++ b/hw/xfree86/ramdac/xf86HWCurs.c > @@ -148,7 +148,8 @@ xf86CheckHWCursor(ScreenPtr pScreen, CursorPtr cursor, xf86CursorInfoPtr infoPtr > continue; > > sPriv = dixLookupPrivate(&pSlave->devPrivates, xf86CursorScreenKey); > - if (!xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) > + if (!sPriv || > + !xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) > return FALSE; > } > return TRUE; I would go for 2 lines that will make things more clear also adding a comment would help future debugging operations. 1. if (!sPriv) return FALSE; /* maybe option "SWCursor" */ 2. if (!xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) /* HWCursor not supported */ just my 2 cents, re, wh
Hi, On 25-10-16 00:25, Alex Goins wrote: > xf86CheckHWCursor() would dereference sPriv without NULL checking it. If Option > "SWCursor" is specified, sPriv == NULL. In this case we should assume that HW > cursors are not supported. > > Signed-off-by: Alex Goins <agoins@nvidia.com> > Reviewed-by: Andy Ritger <aritger@nvidia.com> Patch looks good to me: Reviewed-by: Hans de Goede <hdegoede@redhat.com> Regards, Hans > --- > hw/xfree86/ramdac/xf86HWCurs.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c > index da2b181..5e99526 100644 > --- a/hw/xfree86/ramdac/xf86HWCurs.c > +++ b/hw/xfree86/ramdac/xf86HWCurs.c > @@ -148,7 +148,8 @@ xf86CheckHWCursor(ScreenPtr pScreen, CursorPtr cursor, xf86CursorInfoPtr infoPtr > continue; > > sPriv = dixLookupPrivate(&pSlave->devPrivates, xf86CursorScreenKey); > - if (!xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) > + if (!sPriv || > + !xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) > return FALSE; > } > return TRUE; >