@@ -89,7 +89,40 @@ cmake . -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF
8989make install -j$( nproc)
9090
9191# Build karchive_fuzzer
92- $CXX $CXXFLAGS -fPIC -std=c++17 $SRC /karchive_fuzzer.cc -o $OUT /karchive_fuzzer -I /usr/include/QtCore/ -I /usr/local/include/KF6/KArchive -lQt6Core -lm -lQt6BundledPcre2 -ldl -lpthread $LIB_FUZZING_ENGINE /usr/local/lib/libz.a -lKF6Archive /usr/local/lib/libbz2.a -llzma /usr/local/lib/libzstd.a /usr/local/lib64/libcrypto.a
92+ HANDLER_TYPES=" K7Zip 7z karchive_fuzzer
93+ KAr ar karchive_fuzzer
94+ KTar tar karchive_fuzzer
95+ KZip zip karchive_fuzzer
96+ GZip tar_gz kcompressiondevice_fuzzer
97+ BZip2 tar_bz2 kcompressiondevice_fuzzer
98+ Xz tar_xz kcompressiondevice_fuzzer
99+ Zstd tar_zst kcompressiondevice_fuzzer
100+ Lz tar_lz kcompressiondevice_fuzzer"
93101
94- cd $SRC
95- find . -name " *.gz" -o -name " *.zip" -o -name " *.xz" -o -name " *.tar" -o -name " *.7z" | zip -q $OUT /karchive_fuzzer_seed_corpus.zip -@
102+ echo " $HANDLER_TYPES " | while read class format source_file; do
103+ (
104+ fuzz_target_name=k${format} _fuzzer
105+ fuzz_target_flags=" -DHANDLER=$class "
106+
107+ if [[ " $class " == " K7Zip" ]]; then # KZip in future?
108+ fuzz_target_flags+=" -DUSE_PASSWORD"
109+ fi
110+
111+ $CXX $CXXFLAGS -fPIC $fuzz_target_flags -std=c++17 $SRC /$source_file .cc -o $OUT /$fuzz_target_name \
112+ -I /usr/include/QtCore/ -I /usr/local/include/KF6/KArchive -lQt6Core -lm -lQt6BundledPcre2 \
113+ -ldl -lpthread $LIB_FUZZING_ENGINE /usr/local/lib/libz.a -lKF6Archive /usr/local/lib/libbz2.a \
114+ -llzma /usr/local/lib/libzstd.a /usr/local/lib64/libcrypto.a
115+
116+ extension=" ${format/ _/ .} " # Replace _ with .
117+ files=$( find . -name " *.${extension} " )
118+ if [ -n " $files " ]; then
119+ echo " $files " | zip -q $OUT /${fuzz_target_name} _seed_corpus.zip -@
120+ else
121+ echo " no files found with extension $extension for $fuzz_target_name seed corpus"
122+ fi
123+
124+ if [ -f " $SRC /$fuzz_target_name .dict" ]; then
125+ cp " $SRC /$fuzz_target_name .dict" $OUT /
126+ fi
127+ )
128+ done
0 commit comments