From ab77eaea454eb247b3fdee20aecc385a270db488 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 14 Nov 2024 22:04:17 +0100 Subject: [PATCH] fmt: generate an error if the input is a directory tested by tests/misc/read-errors --- src/uu/fmt/src/fmt.rs | 7 +++++++ tests/by-util/test_fmt.rs | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/uu/fmt/src/fmt.rs b/src/uu/fmt/src/fmt.rs index 007e75dd6..bb2e1a978 100644 --- a/src/uu/fmt/src/fmt.rs +++ b/src/uu/fmt/src/fmt.rs @@ -189,6 +189,13 @@ fn process_file( _ => { let f = File::open(file_name) .map_err_context(|| format!("cannot open {} for reading", file_name.quote()))?; + if f.metadata() + .map_err_context(|| format!("cannot get metadata for {}", file_name.quote()))? + .is_dir() + { + return Err(USimpleError::new(1, "read error".to_string())); + } + Box::new(f) as Box } }); diff --git a/tests/by-util/test_fmt.rs b/tests/by-util/test_fmt.rs index 9bb82ede5..fb6416430 100644 --- a/tests/by-util/test_fmt.rs +++ b/tests/by-util/test_fmt.rs @@ -9,6 +9,11 @@ fn test_invalid_arg() { new_ucmd!().arg("--definitely-invalid").fails().code_is(1); } +#[test] +fn test_invalid_input() { + new_ucmd!().arg(".").fails().code_is(1); +} + #[test] fn test_fmt() { new_ucmd!()