mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-29 05:40:16 -04:00
client: check event opcode in queue_event
If the client binds to a global with an interface mismatch, it may receive an event from the server with an unknown opcode. See [1]. Instead of crashing, print a more useful debug message and close the connection. [1]: https://gitlab.freedesktop.org/wayland/wayland/issues/113 Signed-off-by: Simon Ser <simon.ser@intel.com>
This commit is contained in:
parent
152c9ed968
commit
a277cc6d52
1 changed files with 6 additions and 0 deletions
|
|
@ -1364,6 +1364,12 @@ queue_event(struct wl_display *display, int len)
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opcode >= proxy->object.interface->event_count) {
|
||||||
|
wl_log("interface '%s' has no event %u\n",
|
||||||
|
proxy->object.interface->name, opcode);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
message = &proxy->object.interface->events[opcode];
|
message = &proxy->object.interface->events[opcode];
|
||||||
closure = wl_connection_demarshal(display->connection, size,
|
closure = wl_connection_demarshal(display->connection, size,
|
||||||
&display->objects, message);
|
&display->objects, message);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue