From 288ad97878af53c220e65c0a0434a35a7be7c6dc Mon Sep 17 00:00:00 2001 From: Atomei Alexandru Constantin Date: Sun, 7 Jan 2024 23:39:33 +0200 Subject: [PATCH 1/2] Made cksum to return an error if the algorithm blake2b is used on a directory --- src/uu/cksum/src/cksum.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/uu/cksum/src/cksum.rs b/src/uu/cksum/src/cksum.rs index e8d7da60e41..77f2749443c 100644 --- a/src/uu/cksum/src/cksum.rs +++ b/src/uu/cksum/src/cksum.rs @@ -169,6 +169,13 @@ where (ALGORITHM_OPTIONS_CRC, true) => println!("{sum} {sz}"), (ALGORITHM_OPTIONS_CRC, false) => println!("{sum} {sz} {}", filename.display()), (ALGORITHM_OPTIONS_BLAKE2B, _) if !options.untagged => { + if filename.is_dir() { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + format!("{}: Is a directory", filename.display()), + ) + .into()); + } if let Some(length) = options.length { // Multiply by 8 here, as we want to print the length in bits. println!("BLAKE2b-{} ({}) = {sum}", length * 8, filename.display()); From 0bfd4bbdf752f3a1cd28fb763d93652ab4395265 Mon Sep 17 00:00:00 2001 From: Atomei Alexandru Constantin Date: Mon, 8 Jan 2024 00:08:24 +0200 Subject: [PATCH 2/2] Added test to validate that it now generates the error for an arbitrary directory --- tests/by-util/test_cksum.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/by-util/test_cksum.rs b/tests/by-util/test_cksum.rs index 00c768164d5..fd55a69e487 100644 --- a/tests/by-util/test_cksum.rs +++ b/tests/by-util/test_cksum.rs @@ -286,3 +286,17 @@ fn test_length_is_zero() { .no_stderr() .stdout_is_fixture("length_is_zero.expected"); } + +#[test] +fn test_blake2b_fail_on_directory() { + let (at, mut ucmd) = at_and_ucmd!(); + + let folder_name = "a_folder"; + at.mkdir(folder_name); + + ucmd.arg("--algorithm=blake2b") + .arg(folder_name) + .fails() + .no_stdout() + .stderr_contains(format!("cksum: {folder_name}: Is a directory")); +}