mirror of https://github.com/google/oss-fuzz.git
72 lines
2.5 KiB
Bash
Executable File
72 lines
2.5 KiB
Bash
Executable File
#!/bin/bash -eu
|
|
# Copyright 2020 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.
|
|
#
|
|
################################################################################
|
|
|
|
# Workaround for fixing AFL++ build, discarded for others.
|
|
# See https://github.com/google/oss-fuzz/issues/4280#issuecomment-773977943
|
|
export AFL_LLVM_INSTRUMENT=CLASSIC,NGRAM-4
|
|
|
|
# Compile NSS
|
|
mkdir $SRC/nss-nspr
|
|
mv $SRC/nss $SRC/nss-nspr/
|
|
mv $SRC/nspr $SRC/nss-nspr/
|
|
cd $SRC/nss-nspr/
|
|
# We do not need NSS to be built with address sanitizer
|
|
CFLAGS="" CXXFLAGS="" nss/build.sh --static
|
|
|
|
# Create a package config for NSS
|
|
cp dist/Debug/lib/pkgconfig/{nspr,nss}.pc
|
|
sed -i "s/Debug//g" dist/Debug/lib/pkgconfig/nss.pc
|
|
sed -i "s/\/lib/\/lib\/Debug/g" dist/Debug/lib/pkgconfig/nss.pc
|
|
sed -i "s/include\/nspr/public\/nss/g" dist/Debug/lib/pkgconfig/nss.pc
|
|
sed -i "s/NSPR/NSS/g" dist/Debug/lib/pkgconfig/nss.pc
|
|
LIBS="-lssl -lsmime -lnssdev -lnss_static -lpk11wrap_static -lcryptohi"
|
|
LIBS="$LIBS -lcerthi -lcertdb -lnssb -lnssutil -lnsspki -ldl -lm -lsqlite"
|
|
LIBS="$LIBS -lsoftokn_static -lsha-x86_c_lib -lfreebl_static"
|
|
LIBS="$LIBS -lgcm-aes-x86_c_lib -lhw-acc-crypto-avx -lhw-acc-crypto-avx2"
|
|
sed -i "s/Libs:.*/Libs: -L\${libdir} $LIBS/g" dist/Debug/lib/pkgconfig/nss.pc
|
|
echo "Requires: nspr" >> dist/Debug/lib/pkgconfig/nss.pc
|
|
|
|
export NSS_NSPR_PATH=$(realpath $SRC/nss-nspr/)
|
|
export PKG_CONFIG_PATH=$NSS_NSPR_PATH/dist/Debug/lib/pkgconfig
|
|
export LD_LIBRARY_PATH=$NSS_NSPR_PATH/dist/Debug/lib
|
|
|
|
# compile libcacard
|
|
BUILD=$WORK/meson
|
|
rm -rf $BUILD
|
|
mkdir $BUILD
|
|
|
|
cd $SRC/libcacard
|
|
# Drop the tests as they are not needed and require too much dependencies
|
|
meson $BUILD -Ddefault_library=static -Ddisable_tests=true
|
|
ninja -C $BUILD
|
|
|
|
# We need nss db to work
|
|
cp -r tests/db $OUT/
|
|
|
|
echo "XXXXXXXX" > $WORK/testinput
|
|
|
|
fuzzers=$(find $BUILD/fuzz/ -executable -type f)
|
|
for f in $fuzzers; do
|
|
fuzzer=$(basename $f)
|
|
cp $f $OUT/
|
|
# Check if it runs at least in build image
|
|
$OUT/$fuzzer $WORK/testinput
|
|
#zip -j $OUT/${fuzzer}_seed_corpus.zip fuzz/corpora/${fuzzer}/*
|
|
done
|
|
|
|
rm $WORK/testinput
|