diff --git a/projects/speex/Dockerfile b/projects/speex/Dockerfile new file mode 100644 index 000000000..05a425316 --- /dev/null +++ b/projects/speex/Dockerfile @@ -0,0 +1,23 @@ +# Copyright 2018 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 tmatth@videolan.org +RUN apt-get update && apt-get install -y make autoconf libtool pkg-config wget +RUN git clone https://git.xiph.org/ogg.git +RUN git clone https://git.xiph.org/speex.git speex +WORKDIR speex +COPY build.sh $SRC/ diff --git a/projects/speex/build.sh b/projects/speex/build.sh new file mode 100644 index 000000000..8b319ed05 --- /dev/null +++ b/projects/speex/build.sh @@ -0,0 +1,44 @@ +#!/bin/bash -eu +# Copyright 2018 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. +# +################################################################################ + +pushd $SRC/ogg +./autogen.sh +./configure --prefix="$WORK" --enable-static --disable-shared --disable-crc +make clean +make -j$(nproc) +make install +popd + +./autogen.sh +export CFLAGS="$CFLAGS -DDISABLE_NOTIFICATIONS -DDISABLE_WARNINGS" +# Build fixed-point fuzzer +PKG_CONFIG_PATH="$WORK"/lib/pkgconfig ./configure --prefix="$WORK" --enable-static --disable-shared --enable-fixed +make -j$(nproc) +make install +$CXX $CXXFLAGS contrib/oss-fuzz/speexdec_fuzzer.cc -o $OUT/speex_decode_fuzzer_fixed -L"$WORK/lib" -I"$WORK/include" $LIB_FUZZING_ENGINE -lspeex -logg +# Build floating-point fuzzer +PKG_CONFIG_PATH="$WORK"/lib/pkgconfig ./configure --prefix="$WORK" --enable-static --disable-shared +make -j$(nproc) +make install +$CXX $CXXFLAGS contrib/oss-fuzz/speexdec_fuzzer.cc -o $OUT/speex_decode_fuzzer_float -L"$WORK/lib" -I"$WORK/include" $LIB_FUZZING_ENGINE -lspeex -logg + +# build samples and prepare corpus +cd src/ +./generate-samples.sh +zip -j0r ${OUT}/speex_decode_fuzzer_fixed_seed_corpus.zip ./samples/ +cp ${OUT}/speex_decode_fuzzer_fixed_seed_corpus.zip ${OUT}/speex_decode_fuzzer_float_seed_corpus.zip +cd .. diff --git a/projects/speex/project.yaml b/projects/speex/project.yaml index 70618b77c..914bd56b5 100644 --- a/projects/speex/project.yaml +++ b/projects/speex/project.yaml @@ -1,2 +1,8 @@ homepage: "https://speex.org/" primary_contact: "tmatth@videolan.org" +auto_ccs: + - "twsmith@mozilla.com" +sanitizers: + - address + - memory + - undefined