aboutsummaryrefslogtreecommitdiffhomepage
path: root/fuzz/fuzz.cpp
diff options
context:
space:
mode:
authorGravatar Kevin Lubick <kjlubick@google.com>2017-11-21 17:13:35 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-21 22:38:39 +0000
commitd46e85ff6903ca4d0d5d97bdfdde364b8559c0f4 (patch)
treea827838e6cd43a906a71efeedc781bc91cc94905 /fuzz/fuzz.cpp
parentd1bbd5f77753ba275d2903c19eb1d5a5fb616f71 (diff)
Add textblob fuzzer
Bug: skia: Change-Id: Id1962964507947ad090f083f4475cbe5c455fdf5 Reviewed-on: https://skia-review.googlesource.com/74760 Reviewed-by: Kevin Lubick <kjlubick@google.com> Commit-Queue: Kevin Lubick <kjlubick@google.com>
Diffstat (limited to 'fuzz/fuzz.cpp')
-rw-r--r--fuzz/fuzz.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/fuzz/fuzz.cpp b/fuzz/fuzz.cpp
index c141686a1b..ae9f0a4b01 100644
--- a/fuzz/fuzz.cpp
+++ b/fuzz/fuzz.cpp
@@ -23,6 +23,7 @@
#include "SkRegion.h"
#include "SkStream.h"
#include "SkSurface.h"
+#include "SkTextBlob.h"
#include "SkValidatingReadBuffer.h"
#if SK_SUPPORT_GPU
@@ -54,12 +55,13 @@ static uint8_t calculate_option(SkData*);
static void fuzz_api(sk_sp<SkData>);
static void fuzz_color_deserialize(sk_sp<SkData>);
+static void fuzz_filter_fuzz(sk_sp<SkData>);
static void fuzz_icc(sk_sp<SkData>);
static void fuzz_img(sk_sp<SkData>, uint8_t, uint8_t);
static void fuzz_path_deserialize(sk_sp<SkData>);
static void fuzz_region_deserialize(sk_sp<SkData>);
static void fuzz_skp(sk_sp<SkData>);
-static void fuzz_filter_fuzz(sk_sp<SkData>);
+static void fuzz_textblob_deserialize(sk_sp<SkData>);
#if SK_SUPPORT_GPU
static void fuzz_sksl2glsl(sk_sp<SkData>);
@@ -132,6 +134,10 @@ static int fuzz_file(const char* path) {
fuzz_filter_fuzz(bytes);
return 0;
}
+ if (0 == strcmp("textblob", FLAGS_type[0])) {
+ fuzz_textblob_deserialize(bytes);
+ return 0;
+ }
#if SK_SUPPORT_GPU
if (0 == strcmp("sksl2glsl", FLAGS_type[0])) {
fuzz_sksl2glsl(bytes);
@@ -505,6 +511,19 @@ static void fuzz_region_deserialize(sk_sp<SkData> bytes) {
SkDebugf("[terminated] Success! Initialized SkRegion.\n");
}
+static void fuzz_textblob_deserialize(sk_sp<SkData> bytes) {
+ SkValidatingReadBuffer buf(bytes->data(), bytes->size());
+ auto tb = SkTextBlob::MakeFromBuffer(buf);
+ if (!buf.isValid()) {
+ SkDebugf("[terminated] Couldn't deserialize SkTextBlob.\n");
+ return;
+ }
+
+ auto s = SkSurface::MakeRasterN32Premul(512, 512);
+ s->getCanvas()->drawTextBlob(tb, 200, 200, SkPaint());
+ SkDebugf("[terminated] Success! Initialized SkTextBlob.\n");
+}
+
static void fuzz_filter_fuzz(sk_sp<SkData> bytes) {
const int BitmapSize = 24;