aboutsummaryrefslogtreecommitdiff
path: root/projects/draco
diff options
context:
space:
mode:
authorRavi Jotwani <ravi.jotwani@jakra.net>2020-06-23 12:31:24 -0700
committerGitHub <noreply@github.com>2020-06-23 12:31:24 -0700
commit04f3736d32e14d7e733833c3ff10c2ba9a68018c (patch)
tree28d7d46b0bfff7810acaaff006c55c64a69c08dc /projects/draco
parent2fdb520e2670dbdee2534f1b3f91dcd2e62b645a (diff)
downloadoss-fuzz-04f3736d32e14d7e733833c3ff10c2ba9a68018c.tar.gz
Draco fuzz coverage (#3980)
* added draco integration files * wrote build file and Dockerfile for Draco * added Apache 2 license header * changed project maintainer, cleaned up draco_decoder_fuzzer, and set working directory in Dockerfile * added a couple of fuzzers * two more targets * merged from upstream * build point cloud encoding fuzzer, renamed quantization fuzzers * added more fuzzers * moved fuzzers and build script to https://github.com/google/draco, made the build script here execute the new one Co-authored-by: Ravi Jotwani <rjotwani@google.com>
Diffstat (limited to 'projects/draco')
-rw-r--r--projects/draco/Dockerfile1
-rwxr-xr-xprojects/draco/build.sh19
-rw-r--r--projects/draco/fuzz/draco_decoder_fuzzer.cc40
3 files changed, 1 insertions, 59 deletions
diff --git a/projects/draco/Dockerfile b/projects/draco/Dockerfile
index 48bafc144..772ae6d2e 100644
--- a/projects/draco/Dockerfile
+++ b/projects/draco/Dockerfile
@@ -18,5 +18,4 @@ FROM gcr.io/oss-fuzz-base/base-builder
RUN apt-get update && apt-get install -y git cmake make pkg-config
RUN git clone --depth 1 https://github.com/google/draco draco
COPY build.sh $SRC/
-COPY fuzz $SRC/fuzz
WORKDIR $WORK/
diff --git a/projects/draco/build.sh b/projects/draco/build.sh
index cc534eecc..1ebc8988b 100755
--- a/projects/draco/build.sh
+++ b/projects/draco/build.sh
@@ -15,21 +15,4 @@
#
################################################################################
-# build project
-cmake $SRC/draco
-# The draco_decoder and draco_encoder binaries don't build nicely with OSS-Fuzz
-# options, so just build the Draco shared libraries.
-make -j$(nproc) draco
-
-# build fuzzers
-for fuzzer in $(find $SRC/fuzz -name '*.cc'); do
- fuzzer_basename=$(basename -s .cc $fuzzer)
- $CXX $CXXFLAGS \
- -I $SRC/ \
- -I $SRC/draco/src \
- -I $WORK/ \
- $LIB_FUZZING_ENGINE \
- $fuzzer \
- $WORK/libdraco.a \
- -o $OUT/$fuzzer_basename
-done
+sh $SRC/draco/src/draco/tools/fuzz/build.sh
diff --git a/projects/draco/fuzz/draco_decoder_fuzzer.cc b/projects/draco/fuzz/draco_decoder_fuzzer.cc
deleted file mode 100644
index f2cd91640..000000000
--- a/projects/draco/fuzz/draco_decoder_fuzzer.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2020 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.
-
-#include <fuzzer/FuzzedDataProvider.h>
-
-#include "draco/src/draco/compression/decode.h"
-#include "draco/src/draco/core/decoder_buffer.h"
-#include "draco/src/draco/mesh/mesh.h"
-#include "draco/src/draco/point_cloud/point_cloud.h"
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
- draco::DecoderBuffer buffer;
- buffer.Init(reinterpret_cast<const char *>(data), size);
-
- // Decode the input data into a geometry. We do not care about the return
- // value for this test.
- const auto statusor = draco::Decoder::GetEncodedGeometryType(&buffer);
- if (!statusor.ok())
- return 0;
- const draco::EncodedGeometryType geom_type = statusor.value();
- draco::Decoder decoder;
- if (geom_type == draco::TRIANGULAR_MESH) {
- decoder.DecodeMeshFromBuffer(&buffer);
- } else if (geom_type == draco::POINT_CLOUD) {
- decoder.DecodePointCloudFromBuffer(&buffer);
- }
-
- return 0;
-}