mirror of https://github.com/google/oss-fuzz.git
[Envoy] Add project. (#1130)
* [Envoy] Add project. Following the steps at https://github.com/google/oss-fuzz/blob/master/docs/new_project_guide.md. Signed-off-by: Harvey Tuch <htuch@google.com> * Dockerfile review feedback. Signed-off-by: Harvey Tuch <htuch@google.com>
This commit is contained in:
parent
4bf9e7f8fc
commit
d0fc0203d2
|
@ -0,0 +1,38 @@
|
|||
# Copyright 2018 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.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
FROM gcr.io/oss-fuzz-base/base-builder
|
||||
MAINTAINER htuch@google.com
|
||||
|
||||
RUN apt-get update && apt-get -y install \
|
||||
build-essential \
|
||||
openjdk-8-jdk \
|
||||
make \
|
||||
curl \
|
||||
autoconf \
|
||||
libtool \
|
||||
cmake \
|
||||
wget \
|
||||
golang
|
||||
|
||||
# Install Bazel
|
||||
RUN echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
|
||||
RUN curl https://bazel.build/bazel-release.pub.gpg | apt-key add -
|
||||
RUN apt-get update && apt-get install -y bazel
|
||||
|
||||
RUN git clone https://github.com/envoyproxy/envoy.git
|
||||
WORKDIR /src/envoy/
|
||||
COPY build.sh $SRC/
|
|
@ -0,0 +1,56 @@
|
|||
#!/bin/bash -eu
|
||||
# Copyright 2018 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.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
FUZZER_TARGETS="\
|
||||
test/common/common:base64_fuzz_test \
|
||||
"
|
||||
|
||||
FUZZER_DICTIONARIES="\
|
||||
"
|
||||
|
||||
# Skip gperftools, ASAN runs don't use tcmalloc.
|
||||
export DISABLE_GPERFTOOLS_BUILD=1
|
||||
sed -i 's#envoy_dependencies()#envoy_dependencies(skip_targets=["tcmalloc_and_profiler"])#' WORKSPACE
|
||||
|
||||
# Build Envoy
|
||||
declare -r EXTRA_BAZEL_FLAGS="$(for f in ${CXXFLAGS}; do echo --copt=$f --linkopt=$f; done)"
|
||||
declare -r BAZEL_BUILD_TARGETS="$(for t in ${FUZZER_TARGETS}; do echo //"$t"_driverless; done)"
|
||||
bazel build --verbose_failures --dynamic_mode=off --spawn_strategy=standalone \
|
||||
--genrule_strategy=standalone --strip=never \
|
||||
--copt=-fno-sanitize=vptr --linkopt=-fno-sanitize=vptr \
|
||||
--define tcmalloc=disabled --define signal_trace=disabled \
|
||||
--define ENVOY_CONFIG_ASAN=1 --copt -D__SANITIZE_ADDRESS__ \
|
||||
--define force_libcpp=enabled \
|
||||
--build_tag_filters=-no_asan --test_tag_filters=-no_asan \
|
||||
${EXTRA_BAZEL_FLAGS} \
|
||||
--linkopt="-lFuzzingEngine" \
|
||||
${BAZEL_BUILD_TARGETS}
|
||||
|
||||
# Copy out test binaries from bazel-bin/ and zip up related test corpuses.
|
||||
for t in ${FUZZER_TARGETS}
|
||||
do
|
||||
TARGET_PATH="${t/:/\/}"
|
||||
TARGET_BASE="$(expr "$t" : '.*:\(.*\)_fuzz_test')"
|
||||
cp bazel-bin/"${TARGET_PATH}"_driverless "${OUT}"/"${TARGET_BASE}"_fuzz_test
|
||||
zip "${OUT}/${TARGET_BASE}"_fuzz_test_seed_corpus.zip \
|
||||
"$(dirname "${TARGET_PATH}")"/"${TARGET_BASE}"_corpus/*
|
||||
done
|
||||
|
||||
# Copy dictionaries and options files to $OUT/
|
||||
for d in $FUZZER_DICTIONARIES; do
|
||||
cp "$d" "${OUT}"/
|
||||
done
|
|
@ -0,0 +1,6 @@
|
|||
homepage: "https://www.envoyproxy.io/"
|
||||
primary_contact: "htuch@google.com"
|
||||
auto_ccs:
|
||||
- "mklein@lyft.com"
|
||||
- "alyssar@google.com"
|
||||
- "envoy-security@googlegroups.com"
|
Loading…
Reference in New Issue