1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 11:37:44 +00:00

Weird env variable names should trigger an error.

For example `env a=b=c printenv a=b` should fail

Tested by tests/misc/printenv.sh
This commit is contained in:
Sylvestre Ledru 2022-11-06 17:28:05 +01:00
parent 9ce788632b
commit 9a5d18b8f6
2 changed files with 17 additions and 3 deletions

View file

@ -40,16 +40,21 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
return Ok(()); return Ok(());
} }
let mut not_found = false; let mut error_found = false;
for env_var in variables { for env_var in variables {
// we silently ignore a=b as variable but we trigger an error
if env_var.contains('=') {
error_found = true;
continue;
}
if let Ok(var) = env::var(env_var) { if let Ok(var) = env::var(env_var) {
print!("{}{}", var, separator); print!("{}{}", var, separator);
} else { } else {
not_found = true; error_found = true;
} }
} }
if not_found { if error_found {
Err(1.into()) Err(1.into())
} else { } else {
Ok(()) Ok(())

View file

@ -28,3 +28,12 @@ fn test_get_var() {
assert!(!result.stdout_str().is_empty()); assert!(!result.stdout_str().is_empty());
assert_eq!(result.stdout_str().trim(), "VALUE"); assert_eq!(result.stdout_str().trim(), "VALUE");
} }
#[test]
fn test_ignore_equal_var() {
let scene = TestScenario::new(util_name!());
// tested by gnu/tests/misc/printenv.sh
let result = scene.ucmd().env("a=b", "c").arg("a=b").fails();
assert!(result.stdout_str().is_empty());
}