0004-Xi-Verify-all-events-in-ProcXSendExtensionEvent.patch 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. From 8caed4df36b1f802b4992edcfd282cbeeec35d9d Mon Sep 17 00:00:00 2001
  2. From: Michal Srb <msrb@suse.com>
  3. Date: Wed, 24 May 2017 15:54:41 +0300
  4. Subject: [PATCH] Xi: Verify all events in ProcXSendExtensionEvent.
  5. The requirement is that events have type in range
  6. EXTENSION_EVENT_BASE..lastEvent, but it was tested
  7. only for first event of all.
  8. Signed-off-by: Michal Srb <msrb@suse.com>
  9. Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
  10. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
  11. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
  12. ---
  13. Xi/sendexev.c | 12 +++++++-----
  14. 1 file changed, 7 insertions(+), 5 deletions(-)
  15. diff --git a/Xi/sendexev.c b/Xi/sendexev.c
  16. index 1cf118ab6..5e63bfcca 100644
  17. --- a/Xi/sendexev.c
  18. +++ b/Xi/sendexev.c
  19. @@ -117,7 +117,7 @@ SProcXSendExtensionEvent(ClientPtr client)
  20. int
  21. ProcXSendExtensionEvent(ClientPtr client)
  22. {
  23. - int ret;
  24. + int ret, i;
  25. DeviceIntPtr dev;
  26. xEvent *first;
  27. XEventClass *list;
  28. @@ -141,10 +141,12 @@ ProcXSendExtensionEvent(ClientPtr client)
  29. /* The client's event type must be one defined by an extension. */
  30. first = ((xEvent *) &stuff[1]);
  31. - if (!((EXTENSION_EVENT_BASE <= first->u.u.type) &&
  32. - (first->u.u.type < lastEvent))) {
  33. - client->errorValue = first->u.u.type;
  34. - return BadValue;
  35. + for (i = 0; i < stuff->num_events; i++) {
  36. + if (!((EXTENSION_EVENT_BASE <= first[i].u.u.type) &&
  37. + (first[i].u.u.type < lastEvent))) {
  38. + client->errorValue = first[i].u.u.type;
  39. + return BadValue;
  40. + }
  41. }
  42. list = (XEventClass *) (first + stuff->num_events);
  43. --
  44. 2.11.0