• 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# Enable null cipher
19sed -i 's/#define CFLAG_INTERNAL.*/#define CFLAG_INTERNAL 0/' cipher.c
20
21# Turn off agent unlock password failure delays
22sed -i 's|\(usleep.*\)|// \1|' ssh-agent.c
23
24# Build project
25autoreconf
26env
27env CFLAGS="" ./configure \
28	--with-cflags="-DWITH_XMSS=1" \
29	--with-cflags-after="$CFLAGS" \
30	--with-ldflags-after="-g $CFLAGS"
31make -j$(nproc) all
32
33# Build fuzzers
34EXTRA_CFLAGS="-DCIPHER_NONE_AVAIL=1"
35STATIC_CRYPTO="-Wl,-Bstatic -lcrypto -Wl,-Bdynamic"
36
37SK_NULL=ssh-sk-null.o
38SK_DUMMY=sk-dummy.o
39
40$CC $CFLAGS $EXTRA_CFLAGS -I. -g -c \
41	regress/misc/fuzz-harness/ssh-sk-null.cc -o ssh-sk-null.o
42$CC $CFLAGS $EXTRA_CFLAGS -I. -g -c \
43	-DSK_DUMMY_INTEGRATE=1 regress/misc/sk-dummy/sk-dummy.c -o sk-dummy.o
44
45$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
46	regress/misc/fuzz-harness/pubkey_fuzz.cc -o $OUT/pubkey_fuzz \
47	-lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO $LIB_FUZZING_ENGINE
48$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
49	regress/misc/fuzz-harness/privkey_fuzz.cc -o $OUT/privkey_fuzz \
50	-lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO $LIB_FUZZING_ENGINE
51$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
52	regress/misc/fuzz-harness/sig_fuzz.cc -o $OUT/sig_fuzz \
53	-lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO $LIB_FUZZING_ENGINE
54$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
55	regress/misc/fuzz-harness/authopt_fuzz.cc -o $OUT/authopt_fuzz \
56	auth-options.o -lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO \
57	$LIB_FUZZING_ENGINE
58$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
59	regress/misc/fuzz-harness/sshsig_fuzz.cc -o $OUT/sshsig_fuzz \
60	sshsig.o -lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO \
61	$LIB_FUZZING_ENGINE
62$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
63	regress/misc/fuzz-harness/sshsigopt_fuzz.cc -o $OUT/sshsigopt_fuzz \
64	sshsig.o -lssh -lopenbsd-compat $SK_NULL $STATIC_CRYPTO \
65	$LIB_FUZZING_ENGINE
66$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
67	regress/misc/fuzz-harness/kex_fuzz.cc -o $OUT/kex_fuzz \
68	-lssh -lopenbsd-compat -lz $SK_NULL $STATIC_CRYPTO \
69	$LIB_FUZZING_ENGINE
70
71$CC $CFLAGS $EXTRA_CFLAGS -I. -g -c \
72	regress/misc/fuzz-harness/agent_fuzz_helper.c -o agent_fuzz_helper.o
73$CC $CFLAGS $EXTRA_CFLAGS -I. -g -c -DENABLE_SK_INTERNAL=1 ssh-sk.c -o ssh-sk.o
74$CXX $CXXFLAGS -std=c++11 $EXTRA_CFLAGS -I. -L. -Lopenbsd-compat -g \
75	regress/misc/fuzz-harness/agent_fuzz.cc -o $OUT/agent_fuzz \
76	$SK_DUMMY agent_fuzz_helper.o ssh-sk.o -lssh -lopenbsd-compat -lz \
77	$STATIC_CRYPTO $LIB_FUZZING_ENGINE
78
79# Prepare seed corpora
80CASES="$SRC/openssh-fuzz-cases"
81(set -e ; cd ${CASES}/key ; zip -r $OUT/pubkey_fuzz_seed_corpus.zip .)
82(set -e ; cd ${CASES}/privkey ; zip -r $OUT/privkey_fuzz_seed_corpus.zip .)
83(set -e ; cd ${CASES}/sig ; zip -r $OUT/sig_fuzz_seed_corpus.zip .)
84(set -e ; cd ${CASES}/authopt ; zip -r $OUT/authopt_fuzz_seed_corpus.zip .)
85(set -e ; cd ${CASES}/sshsig ; zip -r $OUT/sshsig_fuzz_seed_corpus.zip .)
86(set -e ; cd ${CASES}/sshsigopt ; zip -r $OUT/sshsigopt_fuzz_seed_corpus.zip .)
87(set -e ; cd ${CASES}/kex ; zip -r $OUT/kex_fuzz_seed_corpus.zip .)
88(set -e ; cd ${CASES}/agent ; zip -r $OUT/agent_fuzz_seed_corpus.zip .)
89