From 16e131ac88e82638c6096b0c434a0f75bd734491 Mon Sep 17 00:00:00 2001 From: Devel Date: Wed, 10 Jun 2026 18:07:33 +0300 Subject: [PATCH 1/4] fmt: handle multiplication oveflow --- src/uu/fmt/src/fmt.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/uu/fmt/src/fmt.rs b/src/uu/fmt/src/fmt.rs index dd8f10fd882..c5e74a67f73 100644 --- a/src/uu/fmt/src/fmt.rs +++ b/src/uu/fmt/src/fmt.rs @@ -141,7 +141,10 @@ impl FmtOptions { (0, 0) } (Some(w), None) => { - let g = (w * DEFAULT_GOAL_TO_WIDTH_RATIO / 100).max(1); + let g = match w.checked_mul(DEFAULT_GOAL_TO_WIDTH_RATIO) { + Some(result) => (result / 100).max(1), + None => { Err(FmtError::InvalidWidth(w.to_string())) }?, + }; (w, g) } (None, Some(g)) => { From faf91d1c0b3c88c52070f4aa3301ad4e155efbcb Mon Sep 17 00:00:00 2001 From: Devel Date: Wed, 10 Jun 2026 18:08:23 +0300 Subject: [PATCH 2/4] add test_fmt_width_multiplication_overflow --- tests/by-util/test_fmt.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/by-util/test_fmt.rs b/tests/by-util/test_fmt.rs index b223da5bc5c..8953cfe8a4e 100644 --- a/tests/by-util/test_fmt.rs +++ b/tests/by-util/test_fmt.rs @@ -428,3 +428,11 @@ fn test_fmt_invalid_utf8() { .succeeds() .stdout_is_bytes(b"=\xA0=\n"); } + +#[test] +fn test_fmt_width_multiplication_overflow() { + new_ucmd!() + .args(&["-w", "267672676527678256"]) + .fails_with_code(1) + .stderr_is("fmt: invalid width: '267672676527678256'\n"); +} From 93c1ca7132923980c0b409857bbcc4b8ad301080 Mon Sep 17 00:00:00 2001 From: Devel Date: Wed, 10 Jun 2026 18:10:28 +0300 Subject: [PATCH 3/4] identation fix --- src/uu/fmt/src/fmt.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/uu/fmt/src/fmt.rs b/src/uu/fmt/src/fmt.rs index c5e74a67f73..3775cb944b5 100644 --- a/src/uu/fmt/src/fmt.rs +++ b/src/uu/fmt/src/fmt.rs @@ -144,7 +144,7 @@ impl FmtOptions { let g = match w.checked_mul(DEFAULT_GOAL_TO_WIDTH_RATIO) { Some(result) => (result / 100).max(1), None => { Err(FmtError::InvalidWidth(w.to_string())) }?, - }; + }; (w, g) } (None, Some(g)) => { From 030e47e672fcfb33324abdd0b8c3a2e8da9faf46 Mon Sep 17 00:00:00 2001 From: Devel Date: Wed, 10 Jun 2026 18:14:01 +0300 Subject: [PATCH 4/4] indentation fix --- src/uu/fmt/src/fmt.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/uu/fmt/src/fmt.rs b/src/uu/fmt/src/fmt.rs index 3775cb944b5..06cac3cb3ea 100644 --- a/src/uu/fmt/src/fmt.rs +++ b/src/uu/fmt/src/fmt.rs @@ -141,10 +141,10 @@ impl FmtOptions { (0, 0) } (Some(w), None) => { - let g = match w.checked_mul(DEFAULT_GOAL_TO_WIDTH_RATIO) { - Some(result) => (result / 100).max(1), - None => { Err(FmtError::InvalidWidth(w.to_string())) }?, - }; + let g = match w.checked_mul(DEFAULT_GOAL_TO_WIDTH_RATIO) { + Some(result) => (result / 100).max(1), + None => { Err(FmtError::InvalidWidth(w.to_string())) }?, + }; (w, g) } (None, Some(g)) => {