mirror of
https://github.com/uutils/coreutils.git
synced 2025-07-07 13:35:00 +00:00
Create an uufuzz crate for common functions and use it (#7954)
* uufuzz: create a crate with the common functions * uufuzz: move the fuzz-common functions * uufuzz: polish the crate * adjust the fuzzer to use uufuzz
This commit is contained in:
parent
a9e259369b
commit
eff2cd997e
18 changed files with 62 additions and 57 deletions
|
@ -331,6 +331,7 @@ utmpx
|
|||
uucore
|
||||
uucore_procs
|
||||
uudoc
|
||||
uufuzz
|
||||
uumain
|
||||
uutil
|
||||
uutests
|
||||
|
|
17
fuzz/Cargo.lock
generated
17
fuzz/Cargo.lock
generated
|
@ -1347,12 +1347,8 @@ dependencies = [
|
|||
name = "uucore-fuzz"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"console",
|
||||
"libc",
|
||||
"libfuzzer-sys",
|
||||
"rand 0.9.1",
|
||||
"similar",
|
||||
"tempfile",
|
||||
"uu_cksum",
|
||||
"uu_cut",
|
||||
"uu_date",
|
||||
|
@ -1367,6 +1363,7 @@ dependencies = [
|
|||
"uu_tr",
|
||||
"uu_wc",
|
||||
"uucore",
|
||||
"uufuzz",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1378,6 +1375,18 @@ dependencies = [
|
|||
"uuhelp_parser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "uufuzz"
|
||||
version = "0.0.30"
|
||||
dependencies = [
|
||||
"console",
|
||||
"libc",
|
||||
"rand 0.9.1",
|
||||
"similar",
|
||||
"tempfile",
|
||||
"uucore",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "uuhelp_parser"
|
||||
version = "0.0.30"
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
[package]
|
||||
name = "uucore-fuzz"
|
||||
version = "0.0.0"
|
||||
description = "uutils ~ 'core' uutils fuzzers"
|
||||
repository = "https://github.com/uutils/coreutils/tree/main/fuzz/"
|
||||
edition.workspace = true
|
||||
publish = false
|
||||
|
||||
[workspace.package]
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
|
||||
[package.metadata]
|
||||
cargo-fuzz = true
|
||||
|
||||
[dependencies]
|
||||
console = "0.15.0"
|
||||
libfuzzer-sys = "0.4.7"
|
||||
libc = "0.2.153"
|
||||
tempfile = "3.15.0"
|
||||
rand = { version = "0.9.0", features = ["small_rng"] }
|
||||
similar = "2.5.0"
|
||||
|
||||
uufuzz = { path = "uufuzz/" }
|
||||
uucore = { path = "../src/uucore/", features = ["parser"] }
|
||||
uu_date = { path = "../src/uu/date/" }
|
||||
uu_test = { path = "../src/uu/test/" }
|
||||
|
|
|
@ -6,20 +6,19 @@
|
|||
|
||||
#![no_main]
|
||||
use libfuzzer_sys::fuzz_target;
|
||||
use rand::Rng;
|
||||
use std::env::temp_dir;
|
||||
use std::ffi::OsString;
|
||||
use std::fs::{self, File};
|
||||
use std::io::Write;
|
||||
use std::process::Command;
|
||||
use uu_cksum::uumain;
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::{
|
||||
use uufuzz::{
|
||||
CommandResult, compare_result, generate_and_run_uumain, generate_random_file,
|
||||
generate_random_string,
|
||||
pretty_print::{print_or_empty, print_test_begin},
|
||||
replace_fuzz_binary_name, run_gnu_cmd,
|
||||
};
|
||||
use rand::Rng;
|
||||
use std::env::temp_dir;
|
||||
use std::fs::{self, File};
|
||||
use std::io::Write;
|
||||
use std::process::Command;
|
||||
|
||||
static CMD_PATH: &str = "cksum";
|
||||
|
||||
|
|
|
@ -11,8 +11,7 @@ use uu_cut::uumain;
|
|||
use rand::Rng;
|
||||
use std::ffi::OsString;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::{
|
||||
use uufuzz::{
|
||||
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
static CMD_PATH: &str = "cut";
|
||||
|
|
|
@ -6,11 +6,8 @@ use rand::Rng;
|
|||
use rand::prelude::IndexedRandom;
|
||||
use std::ffi::OsString;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::CommandResult;
|
||||
use crate::fuzz_common::{
|
||||
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
use uufuzz::CommandResult;
|
||||
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
|
||||
|
||||
static CMD_PATH: &str = "echo";
|
||||
|
||||
|
|
|
@ -10,11 +10,10 @@ use uu_env::uumain;
|
|||
|
||||
use std::ffi::OsString;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::{
|
||||
use rand::Rng;
|
||||
use uufuzz::{
|
||||
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
use rand::Rng;
|
||||
|
||||
static CMD_PATH: &str = "env";
|
||||
|
||||
|
|
|
@ -12,11 +12,8 @@ use rand::Rng;
|
|||
use rand::prelude::IndexedRandom;
|
||||
use std::{env, ffi::OsString};
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::CommandResult;
|
||||
use crate::fuzz_common::{
|
||||
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
use uufuzz::CommandResult;
|
||||
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
|
||||
static CMD_PATH: &str = "expr";
|
||||
|
||||
fn generate_expr(max_depth: u32) -> String {
|
||||
|
|
|
@ -13,11 +13,8 @@ use rand::seq::IndexedRandom;
|
|||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::CommandResult;
|
||||
use crate::fuzz_common::{
|
||||
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
use uufuzz::CommandResult;
|
||||
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
|
||||
|
||||
static CMD_PATH: &str = "printf";
|
||||
|
||||
|
|
|
@ -11,11 +11,8 @@ use uu_seq::uumain;
|
|||
use rand::Rng;
|
||||
use std::ffi::OsString;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::CommandResult;
|
||||
use crate::fuzz_common::{
|
||||
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
use uufuzz::CommandResult;
|
||||
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
|
||||
static CMD_PATH: &str = "seq";
|
||||
|
||||
fn generate_seq() -> String {
|
||||
|
|
|
@ -12,11 +12,8 @@ use rand::Rng;
|
|||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::CommandResult;
|
||||
use crate::fuzz_common::{
|
||||
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
use uufuzz::CommandResult;
|
||||
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
|
||||
static CMD_PATH: &str = "sort";
|
||||
|
||||
fn generate_sort_args() -> String {
|
||||
|
|
|
@ -11,8 +11,7 @@ use uu_split::uumain;
|
|||
use rand::Rng;
|
||||
use std::ffi::OsString;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::{
|
||||
use uufuzz::{
|
||||
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
static CMD_PATH: &str = "split";
|
||||
|
|
|
@ -12,11 +12,8 @@ use rand::Rng;
|
|||
use rand::prelude::IndexedRandom;
|
||||
use std::ffi::OsString;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::CommandResult;
|
||||
use crate::fuzz_common::{
|
||||
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
use uufuzz::CommandResult;
|
||||
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
|
||||
|
||||
#[allow(clippy::upper_case_acronyms)]
|
||||
#[derive(PartialEq, Debug, Clone)]
|
||||
|
|
|
@ -10,8 +10,7 @@ use uu_tr::uumain;
|
|||
|
||||
use rand::Rng;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::{
|
||||
use uufuzz::{
|
||||
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
static CMD_PATH: &str = "tr";
|
||||
|
|
|
@ -11,8 +11,7 @@ use uu_wc::uumain;
|
|||
use rand::Rng;
|
||||
use std::ffi::OsString;
|
||||
|
||||
mod fuzz_common;
|
||||
use crate::fuzz_common::{
|
||||
use uufuzz::{
|
||||
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
|
||||
};
|
||||
static CMD_PATH: &str = "wc";
|
||||
|
|
17
fuzz/uufuzz/Cargo.toml
Normal file
17
fuzz/uufuzz/Cargo.toml
Normal file
|
@ -0,0 +1,17 @@
|
|||
[package]
|
||||
name = "uufuzz"
|
||||
authors = ["uutils developers"]
|
||||
description = "uutils ~ 'core' uutils fuzzing library"
|
||||
repository = "https://github.com/uutils/coreutils/tree/main/fuzz/uufuzz"
|
||||
version = "0.0.30"
|
||||
edition.workspace = true
|
||||
license.workspace = true
|
||||
|
||||
|
||||
[dependencies]
|
||||
console = "0.15.0"
|
||||
libc = "0.2.153"
|
||||
rand = { version = "0.9.0", features = ["small_rng"] }
|
||||
similar = "2.5.0"
|
||||
uucore = { path = "../../src/uucore/", features = ["parser"] }
|
||||
tempfile = "3.15.0"
|
Loading…
Add table
Add a link
Reference in a new issue