[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:
htuch 2018-02-02 12:17:53 -05:00 committed by Kostya Serebryany
parent 4bf9e7f8fc
commit d0fc0203d2
3 changed files with 100 additions and 0 deletions

38
projects/envoy/Dockerfile Normal file
View File

@ -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/

56
projects/envoy/build.sh Executable file
View File

@ -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

View File

@ -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"