wayland/src
Pekka Paalanen bace3cd819 connection: fix demarshal of invalid header
The size argument to wl_connection_demarshal() is taken from the message by the
caller wl_client_connection_data(), therefore 'size' is untrusted data
controllable by a Wayland client. The size should always be at least the header
size, otherwise the header is invalid.

If the size is smaller than header size, it leads to reading past the end of
allocated memory. Furthermore if size is zero, wl_closure_init() changes
behaviour and leaves num_arrays uninitialized, leading to access of arbitrary
memory.

Check that 'size' fits at least the header. The space for arguments is already
properly checked.

This makes the request_bogus_size test free of errors under Valgrind.

Fixes: https://gitlab.freedesktop.org/wayland/wayland/issues/52

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
2019-03-13 12:39:16 +02:00
..
.gitignore ignore: Add *.dtd.embed 2016-03-10 22:24:20 -08:00
connection.c connection: fix demarshal of invalid header 2019-03-13 12:39:16 +02:00
dtddata.S dtddata: Use standard permission notice 2017-01-26 14:49:55 +00:00
event-loop.c eventloop: clarify post_dispatch_check() 2017-12-04 19:45:38 +00:00
scanner.c scanner: Reverse expat/libxml include order 2018-08-29 09:58:49 +01:00
wayland-client-core.h (multiple): Include stdint.h 2016-07-25 18:39:32 -07:00
wayland-client-uninstalled.pc.in build: remove white space in -uninstalled.pc.in files 2018-02-16 14:41:08 +00:00
wayland-client.c proto, server: Add internal server error message. (v2) 2019-01-29 15:58:19 +02:00
wayland-client.h doc: Formalize file comment in wayland-client.h, wayland-server.h 2016-05-11 11:03:27 -07:00
wayland-client.pc.in Export the Wayland protocol XML file 2013-09-21 21:48:56 -07:00
wayland-os.c src: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
wayland-os.h src: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
wayland-private.h server: Add special case destroy signal emitter 2018-04-20 13:19:13 -05:00
wayland-scanner-uninstalled.pc.in build: remove white space in -uninstalled.pc.in files 2018-02-16 14:41:08 +00:00
wayland-scanner.pc.in build: Add wayland-scanner.pc. 2013-07-03 16:38:12 -04:00
wayland-server-core.h proto, server: Add internal server error message. (v2) 2019-01-29 15:58:19 +02:00
wayland-server-uninstalled.pc.in build: remove white space in -uninstalled.pc.in files 2018-02-16 14:41:08 +00:00
wayland-server.c proto, server: Add internal server error message. (v2) 2019-01-29 15:58:19 +02:00
wayland-server.h wayland-server: Finally remove deprecated struct wl_buffer definition 2018-07-25 12:08:16 -05:00
wayland-server.pc.in Export the Wayland protocol XML file 2013-09-21 21:48:56 -07:00
wayland-shm.c shm: provide actual error on mmap failed 2018-02-09 17:03:28 +00:00
wayland-util.c client: Remove WL_ZOMBIE_OBJECT global 2017-12-28 19:43:20 +00:00
wayland-util.h wayland-util.h: add forward declaration for wl_object 2019-03-07 11:33:26 +02:00
wayland-version.h.in src: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00