From b4f45f2affb748bbaa6aee28bdab81a3daf35cfe Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 11 Mar 2026 15:15:55 +1000 Subject: [PATCH] Add missing return after scroll capability checks For both ei/eis a missing return after the scroll capability check could cause a potential NULL pointer dereference on device->scroll. Co-Authored-by: Claude Code Part-of: --- src/libei-device.c | 4 ++++ src/libeis-device.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/libei-device.c b/src/libei-device.c index 607160b..1a54b23 100644 --- a/src/libei-device.c +++ b/src/libei-device.c @@ -1466,6 +1466,7 @@ ei_device_scroll_delta(struct ei_device *device, double x, double y) if (!ei_device_has_capability(device, EI_DEVICE_CAP_SCROLL)) { log_bug_client(ei_device_get_context(device), "%s: device is not scroll device", __func__); + return; } if (device->state != EI_DEVICE_STATE_EMULATING) { @@ -1486,6 +1487,7 @@ ei_device_scroll_stop(struct ei_device *device, bool x, bool y) if (!ei_device_has_capability(device, EI_DEVICE_CAP_SCROLL)) { log_bug_client(ei_device_get_context(device), "%s: device is not scroll device", __func__); + return; } if (device->state != EI_DEVICE_STATE_EMULATING) { @@ -1515,6 +1517,7 @@ ei_device_scroll_cancel(struct ei_device *device, bool x, bool y) if (!ei_device_has_capability(device, EI_DEVICE_CAP_SCROLL)) { log_bug_client(ei_device_get_context(device), "%s: device is not scroll device", __func__); + return; } if (device->state != EI_DEVICE_STATE_EMULATING) { @@ -1548,6 +1551,7 @@ ei_device_scroll_discrete(struct ei_device *device, int32_t x, int32_t y) if (!ei_device_has_capability(device, EI_DEVICE_CAP_SCROLL)) { log_bug_client(ei_device_get_context(device), "%s: device is not scroll device", __func__); + return; } if (device->state != EI_DEVICE_STATE_EMULATING) { diff --git a/src/libeis-device.c b/src/libeis-device.c index a2345fb..97f3424 100644 --- a/src/libeis-device.c +++ b/src/libeis-device.c @@ -1234,6 +1234,7 @@ eis_device_scroll_delta(struct eis_device *device, double x, double y) if (!eis_device_has_capability(device, EIS_DEVICE_CAP_SCROLL)) { log_bug_client(eis_device_get_context(device), "%s: device is not a scroll device", __func__); + return; } if (device->state != EIS_DEVICE_STATE_EMULATING) @@ -1252,6 +1253,7 @@ eis_device_scroll_stop(struct eis_device *device, bool x, bool y) if (!eis_device_has_capability(device, EIS_DEVICE_CAP_SCROLL)) { log_bug_client(eis_device_get_context(device), "%s: device is not a scroll device", __func__); + return; } if (device->state != EIS_DEVICE_STATE_EMULATING) @@ -1280,6 +1282,7 @@ eis_device_scroll_cancel(struct eis_device *device, bool x, bool y) if (!eis_device_has_capability(device, EIS_DEVICE_CAP_SCROLL)) { log_bug_client(eis_device_get_context(device), "%s: device is not a scroll device", __func__); + return; } if (device->state != EIS_DEVICE_STATE_EMULATING) @@ -1312,6 +1315,7 @@ eis_device_scroll_discrete(struct eis_device *device, int32_t x, int32_t y) if (!eis_device_has_capability(device, EIS_DEVICE_CAP_SCROLL)) { log_bug_client(eis_device_get_context(device), "%s: device is not a scroll device", __func__); + return; } if (device->state != EIS_DEVICE_STATE_EMULATING)