• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash -eu
2# Copyright 2017 Google Inc.
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# Build project
19autoreconf
20env
21env CFLAGS="" ./configure \
22	--with-cflags="-DWITH_XMSS=1" \
23	--with-cflags-after="$CFLAGS" \
24	--with-ldflags-after="-g $CFLAGS"
25make -j$(nproc) all
26
27# Build fuzzers
28STATIC_CRYPTO="-Wl,-Bstatic -lcrypto -Wl,-Bdynamic"
29
30COMMON=ssh-sk-null.o
31
32$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
33	regress/misc/fuzz-harness/ssh-sk-null.cc -c -o ssh-sk-null.o
34
35$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
36	regress/misc/fuzz-harness/pubkey_fuzz.cc -o $OUT/pubkey_fuzz \
37	-lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO $LIB_FUZZING_ENGINE
38$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
39	regress/misc/fuzz-harness/privkey_fuzz.cc -o $OUT/privkey_fuzz \
40	-lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO $LIB_FUZZING_ENGINE
41$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
42	regress/misc/fuzz-harness/sig_fuzz.cc -o $OUT/sig_fuzz \
43	-lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO $LIB_FUZZING_ENGINE
44$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
45	regress/misc/fuzz-harness/authopt_fuzz.cc -o $OUT/authopt_fuzz \
46	auth-options.o -lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO \
47	$LIB_FUZZING_ENGINE
48$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
49	regress/misc/fuzz-harness/sshsig_fuzz.cc -o $OUT/sshsig_fuzz \
50	sshsig.o -lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO \
51	$LIB_FUZZING_ENGINE
52$CXX $CXXFLAGS -std=c++11 -I. -L. -Lopenbsd-compat -g \
53	regress/misc/fuzz-harness/sshsigopt_fuzz.cc -o $OUT/sshsigopt_fuzz \
54	sshsig.o -lssh -lopenbsd-compat $COMMON $STATIC_CRYPTO \
55	$LIB_FUZZING_ENGINE
56
57# Prepare seed corpora
58CASES="$SRC/openssh-fuzz-cases"
59(set -e ; cd ${CASES}/key ; zip -r $OUT/pubkey_fuzz_seed_corpus.zip .)
60(set -e ; cd ${CASES}/privkey ; zip -r $OUT/privkey_fuzz_seed_corpus.zip .)
61(set -e ; cd ${CASES}/sig ; zip -r $OUT/sig_fuzz_seed_corpus.zip .)
62(set -e ; cd ${CASES}/authopt ; zip -r $OUT/authopt_fuzz_seed_corpus.zip .)
63(set -e ; cd ${CASES}/sshsig ; zip -r $OUT/sshsig_fuzz_seed_corpus.zip .)
64(set -e ; cd ${CASES}/sshsigopt ; zip -r $OUT/sshsigopt_fuzz_seed_corpus.zip .)
65