From 9713e7764c386e239dc78bf5a4c3c14f47a94a50 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Tue, 24 Sep 2024 11:28:59 +0900 Subject: [PATCH] [input] Plug some potential UB More "null pointer but zero size", but with library code, who knows? --- libs/input/in_binding.c | 3 +++ libs/video/targets/in_x11.c | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libs/input/in_binding.c b/libs/input/in_binding.c index 3c5dc53ce..2449a693a 100644 --- a/libs/input/in_binding.c +++ b/libs/input/in_binding.c @@ -121,6 +121,9 @@ devid_cmp (const void *a, const void *b) static int * __attribute__ ((pure)) in_find_devid (int devid) { + if (!known_devices.size) { + return nullptr; + } return bsearch (&devid, known_devices.a, known_devices.size, sizeof (int), devid_cmp); } diff --git a/libs/video/targets/in_x11.c b/libs/video/targets/in_x11.c index 0326ee45d..02badd3af 100644 --- a/libs/video/targets/in_x11.c +++ b/libs/video/targets/in_x11.c @@ -1247,7 +1247,9 @@ in_x11_axis_info (void *data, void *device, in_axisinfo_t *axes, int *numaxes) if (*numaxes > dev->num_axes) { *numaxes = dev->num_axes; } - memcpy (axes, dev->axes, *numaxes * sizeof (in_axisinfo_t)); + if (dev->num_axes) { + memcpy (axes, dev->axes, *numaxes * sizeof (in_axisinfo_t)); + } } static void @@ -1262,7 +1264,9 @@ in_x11_button_info (void *data, void *device, in_buttoninfo_t *buttons, if (*numbuttons > dev->num_buttons) { *numbuttons = dev->num_buttons; } - memcpy (buttons, dev->buttons, *numbuttons * sizeof (in_buttoninfo_t)); + if (dev->num_buttons) { + memcpy (buttons, dev->buttons, *numbuttons * sizeof (in_buttoninfo_t)); + } } static const char *