#!/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 sed -i "s/Libs:.*/Libs: -L\${libdir} -lssl -lsmime -lnssdev -lnss_static -lpk11wrap_static -lcryptohi -lcerthi -lcertdb -lnssb -lnssutil -lnsspki -ldl -lm -lsqlite -lsoftokn_static -lfreebl_static -lgcm-aes-x86_c_lib -lhw-acc-crypto-avx -lhw-acc-crypto-avx2 /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