2016-08-06 18:11:39 +00:00
|
|
|
#!/bin/bash -eu
|
2016-11-17 02:38:22 +00:00
|
|
|
# Copyright 2016 Google Inc.
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
#
|
|
|
|
################################################################################
|
2016-07-21 18:38:57 +00:00
|
|
|
|
2017-03-13 23:01:58 +00:00
|
|
|
cd expat
|
|
|
|
|
2016-07-21 18:38:57 +00:00
|
|
|
./buildconf.sh
|
|
|
|
./configure
|
2016-11-03 06:38:18 +00:00
|
|
|
make clean
|
|
|
|
make -j$(nproc) all
|
2016-07-26 20:59:42 +00:00
|
|
|
|
2017-03-15 08:42:57 +00:00
|
|
|
ENCODING_TYPES="UTF_16 \
|
|
|
|
UTF_8 \
|
|
|
|
ISO_8859_1 \
|
|
|
|
US_ASCII \
|
|
|
|
UTF_16BE \
|
|
|
|
UTF_16LE"
|
2016-10-12 23:25:06 +00:00
|
|
|
|
2017-03-15 08:42:57 +00:00
|
|
|
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} \
|
2019-05-01 15:09:55 +00:00
|
|
|
$LIB_FUZZING_ENGINE lib/.libs/libexpat.a
|
2017-03-15 08:42:57 +00:00
|
|
|
|
|
|
|
# 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
|
|
|
|
else
|
|
|
|
cp $SRC/xml.dict $OUT/${fuzz_target_name}.dict
|
|
|
|
fi
|
|
|
|
|
2017-03-16 10:27:28 +00:00
|
|
|
# Generate .option files for each fuzzer.
|
|
|
|
echo -en "[libfuzzer]\ndict = ${fuzz_target_name}.dict\nmax_len = 1024\n" \
|
|
|
|
> $OUT/${fuzz_target_name}.options
|
2017-03-15 08:42:57 +00:00
|
|
|
done
|