diff --git a/src/uu/shuf/src/shuf.rs b/src/uu/shuf/src/shuf.rs index 0923c0a55..40028c2fb 100644 --- a/src/uu/shuf/src/shuf.rs +++ b/src/uu/shuf/src/shuf.rs @@ -471,7 +471,11 @@ fn parse_range(input_range: &str) -> Result, String> { let end = to .parse::() .map_err(|_| format!("invalid input range: {}", to.quote()))?; - Ok(begin..=end) + if begin <= end || begin == end + 1 { + Ok(begin..=end) + } else { + Err(format!("invalid input range: {}", input_range.quote())) + } } else { Err(format!("invalid input range: {}", input_range.quote())) } diff --git a/tests/by-util/test_shuf.rs b/tests/by-util/test_shuf.rs index 9af9f9c62..8a991e435 100644 --- a/tests/by-util/test_shuf.rs +++ b/tests/by-util/test_shuf.rs @@ -762,7 +762,11 @@ fn test_range_empty() { #[test] fn test_range_empty_minus_one() { - new_ucmd!().arg("-i5-3").succeeds().no_output(); + new_ucmd!() + .arg("-i5-3") + .fails() + .no_stdout() + .stderr_only("shuf: invalid input range: '5-3'\n"); } #[test] @@ -792,5 +796,5 @@ fn test_range_repeat_empty_minus_one() { .arg("-ri5-3") .fails() .no_stdout() - .stderr_only("shuf: no lines to repeat\n"); + .stderr_only("shuf: invalid input range: '5-3'\n"); }