mirror of https://github.com/google/oss-fuzz.git
Add projects/libvpx (#1914)
* libvpx: Add project Added projects/libvpx * libvpx: Use local ivf_read_frame ivf_read_frame inside libvpx results in lot of prints due to invalid frame size. This clutters output prints. * libvpx: Do not return error for incomplete frame read in read_frame * libvpx: Initialize threads using 32nd byte instead of 1st In most cases, the first byte in corpus of *.ivf files is 'D'. So using first byte results in same thread count in most cases. Using 32nd byte in the data (one of the bytes that signals size of the frame) will help in testing for different thread configurations. * libvpx: Updated configure options and removed redundant cflags Removed generic-gnu as target Added --disable-webm-io as that is not needed here Added --enable-debug to enable asserts Removed redundant cflags and cxxflags * libvpx: Removed threaded mode from build.sh vpx_dec_fuzzer.cc in libvpx now tests both single and multi-thread configurations using a single binary. * libvpx: Removed vpx_dec_fuzzer.cc and README.md Removed vpx_dec_fuzzer.cc and README.md from projects/libvpx vpx_dec_fuzzer.cc is now part of libvpx
This commit is contained in:
parent
4b7c09e037
commit
7a141190cf
|
@ -0,0 +1,22 @@
|
|||
# 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 jzern@google.com
|
||||
RUN apt-get update && apt-get install -y yasm wget gcc
|
||||
RUN git clone https://chromium.googlesource.com/webm/libvpx
|
||||
COPY build.sh vpx_dec_fuzzer.dict $SRC/
|
||||
WORKDIR libvpx
|
|
@ -0,0 +1,53 @@
|
|||
#!/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.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
# Build libvpx
|
||||
build_dir=$WORK/build
|
||||
mkdir -p ${build_dir}
|
||||
pushd ${build_dir}
|
||||
|
||||
# Remove files generated by the previous build.
|
||||
rm -rf ./*
|
||||
|
||||
LDFLAGS="$CXXFLAGS" LD=$CC $SRC/libvpx/configure \
|
||||
--disable-unit-tests \
|
||||
--size-limit=12288x12288 \
|
||||
--extra-cflags="-DVPX_MAX_ALLOCABLE_MEMORY=1073741824" \
|
||||
--disable-webm-io \
|
||||
--enable-debug
|
||||
make clean
|
||||
make -j$(nproc) all
|
||||
popd
|
||||
|
||||
# build fuzzers
|
||||
fuzzer_src_name=vpx_dec_fuzzer
|
||||
fuzzer_decoders=( 'vp9' 'vp8' )
|
||||
for decoder in "${fuzzer_decoders[@]}"; do
|
||||
fuzzer_name=${fuzzer_src_name}"_"${decoder}
|
||||
|
||||
$CXX $CXXFLAGS -std=c++11 \
|
||||
-DDECODER=${decoder} \
|
||||
-I$SRC/libvpx \
|
||||
-I${build_dir} \
|
||||
-Wl,--start-group \
|
||||
-lFuzzingEngine \
|
||||
$SRC/libvpx/examples/${fuzzer_src_name}.cc -o $OUT/${fuzzer_name} \
|
||||
${build_dir}/libvpx.a ${build_dir}/tools_common.c.o \
|
||||
-Wl,--end-group
|
||||
|
||||
cp $SRC/vpx_dec_fuzzer.dict $OUT/${fuzzer_name}.dict
|
||||
done
|
|
@ -0,0 +1,9 @@
|
|||
homepage: "https://www.webmproject.org"
|
||||
primary_contact: "jzern@google.com"
|
||||
sanitizers:
|
||||
- address
|
||||
- memory
|
||||
- undefined
|
||||
auto_ccs:
|
||||
- jzern@google.com
|
||||
- johannkoenig@google.com
|
|
@ -0,0 +1,8 @@
|
|||
# IVF Signature + version (bytes 0-5)
|
||||
kw1="DKIF\x00\x00"
|
||||
|
||||
# VP9 codec fourCC (bytes 8-11)
|
||||
kw2="VP90"
|
||||
|
||||
# VP8 codec fourCC (bytes 8-11)
|
||||
kw3="VP80"
|
Loading…
Reference in New Issue