blob: c5b37cb68e8c65b22ea4935fbefaa1ba91ac5702 [file] [log] [blame]
Kevin Lubick2541edf2018-01-11 10:27:14 -05001/*
2 * Copyright 2018 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8
9#include "SkCanvas.h"
10#include "SkPaint.h"
11#include "SkRegion.h"
12#include "SkSurface.h"
13
14bool FuzzRegionDeserialize(sk_sp<SkData> bytes) {
15 SkRegion region;
16 if (!region.readFromMemory(bytes->data(), bytes->size())) {
17 return false;
18 }
19 region.computeRegionComplexity();
20 region.isComplex();
21 SkRegion r2;
22 if (region == r2) {
23 region.contains(0,0);
24 } else {
25 region.contains(1,1);
26 }
27 auto s = SkSurface::MakeRasterN32Premul(1024, 1024);
28 s->getCanvas()->drawRegion(region, SkPaint());
29 SkDEBUGCODE(region.validate());
30 return true;
31}
32
33#if defined(IS_FUZZING_WITH_LIBFUZZER)
34extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
35 auto bytes = SkData::MakeWithoutCopy(data, size);
36 FuzzRegionDeserialize(bytes);
37 return 0;
38}
39#endif