Libinput's accelerator_set_speed() asserts the given speed value is within the [-1.0, 1.0] range.
When using xf86-input-libinput, a client may try to set an invalid speed which will cause the entire Xserver to abort. Instead of aborting on invalid speed values, simply return a failure (and log a message). Signed-off-by: Olivier Fourdan <[email protected]> --- src/evdev.c | 5 ++++- src/filter.c | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/evdev.c b/src/evdev.c index 6e318dc..c96a66b 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1194,8 +1194,11 @@ evdev_accel_config_set_speed(struct libinput_device *device, double speed) { struct evdev_device *dev = (struct evdev_device *)device; - if (!filter_set_speed(dev->pointer.filter, speed)) + if (!filter_set_speed(dev->pointer.filter, speed)) { + log_bug_libinput(device->seat->libinput, + "Invalid speed %f\n", speed); return LIBINPUT_CONFIG_STATUS_INVALID; + } return LIBINPUT_CONFIG_STATUS_SUCCESS; } diff --git a/src/filter.c b/src/filter.c index 72ef760..91afdcd 100644 --- a/src/filter.c +++ b/src/filter.c @@ -260,7 +260,8 @@ accelerator_set_speed(struct motion_filter *filter, struct pointer_accelerator *accel_filter = (struct pointer_accelerator *)filter; - assert(speed >= -1.0 && speed <= 1.0); + if (speed < -1.0 || speed > 1.0) + return false; /* delay when accel kicks in */ accel_filter->threshold = DEFAULT_THRESHOLD - speed/6.0; -- 2.1.0 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
