• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash -eu
2# Copyright 2020 Google LLC
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16################################################################################
17
18# Install Rust nightly
19#curl https://sh.rustup.rs -sSf | sh -s -- -y
20#source $HOME/.cargo/env
21
22# Build libmpdec
23tar zxf mpdecimal-2.5.1.tar.gz
24cd mpdecimal-2.5.1
25./configure && make -j$(nproc)
26
27cd $SRC/openssl
28if [[ $CFLAGS = *sanitize=memory* ]]
29then
30  CFLAGS+=" -DOPENSSL_NO_ASM=1"
31fi
32./config --debug no-fips no-shared no-tests
33make -j$(nproc)
34
35# Build libgmp
36cd $SRC/libgmp
37autoreconf -ivf
38./configure --enable-maintainer-mode
39make -j$(nproc)
40
41# Build OpenSSL module
42cd $SRC/bignum-fuzzer/modules/openssl
43OPENSSL_INCLUDE_PATH=$SRC/openssl/include OPENSSL_LIBCRYPTO_A_PATH=$SRC/openssl/libcrypto.a make
44
45# Build Go module
46cd $SRC/bignum-fuzzer/modules/go
47make
48
49# Build Rust module
50#cd $SRC/bignum-fuzzer/modules/rust
51#make
52
53# Build C++-Boost module
54cd $SRC/bignum-fuzzer/modules/cpp_boost
55make
56
57# Build libgmp module
58cd $SRC/bignum-fuzzer/modules/libgmp
59LIBGMP_INCLUDE_PATH=$SRC/libgmp LIBGMP_A_PATH=$SRC/libgmp/.libs/libgmp.a make
60
61# Build libmpdec module
62cd $SRC/bignum-fuzzer/modules/libmpdec
63LIBMPDEC_A_PATH=$SRC/mpdecimal-2.5.1/libmpdec/libmpdec.a LIBMPDEC_INCLUDE_PATH=$SRC/mpdecimal-2.5.1/libmpdec make
64
65BASE_CXXFLAGS=$CXXFLAGS
66
67# Build OpenSSL/Go fuzzer
68cd $SRC/bignum-fuzzer
69./config-modules.sh openssl go
70CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NO_NEGATIVE=1 -DBNFUZZ_FLAG_NUM_LEN=1200 -DBNFUZZ_FLAG_ALL_OPERATIONS=1"
71LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make
72
73# Copy OpenSSL/Go fuzzer to the designated location
74cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_openssl_go_no_negative_num_len_1200_all_operations
75
76# Build OpenSSL/Rust fuzzer
77#cd $SRC/bignum-fuzzer
78#make clean
79#./config-modules.sh openssl rust
80#CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=1200 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1"
81#LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make
82
83# Copy OpenSSL/Rust fuzzer to the designated location
84#cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_openssl_rust_num_len_1200_all_operations_num_loops_1
85
86# Build OpenSSL/C++-Boost fuzzer
87cd $SRC/bignum-fuzzer
88make clean
89./config-modules.sh openssl cpp_boost
90CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=1200 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1"
91LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make
92
93# Copy OpenSSL/C++-Boost fuzzer to the designated location
94cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_openssl_cpp_boost_num_len_1200_all_operations_num_loops_1
95
96# Build OpenSSL/libgmp fuzzer
97cd $SRC/bignum-fuzzer
98make clean
99./config-modules.sh openssl libgmp
100CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=1200 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1"
101LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make
102
103# Copy OpenSSL/libgmp fuzzer to the designated location
104cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_openssl_libgmp_num_len_1200_all_operations_num_loops_1
105
106# Build mbedtls
107cd $SRC/mbedtls
108make lib -j$(nproc)
109
110# Build BoringSSL
111cd $SRC/boringssl
112mkdir build
113cd build
114cmake -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" -DBORINGSSL_ALLOW_CXX_RUNTIME=1 ..
115make -j$(nproc)
116
117# Build BoringSSL module
118cd $SRC/bignum-fuzzer/modules/openssl
119make clean
120CFLAGS="$CFLAGS -DBIGNUM_FUZZER_BORINGSSL" OPENSSL_INCLUDE_PATH=$SRC/boringssl/include OPENSSL_LIBCRYPTO_A_PATH=$SRC/boringssl/build/crypto/libcrypto.a make
121
122# Build mbedtls module
123cd $SRC/bignum-fuzzer/modules/mbedtls
124MBEDTLS_LIBMBEDCRYPTO_A_PATH=$SRC/mbedtls/library/libmbedcrypto.a MBEDTLS_INCLUDE_PATH=$SRC/mbedtls/include make
125
126# Build BoringSSL/mbedtls fuzzer
127cd $SRC/bignum-fuzzer
128make clean
129./config-modules.sh boringssl mbedtls
130CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=100 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1"
131LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make
132
133# Copy BoringSSL/mbedtls fuzzer to the designated location
134cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_boringssl_mbedtls_num_len_100_all_operations_num_loops_1
135
136# Build BoringSSL/libmpdec fuzzer
137cd $SRC/bignum-fuzzer
138make clean
139./config-modules.sh boringssl libmpdec
140CXXFLAGS="$BASE_CXXFLAGS -DBNFUZZ_FLAG_NUM_LEN=100 -DBNFUZZ_FLAG_ALL_OPERATIONS=1 -DBNFUZZ_FLAG_NUM_LOOPS=1"
141LIBFUZZER_LINK="$LIB_FUZZING_ENGINE" make
142
143# Copy BoringSSL/libmpdec fuzzer to the designated location
144cp $SRC/bignum-fuzzer/fuzzer $OUT/fuzzer_boringssl_libmpdec_num_len_100_all_operations_num_loops_1
145
146# Copy seed corpora to the designated location
147cp $SRC/bignum-fuzzer/corpora/fuzzer_openssl_go_no_negative_num_len_1200_all_operations_seed_corpus.zip $OUT
148#cp $SRC/bignum-fuzzer/corpora/fuzzer_openssl_rust_num_len_1200_all_operations_num_loops_1_seed_corpus.zip $OUT
149cp $SRC/bignum-fuzzer/corpora/fuzzer_openssl_cpp_boost_num_len_1200_all_operations_num_loops_1_seed_corpus.zip $OUT
150cp $SRC/bignum-fuzzer/corpora/fuzzer_openssl_libgmp_num_len_1200_all_operations_num_loops_1_seed_corpus.zip $OUT
151cp $SRC/bignum-fuzzer/corpora/fuzzer_boringssl_mbedtls_num_len_100_all_operations_num_loops_1_seed_corpus.zip $OUT
152cp $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
153