aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test-compositor.h
diff options
context:
space:
mode:
authorDemi Marie Obenour <demi@invisiblethingslab.com>2024-08-05 12:49:49 -0400
committerDemi Marie Obenour <demi@invisiblethingslab.com>2024-11-30 11:31:36 -0500
commit290c36bc507d7d2f391b7eb1dc8fd9841c37e770 (patch)
tree86e61cf7610fb2956352e9bbf719954cd742292f /tests/test-compositor.h
parentconnection: Avoid undefined pointer arithmetic (diff)
downloadwayland-290c36bc507d7d2f391b7eb1dc8fd9841c37e770.tar
wayland-290c36bc507d7d2f391b7eb1dc8fd9841c37e770.tar.gz
wayland-290c36bc507d7d2f391b7eb1dc8fd9841c37e770.tar.bz2
wayland-290c36bc507d7d2f391b7eb1dc8fd9841c37e770.tar.lz
wayland-290c36bc507d7d2f391b7eb1dc8fd9841c37e770.tar.xz
wayland-290c36bc507d7d2f391b7eb1dc8fd9841c37e770.tar.zst
wayland-290c36bc507d7d2f391b7eb1dc8fd9841c37e770.zip
tests: Avoid calling function with wrong type
Calling a function with the wrong type is immediate undefined behavior, even if the ABI says it should be harmless. UBSAN picks it up immediately, and any decent control-flow integrity mechanism will as well. Signed-off-by: Demi Marie Obenour <demi@invisiblethingslab.com>
Diffstat (limited to 'tests/test-compositor.h')
-rw-r--r--tests/test-compositor.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/tests/test-compositor.h b/tests/test-compositor.h
index 3fb390c..662a81c 100644
--- a/tests/test-compositor.h
+++ b/tests/test-compositor.h
@@ -118,5 +118,17 @@ struct client_info *client_create_with_name(struct display *d,
void *data,
const char *name);
#define client_create(d, c, data) client_create_with_name((d), (c), data, (#c))
+static inline void noarg_cb(void *data)
+{
+ void (*cb)(void) = data;
+ cb();
+}
+static inline struct client_info *client_create_with_name_noarg(struct display *d,
+ void (*client_main)(void),
+ const char *name)
+{
+ return client_create_with_name(d, noarg_cb, client_main, name);
+}
+
#define client_create_noarg(d, c) \
- client_create_with_name((d), (void(*)(void *)) (c), NULL, (#c))
+ client_create_with_name_noarg((d), (c), (#c))