From 7b8279e63467b0578b560aee844787c8437f3186 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Fri, 11 Oct 2019 11:40:23 -0700 Subject: [PATCH] [golang-protobuf] Add Dockerfile and build.sh. (#2942) --- projects/golang-protobuf/Dockerfile | 26 ++++++++++++++++++++++++++ projects/golang-protobuf/build.sh | 17 +++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 projects/golang-protobuf/Dockerfile create mode 100755 projects/golang-protobuf/build.sh diff --git a/projects/golang-protobuf/Dockerfile b/projects/golang-protobuf/Dockerfile new file mode 100644 index 000000000..be337f804 --- /dev/null +++ b/projects/golang-protobuf/Dockerfile @@ -0,0 +1,26 @@ +# Copyright 2019 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 dneil@google.com + +ENV GO111MODULE="on" +ENV GOFUZZ111MODULE="on" + +RUN go get google.golang.org/protobuf/proto +RUN git clone https://go.googlesource.com/protobuf $SRC/protobuf +COPY build.sh $SRC/ +WORKDIR $SRC/protobuf diff --git a/projects/golang-protobuf/build.sh b/projects/golang-protobuf/build.sh new file mode 100755 index 000000000..67774abc5 --- /dev/null +++ b/projects/golang-protobuf/build.sh @@ -0,0 +1,17 @@ +function compile_fuzzer { + path=$1 + function=$2 + fuzzer=$3 + + # Instrument all Go files relevant to this fuzzer + go-fuzz-build -libfuzzer -func $function -o $fuzzer.a $path + + # Instrumented, compiled Go ($fuzzer.a) + fuzzing engine = fuzzer binary + $CXX $CXXFLAGS $LIB_FUZZING_ENGINE $fuzzer.a -lpthread -o $OUT/$fuzzer +} + +for x in internal/fuzz/*; do + if [ -d $x ]; then + compile_fuzzer ./$x Fuzz $(basename $x)_fuzzer + fi +done