Skip to content

Commit

Permalink
test/cli/fuzz_test.py: added test for fuzzing crashes with C code (#6466
Browse files Browse the repository at this point in the history
)
  • Loading branch information
firewave authored Jun 1, 2024
1 parent f9b73ed commit d9e14f4
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 9 deletions.
6 changes: 3 additions & 3 deletions oss-fuzz/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -124,15 +124,15 @@ preprare-samples:

do-fuzz: oss-fuzz-client preprare-samples
mkdir -p corpus
./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../test/cli/fuzz-timeout
./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../test/cli/fuzz-crash_c ../test/cli/fuzz-timeout

dedup-corpus: oss-fuzz-client preprare-samples
mv corpus corpus_
mkdir -p corpus
./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus corpus_ samples ../test/cli/fuzz-crash ../test/cli/fuzz-timeout -merge=1
./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus corpus_ samples ../test/cli/fuzz-crash ../test/cli/fuzz-crash_c ../test/cli/fuzz-timeout -merge=1

# jobs:
# ./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../test/cli/fuzz-timeout -workers=12 -jobs=9
# ./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../test/cli/fuzz-crash_c ../test/cli/fuzz-timeout -workers=12 -jobs=9

# minimize:
# ./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 -minimize_crash=1 crash-0123456789abcdef
Expand Down
18 changes: 15 additions & 3 deletions test/cli/fuzz_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,25 @@ def test_fuzz_crash():
assert failures == {}


def test_fuzz_crash_c():
failures = {}

fuzz_crash_dir = os.path.join(__script_dir, 'fuzz-crash_c')
# TODO: remove check if we have test data
if not os.path.exists(fuzz_crash_dir):
return
for f in os.listdir(fuzz_crash_dir):
ret, stdout, _ = cppcheck(['-q', '--language=c', '--enable=all', '--inconclusive', f], cwd=fuzz_crash_dir)
if ret != 0:
failures[f] = stdout

assert failures == {}


def test_fuzz_timeout():
failures = []

fuzz_timeout_dir = os.path.join(__script_dir, 'fuzz-timeout')
# TODO: remove check if we have test data
if not os.path.exists(fuzz_timeout_dir):
return
for f in os.listdir(fuzz_timeout_dir):
try:
ret, stdout, _ = cppcheck(['-q', '--language=c++', '--enable=all', '--inconclusive', f], cwd=fuzz_timeout_dir, timeout=5)
Expand Down
6 changes: 3 additions & 3 deletions tools/dmake/dmake.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -376,15 +376,15 @@ static void write_ossfuzz_makefile(std::vector<std::string> libfiles_prio, std::
fout << '\n';
fout << "do-fuzz: oss-fuzz-client preprare-samples\n";
fout << "\tmkdir -p corpus\n";
fout << "\t./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../test/cli/fuzz-timeout\n";
fout << "\t./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../test/cli/fuzz-crash_c ../test/cli/fuzz-timeout\n";
fout << '\n';
fout << "dedup-corpus: oss-fuzz-client preprare-samples\n";
fout << "\tmv corpus corpus_\n";
fout << "\tmkdir -p corpus\n";
fout << "\t./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus corpus_ samples ../test/cli/fuzz-crash ../test/cli/fuzz-timeout -merge=1\n";
fout << "\t./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus corpus_ samples ../test/cli/fuzz-crash ../test/cli/fuzz-crash_c ../test/cli/fuzz-timeout -merge=1\n";
fout << '\n';
fout << "# jobs:\n";
fout << "# ./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../test/cli/fuzz-timeout -workers=12 -jobs=9\n";
fout << "# ./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../test/cli/fuzz-crash_c ../test/cli/fuzz-timeout -workers=12 -jobs=9\n";
fout << '\n';
fout << "# minimize:\n";
fout << "# ./oss-fuzz-client -only_ascii=1 -timeout=5 -detect_leaks=0 -minimize_crash=1 crash-0123456789abcdef\n";
Expand Down

0 comments on commit d9e14f4

Please sign in to comment.