From db9a111c18013e7d42d127668016c0a06e78b1da Mon Sep 17 00:00:00 2001 From: Ibrahim Burak Yorulmaz Date: Mon, 6 Apr 2026 08:16:40 +0200 Subject: [PATCH] dd: do not show zero multiplier warning when zero is the multiplicand (#11673) * dd: do not show zero multiplier warning when zero is the multiplicand * tests/dd: test zero multiplier warning when zero is the multiplicand --- src/uu/dd/src/parseargs.rs | 4 ++-- tests/by-util/test_dd.rs | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/uu/dd/src/parseargs.rs b/src/uu/dd/src/parseargs.rs index 42235cabd..0df5c2b38 100644 --- a/src/uu/dd/src/parseargs.rs +++ b/src/uu/dd/src/parseargs.rs @@ -524,8 +524,8 @@ pub fn parse_bytes_with_opt_multiplier(s: &str) -> Result { parse_bytes_no_x(s, parts[0]) } else { let mut total: u64 = 1; - for part in parts { - if part == "0" { + for (i, part) in parts.iter().enumerate() { + if *part == "0" && i != parts.len() - 1 { show_zero_multiplier_warning(); } let num = parse_bytes_no_x(s, part)?; diff --git a/tests/by-util/test_dd.rs b/tests/by-util/test_dd.rs index d2dfb7bda..e9574bb05 100644 --- a/tests/by-util/test_dd.rs +++ b/tests/by-util/test_dd.rs @@ -263,6 +263,13 @@ fn test_zero_multiplier_warning() { .succeeds() .no_stdout() .stderr_contains("warning: '0x' is a zero multiplier; use '00x' if that is intended"); + + new_ucmd!() + .args(&[format!("{arg}=0x0x0").as_str(), "status=none"]) + .pipe_in("") + .succeeds() + .no_stdout() + .stderr_is("dd: warning: '0x' is a zero multiplier; use '00x' if that is intended\ndd: warning: '0x' is a zero multiplier; use '00x' if that is intended\n"); } }