wayland/tests
Fergus Dall 80164ef300 util: Avoid undefined behaviour in for_each_helper
for_each_helper tries to calculate a one-past-the-end pointer for its
wl_array input. This is fine when the array has one or more entries, but we
initialize arrays by setting wl_array.data to NULL. Pointer arithmetic is
only defined when both the pointer operand and the result point to the same
allocation, or one-past-the-end of that allocation. As NULL points to no
allocation, no pointer arithmetic can be performed on it, not even adding 0,
even if the result is never dereferenced.

This is caught by clang's ubsan from version 10.

Many tests already hit this case, but I added an explicit test for iterating
over an empty wl_map.

Signed-off-by: Fergus Dall <sidereal@google.com>
2021-07-21 11:42:42 +00:00
..
data tests: Test wayland-scanner with a description in an entry 2021-07-07 12:11:42 +00:00
array-test.c Avoid pointer arithmetic on void * 2019-06-05 10:01:07 +00:00
client-test.c Use wl_container_of internally 2019-06-05 09:58:14 +00:00
compositor-introspection-test.c Add a resource creation signal 2016-08-12 11:43:02 +03:00
connection-test.c connection: Handle non-nullable strings in wl_connection_demarshal 2021-06-22 20:15:39 +10:00
cpp-compile-test.cpp tests: C++ compilation test 2015-01-27 11:17:42 +00:00
display-test.c tests: Ensure that overflow test always overflows 2020-01-15 13:18:56 +00:00
event-loop-test.c event-loop-test: Add test to verify timer ordering 2020-01-21 11:31:35 +00:00
exec-fd-leak-checker.c tests: Require base 10 for the string specifying the number of open fd's 2016-07-11 13:32:15 -07:00
fixed-benchmark.c fixed-benchmark: remove unused arguments in main 2015-07-10 17:17:46 -07:00
fixed-test.c tests: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
headers-protocol-core-test.c tests: Check for client/server-core.h inclusion 2016-05-19 14:31:18 -07:00
headers-protocol-test.c tests: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
headers-test.c tests: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
interface-test.c tests: Test wl_interface_equal 2016-11-18 16:21:19 +02:00
list-test.c tests: Add test for wl_list_length 2016-09-05 15:10:43 +03:00
map-test.c util: Avoid undefined behaviour in for_each_helper 2021-07-21 11:42:42 +00:00
meson.build meson: only require cpp for tests 2021-04-16 03:04:56 -06:00
message-test.c tests: Add nullable check to wl_message_count_arrays 2016-11-18 16:59:23 +02:00
newsignal-test.c tests: fix typos 2020-12-17 16:03:14 -05:00
os-wrappers-test.c os-wrappers-test.c: Correctly forward arguments to fcntl 2021-04-15 07:34:53 +00:00
protocol-logger-test.c Add API to install protocol loggers on the server wl_display 2016-08-12 11:59:46 +03:00
proxy-test.c tests: fix memory leak in proxy-test 2020-01-28 20:57:52 +00:00
queue-test.c (multiple): Include stdint.h 2016-07-25 18:39:32 -07:00
resources-test.c tests: Add free-without-remove test 2018-04-20 13:19:13 -05:00
sanity-test.c tests: Remove memory leak checking infrastructure 2018-08-29 09:59:04 +01:00
scanner-test.sh tests: Verify that wayland_scanner can catch bad identifiers 2019-05-02 17:42:59 +00:00
signal-test.c tests: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-12 15:31:24 -07:00
socket-test.c tests: Overly elaborate compiler warning workaround 2018-08-29 09:59:04 +01:00
test-compositor.c tests: Fix race condition in send overflow test 2020-01-15 13:18:56 +00:00
test-compositor.h tests: Fix race condition in send overflow test 2020-01-15 13:18:56 +00:00
test-helpers.c Support running tests from different build directories 2020-01-10 23:42:59 +01:00
test-runner.c log: remove "%m" from format strings by using strerror(errno) 2019-05-02 22:14:53 +02:00
test-runner.h tests: Remove memory leak checking infrastructure 2018-08-29 09:59:04 +01:00