aboutsummaryrefslogtreecommitdiffhomepage
path: root/projects/expat/build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'projects/expat/build.sh')
-rwxr-xr-xprojects/expat/build.sh46
1 files changed, 18 insertions, 28 deletions
diff --git a/projects/expat/build.sh b/projects/expat/build.sh
index b185038f..21c4f511 100755
--- a/projects/expat/build.sh
+++ b/projects/expat/build.sh
@@ -15,35 +15,25 @@
#
################################################################################
-cd expat
+mkdir -p build
+cd build
+cmake ../expat -DEXPAT_BUILD_FUZZERS=ON -DEXPAT_OSSFUZZ_BUILD=ON -DEXPAT_SHARED_LIBS=OFF
+make -j$(nproc)
-./buildconf.sh
-./configure
-make clean
-make -j$(nproc) all
-
-ENCODING_TYPES="UTF_16 \
- UTF_8 \
- ISO_8859_1 \
- US_ASCII \
- UTF_16BE \
- UTF_16LE"
-
-for encoding in $ENCODING_TYPES; do
- fuzz_target_name=parse_${encoding}_fuzzer
-
- $CXX $CXXFLAGS -std=c++11 -Ilib/ -DENCODING_${encoding} \
- $SRC/parse_fuzzer.cc -o $OUT/${fuzz_target_name} \
- $LIB_FUZZING_ENGINE lib/.libs/libexpat.a
-
- # Use dictionaries in proper encoding for 16-bit encoding types.
- if [[ $encoding == *"UTF_16"* ]]; then
- cp $SRC/xml_${encoding}.dict $OUT/${fuzz_target_name}.dict
+for fuzzer in fuzz/*;
+do
+ cp $fuzzer $OUT
+ fuzzer_name=$(basename $fuzzer)
+ if [[ ${fuzzer_name} =~ ^.*UTF-16$ ]];
+ then
+ cp $SRC/xml_UTF_16.dict $OUT/${fuzzer_name}.dict
+ elif [[ ${fuzzer_name} =~ ^.*UTF-16LE$ ]];
+ then
+ cp $SRC/xml_UTF_16LE.dict $OUT/${fuzzer_name}.dict
+ elif [[ ${fuzzer_name} =~ ^.*UTF-16BE$ ]];
+ then
+ cp $SRC/xml_UTF_16BE.dict $OUT/${fuzzer_name}.dict
else
- cp $SRC/xml.dict $OUT/${fuzz_target_name}.dict
+ cp $SRC/xml.dict $OUT/${fuzzer_name}.dict
fi
-
- # Generate .option files for each fuzzer.
- echo -en "[libfuzzer]\ndict = ${fuzz_target_name}.dict\nmax_len = 1024\n" \
- > $OUT/${fuzz_target_name}.options
done