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

fuzz(cksum): fix fuzzer to use GNU's binary instead of the systems', remove false positives, improve logging

This commit is contained in:
Dorian Peron 2025-02-08 00:44:27 +01:00
parent 5d952afa3d
commit 6afa515859

View file

@ -11,7 +11,8 @@ use uu_cksum::uumain;
mod fuzz_common; mod fuzz_common;
use crate::fuzz_common::{ use crate::fuzz_common::{
compare_result, generate_and_run_uumain, generate_random_file, generate_random_string, 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 rand::Rng;
use std::env::temp_dir; use std::env::temp_dir;
@ -129,13 +130,15 @@ fuzz_target!(|_data: &[u8]| {
if let Ok(checksum_file_path) = if let Ok(checksum_file_path) =
generate_checksum_file(algo, &file_path, &selected_digest_opts) 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) { 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 { } else {
eprintln!("Error reading the checksum file."); eprintln!("Error reading the checksum file.");
} }
println!("args: {:?}", args); let mut rust_result = generate_and_run_uumain(&args, uumain, None);
let rust_result = generate_and_run_uumain(&args, uumain, None);
let gnu_result = match run_gnu_cmd(CMD_PATH, &args[1..], false, None) { let gnu_result = match run_gnu_cmd(CMD_PATH, &args[1..], false, None) {
Ok(result) => result, 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( compare_result(
"cksum", "cksum",
&format!("{:?}", &args[1..]), &format!("{:?}", &args[1..]),