diff --git a/src/udev/udevadm-control.c b/src/udev/udevadm-control.c index 0a0bb35fb5..cef3ec7fd5 100644 --- a/src/udev/udevadm-control.c +++ b/src/udev/udevadm-control.c @@ -125,6 +125,9 @@ static int parse_argv(int argc, char *argv[]) { r = safe_atou(opts.arg, &i); if (r < 0) return log_error_errno(r, "Failed to parse maximum number of children '%s': %m", opts.arg); + if (i > INT_MAX) + return log_error_errno(SYNTHETIC_ERRNO(ERANGE), + "Maximum number of children is too large: %s", opts.arg); arg_max_children = i; break; } diff --git a/test/units/TEST-17-UDEV.sanity-check.sh b/test/units/TEST-17-UDEV.sanity-check.sh index 6246638fc9..18326c03ad 100755 --- a/test/units/TEST-17-UDEV.sanity-check.sh +++ b/test/units/TEST-17-UDEV.sanity-check.sh @@ -55,6 +55,7 @@ udevadm control -l notice udevadm control --log-level info udevadm control --log-level debug (! udevadm control -l hello) +(! udevadm control -m 2147483648) # Check if processing queued events has been stopped. udevadm control --stop-exec-queue