Skip to content

Commit

Permalink
added targets for local fuzzing to oss-fuzz/Makefile (#6185)
Browse files Browse the repository at this point in the history
  • Loading branch information
firewave authored Mar 28, 2024
1 parent eba8c40 commit e2720e1
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,8 @@ compile_commands.json

#vs code
/.vscode

# fuzzing output
/oss-fuzz/corpus
/oss-fuzz/corpus_
/oss-fuzz/samples
23 changes: 22 additions & 1 deletion oss-fuzz/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This file is generated by dmake, do not edit.

# CXX=clang++ MATCHCOMPILER=yes CXXFLAGS="-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address -fsanitize-address-use-after-scope -DHAVE_BOOST" LIB_FUZZING_ENGINE="-fsanitize=fuzzer" oss-fuzz-client
# make CXX=clang++ MATCHCOMPILER=yes CXXFLAGS="-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address -fsanitize-address-use-after-scope -DHAVE_BOOST" LIB_FUZZING_ENGINE="-fsanitize=fuzzer" oss-fuzz-client

MATCHCOMPILER=yes
ifndef MATCHCOMPILER
Expand Down Expand Up @@ -112,6 +112,27 @@ translate: translate.o type2.o
clean:
rm -f *.o build/*.o oss-fuzz-client no-fuzz translate

preprare-samples:
rm -rf samples
mkdir -p samples
cp -R ../samples .
find ./samples -type f -name '*.txt' -exec rm -vf {} \;

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

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

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

# minimize:
# ./oss-fuzz-client -only_ascii=1 -timeout=3 -detect_leaks=0 -minimize_crash=1 crash-0123456789abcdef

simplecpp.o: ../externals/simplecpp/simplecpp.cpp ../externals/simplecpp/simplecpp.h
$(CXX) ${LIB_FUZZING_ENGINE} $(CPPFLAGS) $(CXXFLAGS) -w -c -o $@ ../externals/simplecpp/simplecpp.cpp

Expand Down
23 changes: 22 additions & 1 deletion tools/dmake/dmake.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ static void write_ossfuzz_makefile(std::vector<std::string> libfiles_prio, std::

fout << "# This file is generated by dmake, do not edit.\n";
fout << '\n';
fout << "# CXX=clang++ MATCHCOMPILER=yes CXXFLAGS=\"-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address -fsanitize-address-use-after-scope -DHAVE_BOOST\" LIB_FUZZING_ENGINE=\"-fsanitize=fuzzer\" oss-fuzz-client\n";
fout << "# make CXX=clang++ MATCHCOMPILER=yes CXXFLAGS=\"-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address -fsanitize-address-use-after-scope -DHAVE_BOOST\" LIB_FUZZING_ENGINE=\"-fsanitize=fuzzer\" oss-fuzz-client\n";
fout << '\n';
fout << "MATCHCOMPILER=yes\n"; // always need to enable the matchcompiler so the library files are being copied
makeMatchcompiler(fout, "../", "--read-dir ../lib");
Expand All @@ -367,6 +367,27 @@ static void write_ossfuzz_makefile(std::vector<std::string> libfiles_prio, std::
fout << "clean:\n";
fout << "\trm -f *.o build/*.o oss-fuzz-client no-fuzz translate\n";
fout << '\n';
fout << "preprare-samples:\n";
fout << "\trm -rf samples\n";
fout << "\tmkdir -p samples\n";
fout << "\tcp -R ../samples .\n";
fout << "\tfind ./samples -type f -name '*.txt' -exec rm -vf {} \\;\n";
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=3 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../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=3 -detect_leaks=0 corpus corpus_ samples ../test/cli/fuzz-crash ../test/cli/fuzz-timeout -merge=1\n";
fout << '\n';
fout << "# jobs:\n";
fout << "# ./oss-fuzz-client -only_ascii=1 -timeout=3 -detect_leaks=0 corpus samples ../test/cli/fuzz-crash ../test/cli/fuzz-timeout -workers=12 -jobs=9\n";
fout << '\n';
fout << "# minimize:\n";
fout << "# ./oss-fuzz-client -only_ascii=1 -timeout=3 -detect_leaks=0 -minimize_crash=1 crash-0123456789abcdef\n";
fout << '\n';

compilefiles(fout, extfiles, "${LIB_FUZZING_ENGINE}");
compilefiles(fout, libfiles_prio, "${LIB_FUZZING_ENGINE}");
Expand Down

0 comments on commit e2720e1

Please sign in to comment.