Xext: avoid null-pointer dereference in XTestFakeInput (#59937)

dv is still NULL at this point, so return firstValuator instead (which is
the same value dv->firstValuator would be once initialized)

X.Org Bug 59937 <http://bugs.freedesktop.org/show_bug.cgi?id=59937>

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Alan Coopersmith 2013-01-29 10:24:32 +10:00 committed by Peter Hutterer
parent 1058fcf57f
commit 48bc30c541

View File

@ -156,7 +156,6 @@ ProcXTestFakeInput(ClientPtr client)
DeviceIntPtr dev = NULL; DeviceIntPtr dev = NULL;
WindowPtr root; WindowPtr root;
Bool extension = FALSE; Bool extension = FALSE;
deviceValuator *dv = NULL;
ValuatorMask mask; ValuatorMask mask;
int valuators[MAX_VALUATORS] = { 0 }; int valuators[MAX_VALUATORS] = { 0 };
int numValuators = 0; int numValuators = 0;
@ -241,14 +240,14 @@ ProcXTestFakeInput(ClientPtr client)
} }
if (nev > 1 && !dev->valuator) { if (nev > 1 && !dev->valuator) {
client->errorValue = dv->first_valuator; client->errorValue = firstValuator;
return BadValue; return BadValue;
} }
/* check validity of valuator events */ /* check validity of valuator events */
base = firstValuator; base = firstValuator;
for (n = 1; n < nev; n++) { for (n = 1; n < nev; n++) {
dv = (deviceValuator *) (ev + n); deviceValuator *dv = (deviceValuator *) (ev + n);
if (dv->type != DeviceValuator) { if (dv->type != DeviceValuator) {
client->errorValue = dv->type; client->errorValue = dv->type;
return BadValue; return BadValue;