Skip to content

Commit eff2cd9

Browse files
authored
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
1 parent a9e2593 commit eff2cd9

18 files changed

+62
-57
lines changed

.vscode/cspell.dictionaries/workspace.wordlist.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,7 @@ utmpx
331331
uucore
332332
uucore_procs
333333
uudoc
334+
uufuzz
334335
uumain
335336
uutil
336337
uutests

fuzz/Cargo.lock

Lines changed: 13 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

fuzz/Cargo.toml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
[package]
22
name = "uucore-fuzz"
33
version = "0.0.0"
4+
description = "uutils ~ 'core' uutils fuzzers"
5+
repository = "https://github.com/uutils/coreutils/tree/main/fuzz/"
6+
edition.workspace = true
47
publish = false
8+
9+
[workspace.package]
510
edition = "2024"
11+
license = "MIT"
612

713
[package.metadata]
814
cargo-fuzz = true
915

1016
[dependencies]
11-
console = "0.15.0"
1217
libfuzzer-sys = "0.4.7"
13-
libc = "0.2.153"
14-
tempfile = "3.15.0"
1518
rand = { version = "0.9.0", features = ["small_rng"] }
16-
similar = "2.5.0"
17-
19+
uufuzz = { path = "uufuzz/" }
1820
uucore = { path = "../src/uucore/", features = ["parser"] }
1921
uu_date = { path = "../src/uu/date/" }
2022
uu_test = { path = "../src/uu/test/" }

fuzz/fuzz_targets/fuzz_cksum.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,19 @@
66

