Add gRPC to oss-fuzz projects (#373)

This commit is contained in:
matt-kwong 2017-02-10 17:07:39 -08:00 committed by Kostya Serebryany
parent 8339132314
commit c5245aa9df
3 changed files with 101 additions and 0 deletions

39
projects/grpc/Dockerfile Normal file
View File

@ -0,0 +1,39 @@
# Copyright 2016 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 ossfuzz/base-builder
MAINTAINER mattkwong@google.com
RUN apt-get install -y software-properties-common python-software-properties
RUN add-apt-repository ppa:webupd8team/java
RUN apt-get update
RUN apt-get -y install \
vim \
build-essential \
openjdk-8-jdk \
make \
curl \
autoconf \
libtool
# 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 --recursive https://github.com/grpc/grpc grpc
WORKDIR /src/grpc/
COPY build.sh $SRC/

60
projects/grpc/build.sh Executable file
View File

@ -0,0 +1,60 @@
#!/bin/bash -eu
# Copyright 2016 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_FILES="\
test/core/end2end/fuzzers/api_fuzzer.c \
test/core/json/fuzzer.c \
test/core/client_channel/uri_fuzzer_test.c \
test/core/http/request_fuzzer.c \
test/core/http/response_fuzzer.c \
test/core/nanopb/fuzzer_response.c \
test/core/nanopb/fuzzer_serverlist.c \
test/core/slice/percent_decode_fuzzer.c \
test/core/slice/percent_encode_fuzzer.c \
test/core/transport/chttp2/hpack_parser_fuzzer_test.c \
test/core/end2end/fuzzers/client_fuzzer.c \
test/core/end2end/fuzzers/server_fuzzer.c \
test/core/security/ssl_server_fuzzer.c \
"
FUZZER_LIBRARIES="\
bazel-bin/*.a \
bazel-bin/test/core/util/*.a \
bazel-bin/test/core/end2end/*.a \
bazel-bin/external/submodule_boringssl/*.so \
bazel-bin/external/submodule_zlib/_objs/z/external/submodule_zlib/*.o \
bazel-bin/third_party/nanopb/*.so \
bazel-bin/*.a \
"
# build project
bazel
BAZEL build --spawn_strategy=standalone --genrule_strategy=standalone :all test/... examples/cpp/...
CFLAGS="${CFLAGS} -Iinclude -I."
CXXFLAGS="${CXXFLAGS} -Iinclude -I. -stdlib=libc++"
for file in $FUZZER_FILES; do
fuzzer_name=$(basename $file .c)
fuzzer_object="${file::-1}o"
echo "Building fuzzer $fuzzer_name"
$CC $CFLAGS \
$file -c -o $fuzzer_object
$CXX $CXXFLAGS \
$fuzzer_object -o $OUT/$fuzzer_name \
-lFuzzingEngine ${FUZZER_LIBRARIES}
done

View File

@ -0,0 +1,2 @@
homepage: "http://www.grpc.io/"
primary_contact: "mattkwong@google.com"