diff --git a/projects/openweave/Dockerfile b/projects/openweave/Dockerfile new file mode 100644 index 000000000..39442ba84 --- /dev/null +++ b/projects/openweave/Dockerfile @@ -0,0 +1,26 @@ +# 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. +# +################################################################################ + +FROM gcr.io/oss-fuzz-base/base-builder +RUN apt-get update && apt-get install -y python-pip python-setuptools bridge-utils \ + libglib2.0-dev libdbus-1-dev libudev-dev \ + libical-dev libreadline-dev udev \ + libtool autoconf automake +RUN pip3 install --user google-cloud googleapis-common-protos grpcio protobuf pycryptodomex +RUN cpan -i Text::Template +RUN git clone --depth 1 https://github.com/openweave/openweave-core +WORKDIR $SRC/openweave-core +COPY build.sh $SRC/ diff --git a/projects/openweave/build.sh b/projects/openweave/build.sh new file mode 100755 index 000000000..e97a742fe --- /dev/null +++ b/projects/openweave/build.sh @@ -0,0 +1,55 @@ +#!/bin/bash -eu +# 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. +# +################################################################################ + +function copy_lib + { + local fuzzer_path=$1 + local lib=$2 + cp $(ldd ${fuzzer_path} | grep "${lib}" | awk '{ print $3 }') ${OUT}/lib + } + +mkdir -p $OUT/lib + +if [ "$SANITIZER" = "coverage" ] +then + # so that we do not get openssl + export CXXFLAGS="$CXXFLAGS -fsanitize=fuzzer-no-link,address" + export CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link,address" +fi + +# build project +./bootstrap +# java fails with Source option 6 is no longer supported. Use 7 or later. +./configure --disable-java --enable-fuzzing --disable-shared +make -j$(nproc) +find src/test-apps/fuzz/ -type f -executable -name "Fuzz*" | while read i; do + patchelf --set-rpath '$ORIGIN/lib' ${i} + copy_lib ${i} libglib + copy_lib ${i} libdbus + cp ${i} $OUT/ +done + +# build corpus +ls $SRC/openweave-core/src/test-apps/fuzz/corpus/ | while read f; do + zip -j $OUT/${f}_seed_corpus.zip $SRC/openweave-core/src/test-apps/fuzz/corpus/${f}/*; +done + +cd $OUT/ +ls *_seed_corpus.zip | grep PASE | while read c; do + cp $c Fuzz$c; +done + diff --git a/projects/openweave/project.yaml b/projects/openweave/project.yaml new file mode 100644 index 000000000..93a53b0d7 --- /dev/null +++ b/projects/openweave/project.yaml @@ -0,0 +1,10 @@ +homepage: "https://openweave.io" +language: c++ +primary_contact: "szewczyk@google.com" +auto_ccs: + - "p.antoine@catenacyber.fr" +fuzzing_engines: + - libfuzzer +sanitizers: + - address +main_repo: 'https://github.com/openweave/openweave-core'