diff --git a/projects/linkerd2-proxy/Dockerfile b/projects/linkerd2-proxy/Dockerfile index 1abb1d4f2..83f71b6b9 100644 --- a/projects/linkerd2-proxy/Dockerfile +++ b/projects/linkerd2-proxy/Dockerfile @@ -15,7 +15,17 @@ ################################################################################ FROM gcr.io/oss-fuzz-base/base-builder-rust +RUN apt-get --yes update \ + && apt-get install --no-install-recommends --yes \ + libssl-dev \ + pkg-config \ + python \ + && apt-get clean \ + && rm --recursive --force /var/lib/apt/lists/* + RUN git clone --depth 1 https://github.com/linkerd/linkerd2-proxy COPY build.sh $SRC/ WORKDIR $SRC + +COPY rustc.py $SRC/ diff --git a/projects/linkerd2-proxy/build.sh b/projects/linkerd2-proxy/build.sh index 81044bcb0..838d51c2f 100755 --- a/projects/linkerd2-proxy/build.sh +++ b/projects/linkerd2-proxy/build.sh @@ -15,9 +15,17 @@ # ################################################################################ +if [ "$SANITIZER" = "coverage" ] +then + export RUSTFLAGS="$RUSTFLAGS -C debug-assertions=no" + chmod +x $SRC/rustc.py + export RUSTC="$SRC/rustc.py" + export CFLAGS="" +fi + +BUILD_FUZZER="cargo +nightly fuzz build " TARGET_PATH="./fuzz/target/x86_64-unknown-linux-gnu/release" BASE="$SRC/linkerd2-proxy/linkerd" -BUILD_FUZZER="cargo +nightly fuzz build " cd ${BASE}/app/inbound ${BUILD_FUZZER} diff --git a/projects/linkerd2-proxy/rustc.py b/projects/linkerd2-proxy/rustc.py new file mode 100644 index 000000000..55ce4c40a --- /dev/null +++ b/projects/linkerd2-proxy/rustc.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python + +# Copyright 2021 Google LLC +# +# 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. + +import sys +import subprocess + +#Disable coverage for troubling crates. +sys.argv[0] = "rustc" +if "tokio_util" in sys.argv or "hyper" in sys.argv: + try: + sys.argv.remove("-Zinstrument-coverage") + except: + pass + print(sys.argv) +subprocess.call(sys.argv)