#!/bin/bash -eu # Copyright 2020 Google LLC # # 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. # ################################################################################ # Install Rust nightly #curl https://sh.rustup.rs -sSf | sh -s -- -y #source $HOME/.cargo/env # Build libmpdec tar zxf mpdecimal-2.5.1.tar.gz cd mpdecimal-2.5.1 ./configure && make -j$(nproc) cd $SRC/openssl if [[ $CFLAGS = *sanitize=memory* ]] then CFLAGS+=" -DOPENSSL_NO_ASM=1" fi ./config --debug no-fips no-shared no-tests make -j$(nproc) # Build libgmp cd $SRC/libgmp autoreconf -ivf ./configure --enable-maintainer-mode make -j$(nproc) # Build OpenSSL module cd $SRC/bignum-fuzzer/modules/openssl OPENSSL_INCLUDE_PATH=$SRC/openssl/include OPENSSL_LIBCRYPTO_A_PATH=$SRC/openssl/libcrypto.a make # Build Go module cd $SRC/bignum-fuzzer/modules/go make # Build Rust module #cd $SRC/bignum-fuzzer/modules/rust #make # Build C++-Boost module cd $SRC/bignum-fuzzer/modules/cpp_boost make # Build libgmp module cd $SRC/bignum-fuzzer/modules/libgmp LIBGMP_INCLUDE_PATH=$SRC/libgmp LIBGMP_A_PATH=$SRC/libgmp/.libs/libgmp.a make # Build libmpdec module cd $SRC/bignum-fuzzer/modules/libmpdec LIBMPDEC_A_PATH=$SRC/mpdecimal-2.5.1/libmpdec/libmpdec.a LIBMPDEC_INCLUDE_PATH=$SRC/mpdecimal-2.5.1/libmpdec make BASE_CXXFLAGS=$CXXFLAGS # Build OpenSSL/Go fuzzer cd $SRC/bignum-fuzzer ./config-modules.sh openssl go CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NO_NEGATIVE=1 -DBNFUZZ_FLAG_NUM_LEN=1200 -DBNFUZZ_FLAG_ALL_OPERATIONS=1" LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make # Copy OpenSSL/Go fuzzer to the designated location cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_openssl_go_no_negative_num_len_1200_all_operations # Build OpenSSL/Rust fuzzer #cd $SRC/bignum-fuzzer #make clean #./config-modules.sh openssl rust #CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=1200 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1" #LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make # Copy OpenSSL/Rust fuzzer to the designated location #cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_openssl_rust_num_len_1200_all_operations_num_loops_1 # Build OpenSSL/C++-Boost fuzzer cd $SRC/bignum-fuzzer make clean ./config-modules.sh openssl cpp_boost CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=1200 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1" LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make # Copy OpenSSL/C++-Boost fuzzer to the designated location cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_openssl_cpp_boost_num_len_1200_all_operations_num_loops_1 # Build OpenSSL/libgmp fuzzer cd $SRC/bignum-fuzzer make clean ./config-modules.sh openssl libgmp CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=1200 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1" LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make # Copy OpenSSL/libgmp fuzzer to the designated location cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_openssl_libgmp_num_len_1200_all_operations_num_loops_1 # Build mbedtls cd $SRC/mbedtls make lib -j$(nproc) # Build BoringSSL cd $SRC/boringssl mkdir build cd build cmake -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" -DBORINGSSL_ALLOW_CXX_RUNTIME=1 .. make -j$(nproc) # Build BoringSSL module cd $SRC/bignum-fuzzer/modules/openssl make clean CFLAGS="$CFLAGS -DBIGNUM_FUZZER_BORINGSSL" OPENSSL_INCLUDE_PATH=$SRC/boringssl/include OPENSSL_LIBCRYPTO_A_PATH=$SRC/boringssl/build/crypto/libcrypto.a make # Build mbedtls module cd $SRC/bignum-fuzzer/modules/mbedtls MBEDTLS_LIBMBEDCRYPTO_A_PATH=$SRC/mbedtls/library/libmbedcrypto.a MBEDTLS_INCLUDE_PATH=$SRC/mbedtls/include make # Build BoringSSL/mbedtls fuzzer cd $SRC/bignum-fuzzer make clean ./config-modules.sh boringssl mbedtls CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=100 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1" LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make # Copy BoringSSL/mbedtls fuzzer to the designated location cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_boringssl_mbedtls_num_len_100_all_operations_num_loops_1 # Build BoringSSL/libmpdec fuzzer cd $SRC/bignum-fuzzer make clean ./config-modules.sh boringssl libmpdec CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=100 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1" LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make # Copy BoringSSL/libmpdec fuzzer to the designated location cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_boringssl_libmpdec_num_len_100_all_operations_num_loops_1 # Copy seed corpora to the designated location cp $SRC/bignum-fuzzer/corpora/fuzzer_openssl_go_no_negative_num_len_1200_all_operations_seed_corpus.zip $OUT #cp $SRC/bignum-fuzzer/corpora/fuzzer_openssl_rust_num_len_1200_all_operations_num_loops_1_seed_corpus.zip $OUT cp $SRC/bignum-fuzzer/corpora/fuzzer_openssl_cpp_boost_num_len_1200_all_operations_num_loops_1_seed_corpus.zip $OUT cp $SRC/bignum-fuzzer/corpora/fuzzer_openssl_libgmp_num_len_1200_all_operations_num_loops_1_seed_corpus.zip $OUT cp $SRC/bignum-fuzzer/corpora/fuzzer_boringssl_mbedtls_num_len_100_all_operations_num_loops_1_seed_corpus.zip $OUT cp $SRC/bignum-fuzzer/corpora/fuzzer_boringssl_mbedtls_num_len_100_all_operations_num_loops_1_seed_corpus.zip $OUT/fuzzer_boringssl_libmpdec_num_len_100_all_operations_num_loops_1_seed_corpus.zip