From 6c3de3e92fff02ef7212c7bb8730fc5357ee3da1 Mon Sep 17 00:00:00 2001 From: oech3 <79379754+oech3@users.noreply.github.com> Date: Wed, 18 Mar 2026 08:36:30 +0900 Subject: [PATCH] baseNM: protect names against argv[0] (#11373) --- src/uu/base32/src/base32.rs | 2 +- src/uu/base32/src/base_common.rs | 2 +- src/uu/base64/src/base64.rs | 2 +- src/uu/basenc/src/basenc.rs | 3 ++- tests/by-util/test_base32.rs | 9 +++++++++ tests/by-util/test_base64.rs | 9 +++++++++ tests/by-util/test_basenc.rs | 9 +++++++++ 7 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/uu/base32/src/base32.rs b/src/uu/base32/src/base32.rs index 0003f5413..227fbb97d 100644 --- a/src/uu/base32/src/base32.rs +++ b/src/uu/base32/src/base32.rs @@ -16,5 +16,5 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { } pub fn uu_app() -> Command { - base_common::base_app(translate!("base32-about"), translate!("base32-usage")) + base_common::base_app(translate!("base32-about"), translate!("base32-usage")).name("base32") } diff --git a/src/uu/base32/src/base_common.rs b/src/uu/base32/src/base_common.rs index 4e58487f1..0c7e13c23 100644 --- a/src/uu/base32/src/base_common.rs +++ b/src/uu/base32/src/base_common.rs @@ -104,7 +104,7 @@ pub fn parse_base_cmd_args(args: impl uucore::Args, command: Command) -> UResult } pub fn base_app(about: String, usage: String) -> Command { - let cmd = Command::new(uucore::util_name()) + let cmd = Command::new("") .version(uucore::crate_version!()) .about(about) .override_usage(format_usage(&usage)) diff --git a/src/uu/base64/src/base64.rs b/src/uu/base64/src/base64.rs index 4f8a903e0..1fb6b2ea7 100644 --- a/src/uu/base64/src/base64.rs +++ b/src/uu/base64/src/base64.rs @@ -16,5 +16,5 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { } pub fn uu_app() -> Command { - base_common::base_app(translate!("base64-about"), translate!("base64-usage")) + base_common::base_app(translate!("base64-about"), translate!("base64-usage")).name("base64") } diff --git a/src/uu/basenc/src/basenc.rs b/src/uu/basenc/src/basenc.rs index 5b9fc0bbf..4629ecf54 100644 --- a/src/uu/basenc/src/basenc.rs +++ b/src/uu/basenc/src/basenc.rs @@ -45,7 +45,8 @@ fn get_encodings() -> Vec<(&'static str, Format, String)> { pub fn uu_app() -> Command { let encodings = get_encodings(); - let mut command = base_common::base_app(translate!("basenc-about"), translate!("basenc-usage")); + let mut command = base_common::base_app(translate!("basenc-about"), translate!("basenc-usage")) + .name("basenc"); for encoding in &encodings { let raw_arg = Arg::new(encoding.0) diff --git a/tests/by-util/test_base32.rs b/tests/by-util/test_base32.rs index 36d28c25a..87e044574 100644 --- a/tests/by-util/test_base32.rs +++ b/tests/by-util/test_base32.rs @@ -6,6 +6,15 @@ use uutests::new_ucmd; +#[test] +fn test_version() { + new_ucmd!() + .arg("--version") + .succeeds() + .no_stderr() + .stdout_is(format!("base32 {}\n", uucore::crate_version!())); +} + #[test] fn test_encode() { let input = "Hello, World!"; diff --git a/tests/by-util/test_base64.rs b/tests/by-util/test_base64.rs index 8b558f1a1..7d02b62f7 100644 --- a/tests/by-util/test_base64.rs +++ b/tests/by-util/test_base64.rs @@ -9,6 +9,15 @@ use uutests::at_and_ucmd; use uutests::new_ucmd; +#[test] +fn test_version() { + new_ucmd!() + .arg("--version") + .succeeds() + .no_stderr() + .stdout_is(format!("base64 {}\n", uucore::crate_version!())); +} + #[test] #[cfg(target_os = "linux")] fn test_base64_non_utf8_paths() { diff --git a/tests/by-util/test_basenc.rs b/tests/by-util/test_basenc.rs index a3c92b885..0cce5ea8c 100644 --- a/tests/by-util/test_basenc.rs +++ b/tests/by-util/test_basenc.rs @@ -8,6 +8,15 @@ use uutests::{at_and_ucmd, new_ucmd}; +#[test] +fn test_version() { + new_ucmd!() + .arg("--version") + .succeeds() + .no_stderr() + .stdout_is(format!("basenc {}\n", uucore::crate_version!())); +} + #[test] fn test_z85_not_padded_decode() { // The z85 crate deviates from the standard in some cases; we have to catch those