77
#![no_main]
88
use libfuzzer_sys::fuzz_target;
9+
use rand::Rng;
10+
use std::env::temp_dir;
911
use std::ffi::OsString;
12+
use std::fs::{self, File};
13+
use std::io::Write;
14+
use std::process::Command;
1015
use uu_cksum::uumain;
11-
mod fuzz_common;
12-
use crate::fuzz_common::{
16+
use uufuzz::{
1317
CommandResult, compare_result, generate_and_run_uumain, generate_random_file,
1418
generate_random_string,
1519
pretty_print::{print_or_empty, print_test_begin},
1620
replace_fuzz_binary_name, run_gnu_cmd,
1721
};
18-
use rand::Rng;
19-
use std::env::temp_dir;
20-
use std::fs::{self, File};
21-
use std::io::Write;
22-
use std::process::Command;
2322

2423
static CMD_PATH: &str = "cksum";
2524

fuzz/fuzz_targets/fuzz_cut.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ use uu_cut::uumain;
1111
use rand::Rng;
1212
use std::ffi::OsString;
1313

14-
mod fuzz_common;
15-
use crate::fuzz_common::{
14+
use uufuzz::{
1615
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
1716
};
1817
static CMD_PATH: &str = "cut";

fuzz/fuzz_targets/fuzz_echo.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,8 @@ use rand::Rng;
66
use rand::prelude::IndexedRandom;
77
use std::ffi::OsString;
88

9-
mod fuzz_common;
10-
use crate::fuzz_common::CommandResult;
11-
use crate::fuzz_common::{
12-
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
13-
};
9+
use uufuzz::CommandResult;
10+
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
1411

1512
static CMD_PATH: &str = "echo";
1613

fuzz/fuzz_targets/fuzz_env.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@ use uu_env::uumain;
1010

1111
use std::ffi::OsString;
1212

13-
mod fuzz_common;
14-
use crate::fuzz_common::{
13+
use rand::Rng;
14+
use uufuzz::{
1515
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
1616
};
17-
use rand::Rng;
1817

1918
static CMD_PATH: &str = "env";
2019

fuzz/fuzz_targets/fuzz_expr.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ use rand::Rng;
1212
use rand::prelude::IndexedRandom;
1313
use std::{env, ffi::OsString};
1414

15-
mod fuzz_common;
16-
use crate::fuzz_common::CommandResult;
17-
use crate::fuzz_common::{
18-
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
19-
};
15+
use uufuzz::CommandResult;
16+
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
2017
static CMD_PATH: &str = "expr";
2118

2219
fn generate_expr(max_depth: u32) -> String {

fuzz/fuzz_targets/fuzz_printf.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@ use rand::seq::IndexedRandom;
1313
use std::env;
1414
use std::ffi::OsString;
1515

16-
mod fuzz_common;
17-
use crate::fuzz_common::CommandResult;
18-
use crate::fuzz_common::{
19-
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
20-
};
16+
use uufuzz::CommandResult;
17+
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
2118

2219
static CMD_PATH: &str = "printf";
2320

fuzz/fuzz_targets/fuzz_seq.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,8 @@ use uu_seq::uumain;
1111
use rand::Rng;
1212
use std::ffi::OsString;
1313

14-
mod fuzz_common;
15-
use crate::fuzz_common::CommandResult;
16-
use crate::fuzz_common::{
17-
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
18-
};
14+
use uufuzz::CommandResult;
15+
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
1916
static CMD_PATH: &str = "seq";
2017

2118
fn generate_seq() -> String {

fuzz/fuzz_targets/fuzz_sort.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ use rand::Rng;
1212
use std::env;
1313
use std::ffi::OsString;
1414

15-
mod fuzz_common;
16-
use crate::fuzz_common::CommandResult;
17-
use crate::fuzz_common::{
18-
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
19-
};
15+
use uufuzz::CommandResult;
16+
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
2017
static CMD_PATH: &str = "sort";
2118

2219
fn generate_sort_args() -> String {

fuzz/fuzz_targets/fuzz_split.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ use uu_split::uumain;
1111
use rand::Rng;
1212
use std::ffi::OsString;
1313

14-
mod fuzz_common;
15-
use crate::fuzz_common::{
14+
use uufuzz::{
1615
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
1716
};
1817
static CMD_PATH: &str = "split";

fuzz/fuzz_targets/fuzz_test.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ use rand::Rng;
1212
use rand::prelude::IndexedRandom;
1313
use std::ffi::OsString;
1414

15-
mod fuzz_common;
16-
use crate::fuzz_common::CommandResult;
17-
use crate::fuzz_common::{
18-
compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
19-
};
15+
use uufuzz::CommandResult;
16+
use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd};
2017

2118
#[allow(clippy::upper_case_acronyms)]
2219
#[derive(PartialEq, Debug, Clone)]

fuzz/fuzz_targets/fuzz_tr.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ use uu_tr::uumain;
1010

1111
use rand::Rng;
1212

13-
mod fuzz_common;
14-
use crate::fuzz_common::{
13+
use uufuzz::{
1514
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
1615
};
1716
static CMD_PATH: &str = "tr";

fuzz/fuzz_targets/fuzz_wc.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ use uu_wc::uumain;
1111
use rand::Rng;
1212
use std::ffi::OsString;
1313

14-
mod fuzz_common;
15-
use crate::fuzz_common::{
14+
use uufuzz::{
1615
CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd,
1716
};
1817
static CMD_PATH: &str = "wc";

fuzz/uufuzz/Cargo.toml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[package]
2+
name = "uufuzz"
3+
authors = ["uutils developers"]
4+
description = "uutils ~ 'core' uutils fuzzing library"
5+
repository = "https://github.com/uutils/coreutils/tree/main/fuzz/uufuzz"
6+
version = "0.0.30"
7+
edition.workspace = true
8+
license.workspace = true
9+
10+
11+
[dependencies]
12+
console = "0.15.0"
13+
libc = "0.2.153"
14+
rand = { version = "0.9.0", features = ["small_rng"] }
15+
similar = "2.5.0"
16+
uucore = { path = "../../src/uucore/", features = ["parser"] }
17+
tempfile = "3.15.0"
File renamed without changes.

0 commit comments

Comments
 (0)