Xi: Verify all events in ProcXSendExtensionEvent.

The requirement is that events have type in range
EXTENSION_EVENT_BASE..lastEvent, but it was tested
only for first event of all.

Signed-off-by: Michal Srb <msrb@suse.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:
Michal Srb 2017-05-24 15:54:41 +03:00 committed by Peter Hutterer
parent 215f894965
commit 8caed4df36

View File

@ -117,7 +117,7 @@ SProcXSendExtensionEvent(ClientPtr client)
int int
ProcXSendExtensionEvent(ClientPtr client) ProcXSendExtensionEvent(ClientPtr client)
{ {
int ret; int ret, i;
DeviceIntPtr dev; DeviceIntPtr dev;
xEvent *first; xEvent *first;
XEventClass *list; XEventClass *list;
@ -141,10 +141,12 @@ ProcXSendExtensionEvent(ClientPtr client)
/* The client's event type must be one defined by an extension. */ /* The client's event type must be one defined by an extension. */
first = ((xEvent *) &stuff[1]); first = ((xEvent *) &stuff[1]);
if (!((EXTENSION_EVENT_BASE <= first->u.u.type) && for (i = 0; i < stuff->num_events; i++) {
(first->u.u.type < lastEvent))) { if (!((EXTENSION_EVENT_BASE <= first[i].u.u.type) &&
client->errorValue = first->u.u.type; (first[i].u.u.type < lastEvent))) {
return BadValue; client->errorValue = first[i].u.u.type;
return BadValue;
}
} }
list = (XEventClass *) (first + stuff->num_events); list = (XEventClass *) (first + stuff->num_events);