From 6afa515859416a446fe9a3c15a01575bda93173a Mon Sep 17 00:00:00 2001 From: Dorian Peron Date: Sat, 8 Feb 2025 00:44:27 +0100 Subject: [PATCH] fuzz(cksum): fix fuzzer to use GNU's binary instead of the systems', remove false positives, improve logging --- fuzz/fuzz_targets/fuzz_cksum.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/fuzz/fuzz_targets/fuzz_cksum.rs b/fuzz/fuzz_targets/fuzz_cksum.rs index 47be18c9e..c14457ab2 100644 --- a/fuzz/fuzz_targets/fuzz_cksum.rs +++ b/fuzz/fuzz_targets/fuzz_cksum.rs @@ -11,7 +11,8 @@ use uu_cksum::uumain; mod fuzz_common; use crate::fuzz_common::{ compare_result, generate_and_run_uumain, generate_random_file, generate_random_string, - run_gnu_cmd, CommandResult, + pretty_print::{print_or_empty, print_test_begin}, + replace_fuzz_binary_name, run_gnu_cmd, CommandResult, }; use rand::Rng; use std::env::temp_dir; @@ -129,13 +130,15 @@ fuzz_target!(|_data: &[u8]| { if let Ok(checksum_file_path) = generate_checksum_file(algo, &file_path, &selected_digest_opts) { + print_test_begin(format!("cksum {:?}", args)); + if let Ok(content) = fs::read_to_string(&checksum_file_path) { - println!("File content: {checksum_file_path}={content}"); + println!("File content ({})", checksum_file_path); + print_or_empty(&content); } else { eprintln!("Error reading the checksum file."); } - println!("args: {:?}", args); - let rust_result = generate_and_run_uumain(&args, uumain, None); + let mut rust_result = generate_and_run_uumain(&args, uumain, None); let gnu_result = match run_gnu_cmd(CMD_PATH, &args[1..], false, None) { Ok(result) => result, @@ -151,6 +154,9 @@ fuzz_target!(|_data: &[u8]| { } }; + // Lower the number of false positives caused by binary names + replace_fuzz_binary_name("cksum", &mut rust_result); + compare_result( "cksum", &format!("{:?}", &args[1..]),