mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2026-03-25 09:07:23 -04:00
We can't just unconditionally read the optional arguments (and also read it as a void* despite actually being an int). While this happens to work on most architectures because the first few variadic arguments are passed in registers, this is non-portable and causes a crash on architectures that set bounds on variadic function arguments (for example CHERI-enabled architectures). It could also cause problems on big-endian architectures that pass variadic arguments on the stack rather than in registers. For CHERI-MIPS, reading sizeof(void*) causes a read of 16 bytes from the bounded varargs capability. This always crashes since even calls with the optional argument only have 4 bytes available. Signed-off-by: Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> Reviewed-by: Simon Ser <contact@emersion.fr> |
||
|---|---|---|
| .. | ||
| data | ||
| array-test.c | ||
| client-test.c | ||
| compositor-introspection-test.c | ||
| connection-test.c | ||
| cpp-compile-test.cpp | ||
| display-test.c | ||
| event-loop-test.c | ||
| exec-fd-leak-checker.c | ||
| fixed-benchmark.c | ||
| fixed-test.c | ||
| headers-protocol-core-test.c | ||
| headers-protocol-test.c | ||
| headers-test.c | ||
| interface-test.c | ||
| list-test.c | ||
| map-test.c | ||
| meson.build | ||
| message-test.c | ||
| newsignal-test.c | ||
| os-wrappers-test.c | ||
| protocol-logger-test.c | ||
| proxy-test.c | ||
| queue-test.c | ||
| resources-test.c | ||
| sanity-test.c | ||
| scanner-test.sh | ||
| signal-test.c | ||
| socket-test.c | ||
| test-compositor.c | ||
| test-compositor.h | ||
| test-helpers.c | ||
| test-runner.c | ||
| test-runner.h | ||