From db1e5c6474c1cd0969006a0c0554f8fdc63c42c8 Mon Sep 17 00:00:00 2001 From: Kevin Lubick Date: Tue, 27 Feb 2018 08:30:43 -0500 Subject: Port 3 API fuzzers to be oss-fuzz friendly Also Remove ScaleToSides, which we hadn't been running for a while. Bug: skia: Change-Id: I772dad722c34681392d5b635b3de716f3b00d597 Reviewed-on: https://skia-review.googlesource.com/110443 Reviewed-by: Mike Klein Commit-Queue: Kevin Lubick --- fuzz/Fuzz.h | 5 ++-- fuzz/FuzzCommon.h | 2 +- fuzz/FuzzScaleToSides.cpp | 43 ------------------------------- fuzz/oss_fuzz/FuzzAPIImageFilter.cpp | 16 ++++++++++++ fuzz/oss_fuzz/FuzzAnimatedImage.cpp | 2 +- fuzz/oss_fuzz/FuzzDrawFunctions.cpp | 16 ++++++++++++ fuzz/oss_fuzz/FuzzGradients.cpp | 17 ++++++++++++ fuzz/oss_fuzz/FuzzImage.cpp | 2 +- fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp | 2 +- 9 files changed, 56 insertions(+), 49 deletions(-) delete mode 100644 fuzz/FuzzScaleToSides.cpp create mode 100644 fuzz/oss_fuzz/FuzzAPIImageFilter.cpp create mode 100644 fuzz/oss_fuzz/FuzzDrawFunctions.cpp create mode 100644 fuzz/oss_fuzz/FuzzGradients.cpp (limited to 'fuzz') diff --git a/fuzz/Fuzz.h b/fuzz/Fuzz.h index 9dad0595e7..221b8f87bf 100644 --- a/fuzz/Fuzz.h +++ b/fuzz/Fuzz.h @@ -134,9 +134,10 @@ struct Fuzzable { void (*fn)(Fuzz*); }; +// Not static so that we can link these into oss-fuzz harnesses if we like. #define DEF_FUZZ(name, f) \ - static void fuzz_##name(Fuzz*); \ + void fuzz_##name(Fuzz*); \ sk_tools::Registry register_##name({#name, fuzz_##name}); \ - static void fuzz_##name(Fuzz* f) + void fuzz_##name(Fuzz* f) #endif//Fuzz_DEFINED diff --git a/fuzz/FuzzCommon.h b/fuzz/FuzzCommon.h index f0efc19a1a..c908606be1 100644 --- a/fuzz/FuzzCommon.h +++ b/fuzz/FuzzCommon.h @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google Inc. + * Copyright 2018 Google, LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. diff --git a/fuzz/FuzzScaleToSides.cpp b/fuzz/FuzzScaleToSides.cpp deleted file mode 100644 index 943ce5c8e0..0000000000 --- a/fuzz/FuzzScaleToSides.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2016 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -// Reminder of how to run: -// $ env CC=afl-clang CXX=afl-clang++ ./gyp_skia -// $ ninja -C out/Debug fuzz -// $ afl-fuzz -i fuzz-in -o fuzz-out out/Debug/fuzz -n ScaleToSides -b @@ -// where you seed fuzz-in/ with one or more small files. - -#include "Fuzz.h" -#include "SkScaleToSides.h" -#include - -DEF_FUZZ(ScaleToSides, fuzz) { - float radius1, radius2, width; - fuzz->next(&radius1, &radius2, &width); - - if (!std::isfinite(radius1) || - !std::isfinite(radius2) || - !std::isfinite(width) || - radius1 <= 0.0f || - radius2 <= 0.0f || - width <= 0.0f) - { - return; - } - - double scale = (double)width / ((double)radius1 + (double)radius2); - if (scale >= 1.0 || scale <= 0.0) { - return; - } - SkDebugf("%g %g %g %g\n", radius1, radius2, width, scale); - SkScaleToSides::AdjustRadii(width, scale, &radius1, &radius2); - - // TODO(mtklein): add fuzz->keepResult() - volatile float junk = 0.0f; - junk *= radius1; - junk *= radius2; -} diff --git a/fuzz/oss_fuzz/FuzzAPIImageFilter.cpp b/fuzz/oss_fuzz/FuzzAPIImageFilter.cpp new file mode 100644 index 0000000000..1f8753d012 --- /dev/null +++ b/fuzz/oss_fuzz/FuzzAPIImageFilter.cpp @@ -0,0 +1,16 @@ +/* + * Copyright 2018 Google, LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "../Fuzz.h" + +void fuzz_ImageFilter(Fuzz* f); + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + auto fuzz = Fuzz(SkData::MakeWithoutCopy(data, size)); + fuzz_ImageFilter(&fuzz); + return 0; +} diff --git a/fuzz/oss_fuzz/FuzzAnimatedImage.cpp b/fuzz/oss_fuzz/FuzzAnimatedImage.cpp index af433348c5..54109f095a 100644 --- a/fuzz/oss_fuzz/FuzzAnimatedImage.cpp +++ b/fuzz/oss_fuzz/FuzzAnimatedImage.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google Inc. + * Copyright 2018 Google, LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. diff --git a/fuzz/oss_fuzz/FuzzDrawFunctions.cpp b/fuzz/oss_fuzz/FuzzDrawFunctions.cpp new file mode 100644 index 0000000000..ec4e766496 --- /dev/null +++ b/fuzz/oss_fuzz/FuzzDrawFunctions.cpp @@ -0,0 +1,16 @@ +/* + * Copyright 2018 Google, LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "../Fuzz.h" + +void fuzz_DrawFunctions(Fuzz* f); + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + auto fuzz = Fuzz(SkData::MakeWithoutCopy(data, size)); + fuzz_DrawFunctions(&fuzz); + return 0; +} diff --git a/fuzz/oss_fuzz/FuzzGradients.cpp b/fuzz/oss_fuzz/FuzzGradients.cpp new file mode 100644 index 0000000000..06948021b3 --- /dev/null +++ b/fuzz/oss_fuzz/FuzzGradients.cpp @@ -0,0 +1,17 @@ +/* + * Copyright 2018 Google, LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "../Fuzz.h" + +void fuzz_Gradients(Fuzz* f); + +bool FLAGS_verbose = false; +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + auto fuzz = Fuzz(SkData::MakeWithoutCopy(data, size)); + fuzz_Gradients(&fuzz); + return 0; +} diff --git a/fuzz/oss_fuzz/FuzzImage.cpp b/fuzz/oss_fuzz/FuzzImage.cpp index 0f0f6f5a43..0a8c87aef8 100644 --- a/fuzz/oss_fuzz/FuzzImage.cpp +++ b/fuzz/oss_fuzz/FuzzImage.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google Inc. + * Copyright 2018 Google, LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. diff --git a/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp b/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp index 36c7057dbc..544b00ddaf 100644 --- a/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp +++ b/fuzz/oss_fuzz/FuzzTextBlobDeserialize.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google Inc. + * Copyright 2018 Google, LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. -- cgit v1.2.3