diff --git a/src/uu/sleep/src/sleep.rs b/src/uu/sleep/src/sleep.rs index 0c8de143e..87cd15417 100644 --- a/src/uu/sleep/src/sleep.rs +++ b/src/uu/sleep/src/sleep.rs @@ -63,7 +63,7 @@ fn sleep(args: &[&str]) -> UResult<()> { args.iter().try_fold( Duration::new(0, 0), |result, arg| match uucore::parse_time::from_str(&arg[..]) { - Ok(m) => Ok(m + result), + Ok(m) => Ok(m.saturating_add(result)), Err(f) => Err(USimpleError::new(1, f)), }, )?; diff --git a/tests/by-util/test_sleep.rs b/tests/by-util/test_sleep.rs index 91b0cd02b..d33143ae0 100644 --- a/tests/by-util/test_sleep.rs +++ b/tests/by-util/test_sleep.rs @@ -131,3 +131,13 @@ fn test_dont_overflow() { .no_stderr() .no_stdout(); } + +// #[test] +#[allow(dead_code)] +fn test_sum_overflow() { + new_ucmd!() + .args(&["100000000000000d", "100000000000000d", "100000000000000d"]) + .succeeds() + .no_stderr() + .no_stdout(); +}