From bd9f32f7aed240f5c626d4b7b4f053b8f1d1a425 Mon Sep 17 00:00:00 2001 From: Devel Date: Thu, 4 Jun 2026 18:03:36 +0300 Subject: [PATCH] numfmt: prevent panic if float precision specifier > 65535 (#12600) --- src/uu/numfmt/src/format.rs | 2 +- tests/by-util/test_numfmt.rs | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/uu/numfmt/src/format.rs b/src/uu/numfmt/src/format.rs index 61c45b2fa..a6c88eb37 100644 --- a/src/uu/numfmt/src/format.rs +++ b/src/uu/numfmt/src/format.rs @@ -628,7 +628,7 @@ fn transform_to( "{:.precision$}", round_with_precision(i2, round_method, precision), )), - None if is_precision_specified => { + None if is_precision_specified && precision <= u16::MAX.into() => { let i2 = round_with_precision(i2, round_method, 0); localize(format!("{i2:.precision$}")) } diff --git a/tests/by-util/test_numfmt.rs b/tests/by-util/test_numfmt.rs index ba2560a82..7e6f940bc 100644 --- a/tests/by-util/test_numfmt.rs +++ b/tests/by-util/test_numfmt.rs @@ -1627,3 +1627,11 @@ fn test_multibyte_suffix_issue11937() { .succeeds() .stdout_is(" 692.00€\n"); } + +#[test] +fn test_float_precision_greater_than_16bits() { + new_ucmd!() + .args(&["--to=iec", "--format=%.65536f", "1"]) + .succeeds() + .stdout_is("1\n"); +}