From 965a719d287a886876d6dc6f2d7e5bf28a82f011 Mon Sep 17 00:00:00 2001 From: Ibrahim Burak Yorulmaz Date: Sat, 4 Apr 2026 03:52:00 +0200 Subject: [PATCH 1/2] dd: exit when bs/ibs/obs/cbs isn't positive --- src/uu/dd/src/parseargs.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/uu/dd/src/parseargs.rs b/src/uu/dd/src/parseargs.rs index 42235cabda5..d26528559a4 100644 --- a/src/uu/dd/src/parseargs.rs +++ b/src/uu/dd/src/parseargs.rs @@ -320,8 +320,12 @@ impl Parser { } fn parse_bytes(arg: &str, val: &str) -> Result { - parse_bytes_with_opt_multiplier(val)? - .try_into() + let num = parse_bytes_with_opt_multiplier(val)?; + + if num == 0 { + return Err(ParseError::InvalidNumber(num.to_string())); + } + num.try_into() .map_err(|_| ParseError::BsOutOfRange(arg.to_string())) } From 3fae276584502e77b8bc88152d2a3fe79078fc3b Mon Sep 17 00:00:00 2001 From: Ibrahim Burak Yorulmaz Date: Sat, 4 Apr 2026 03:52:18 +0200 Subject: [PATCH 2/2] tests/dd: test supplying non-positive bs/ibs/cbs/obs --- tests/by-util/test_dd.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/by-util/test_dd.rs b/tests/by-util/test_dd.rs index d2dfb7bda2c..7801483667a 100644 --- a/tests/by-util/test_dd.rs +++ b/tests/by-util/test_dd.rs @@ -2100,3 +2100,16 @@ fn test_ascii_case_conversion_fallback() { .succeeds(); assert_eq!(result.stdout(), input); } + +#[test] +fn test_bs_not_positive() { + for bs in [-5, 0] { + for bs_param in ["bs", "ibs", "obs", "cbs"] { + new_ucmd!() + .args(&[format!("{bs_param}={bs}")]) + .fails() + .no_stdout() + .code_is(1); + } + } +}