diff options
author | Jonathan Foote <foote@fastly.com> | 2020-01-27 09:40:46 -0500 |
---|---|---|
committer | jonathanmetzman <31354670+jonathanmetzman@users.noreply.github.com> | 2020-01-27 06:40:46 -0800 |
commit | 038d4ac14a61c0e3d1492834f95d04a38ba68d9f (patch) | |
tree | 87941f10b50a72280417381859067647a19a618b /projects/wasmtime | |
parent | d56ec878e01a3878e763ed072c0e0cb5ce52edfa (diff) | |
download | oss-fuzz-038d4ac14a61c0e3d1492834f95d04a38ba68d9f.tar.gz |
[wasmtime] initial integration (#3292)
Diffstat (limited to 'projects/wasmtime')
-rw-r--r-- | projects/wasmtime/Dockerfile | 30 | ||||
-rwxr-xr-x | projects/wasmtime/build.sh | 41 | ||||
-rw-r--r-- | projects/wasmtime/project.yaml | 4 |
3 files changed, 75 insertions, 0 deletions
diff --git a/projects/wasmtime/Dockerfile b/projects/wasmtime/Dockerfile new file mode 100644 index 000000000..bb3f388f8 --- /dev/null +++ b/projects/wasmtime/Dockerfile @@ -0,0 +1,30 @@ +# Copyright 2020 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 foote@fastly.com +RUN apt-get update && apt-get install -y make autoconf automake libtool curl cmake python llvm-dev libclang-dev clang + +RUN curl https://sh.rustup.rs | sh -s -- -y --default-toolchain=nightly +RUN /bin/bash -c "source $HOME/.cargo/env && cargo install cargo-fuzz" + +RUN git clone --depth 1 https://github.com/bytecodealliance/wasmtime wasmtime +WORKDIR wasmtime +RUN git submodule update --init --recursive + +RUN git clone --depth 1 https://github.com/bytecodealliance/wasmtime-libfuzzer-corpus wasmtime-libfuzzer-corpus + +COPY build.sh $SRC/ diff --git a/projects/wasmtime/build.sh b/projects/wasmtime/build.sh new file mode 100755 index 000000000..78916c375 --- /dev/null +++ b/projects/wasmtime/build.sh @@ -0,0 +1,41 @@ +#!/bin/bash -eu +# Copyright 2020 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. +# +################################################################################ + +# Note: This project creates Rust fuzz targets exclusively + +source $HOME/.cargo/env + +export CUSTOM_LIBFUZZER_PATH="$LIB_FUZZING_ENGINE_DEPRECATED" +export CUSTOM_LIBFUZZER_STD_CXX=c++ +PROJECT_DIR=$SRC/wasmtime + +# Because Rust does not support sanitizers via CFLAGS/CXXFLAGS, the environment +# variables are overridden with values from base-images/base-clang only + +export CFLAGS="-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" +export CXXFLAGS_EXTRA="-stdlib=libc++" +export CXXFLAGS="$CFLAGS $CXXFLAGS_EXTRA" + +cd $PROJECT_DIR/fuzz && cargo fuzz build -O --debug-assertions + +FUZZ_TARGET_OUTPUT_DIR=$PROJECT_DIR/target/x86_64-unknown-linux-gnu/release +for f in $SRC/wasmtime/fuzz/fuzz_targets/*.rs +do + FUZZ_TARGET_NAME=$(basename ${f%.*}) + cp $FUZZ_TARGET_OUTPUT_DIR/$FUZZ_TARGET_NAME $OUT/ + zip -jr $OUT/${FUZZ_TARGET_NAME}_seed_corpus.zip $PROJECT_DIR/wasmtime-libfuzzer-corpus/$FUZZ_TARGET_NAME/ +done diff --git a/projects/wasmtime/project.yaml b/projects/wasmtime/project.yaml index bc60af7fd..b36ab6d48 100644 --- a/projects/wasmtime/project.yaml +++ b/projects/wasmtime/project.yaml @@ -3,3 +3,7 @@ primary_contact: "jonathan.foote@gmail.com" auto_ccs: - "security@bytecodealliance.com" - "fitzgen@gmail.com" +sanitizers: + - address +fuzzing_engines: + - libfuzzer |