diff --git a/projects/simdjson/Dockerfile b/projects/simdjson/Dockerfile new file mode 100644 index 000000000..a017a907d --- /dev/null +++ b/projects/simdjson/Dockerfile @@ -0,0 +1,32 @@ +# 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 pauldreikossfuzz@gmail.com + +RUN apt-get update && apt-get install -y ninja-build wget + +# We need a modern cmake +ENV CMAKEVER 3.15.4 +RUN wget --quiet https://github.com/Kitware/CMake/releases/download/v${CMAKEVER}/cmake-${CMAKEVER}-Linux-x86_64.sh ;\ + chmod +x cmake-${CMAKEVER}-Linux-x86_64.sh ; \ + ./cmake-${CMAKEVER}-Linux-x86_64.sh --skip-license --prefix="/usr/local" + +# point to https://github.com/lemire/simdjson.git once integrated +RUN git clone --depth 1 --single-branch --branch paul/ossfuzz_step1 https://github.com/pauldreik/simdjson.git simdjson +WORKDIR simdjson +COPY build.sh $SRC/ + diff --git a/projects/simdjson/build.sh b/projects/simdjson/build.sh new file mode 100755 index 000000000..3fd9730b8 --- /dev/null +++ b/projects/simdjson/build.sh @@ -0,0 +1,40 @@ +#!/bin/bash -eu +# 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. +# +################################################################################ + +# build the corpus (all inputs are json, the same corpus can be used for everyone) +fuzz/build_corpus.sh + +mkdir build +cd build + +cmake .. \ +-GNinja \ +-DCMAKE_BUILD_TYPE=Debug \ +-DSIMDJSON_BUILD_STATIC=On \ +-DENABLE_FUZZING=On \ +-DSIMDJSON_FUZZ_LINKMAIN=Off \ +-DSIMDJSON_FUZZ_LDFLAGS=$LIB_FUZZING_ENGINE + +cmake --build . + +cp fuzz/fuzz_* $OUT + +# all corpora are equal, they all take json as input +for f in $OUT/fuzz* ; do + cp ../corpus.zip $(basename $f).zip +done + diff --git a/projects/simdjson/project.yaml b/projects/simdjson/project.yaml new file mode 100644 index 000000000..6b2cb2d8a --- /dev/null +++ b/projects/simdjson/project.yaml @@ -0,0 +1,5 @@ +homepage: "https://github.com/lemire/simdjson" +primary_contact: "pauldreikossfuzz@gmail.com" +auto_ccs: + - "lemire@gmail.com" +