Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
FuzzPathDeserialize.cpp
Go to the documentation of this file.
1/*
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
10#include "include/core/SkPath.h"
13
14void FuzzPathDeserialize(const uint8_t *data, size_t size) {
15 SkReadBuffer buf(data, size);
16
17 SkPath path;
18 buf.readPath(&path);
19 if (!buf.isValid()) {
20 return;
21 }
22
24 if (!s) {
25 // May return nullptr in memory-constrained fuzzing environments
26 return;
27 }
28 s->getCanvas()->drawPath(path, SkPaint());
29}
30
31#if defined(SK_BUILD_FOR_LIBFUZZER)
32extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
33 if (size < 4 || size > 2000) {
34 return 0;
35 }
36 uint32_t packed;
37 memcpy(&packed, data, 4);
38 unsigned version = packed & 0xFF;
39 if (version != 4) {
40 // Chrome only will produce version 4, so guide the fuzzer to
41 // only focus on those branches.
42 return 0;
43 }
44 FuzzPathDeserialize(data, size);
45 return 0;
46}
47#endif
void FuzzPathDeserialize(const uint8_t *data, size_t size)
bool isValid() const
void readPath(SkPath *path)
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
struct MyStruct s
SK_API sk_sp< SkSurface > Raster(const SkImageInfo &imageInfo, size_t rowBytes, const SkSurfaceProps *surfaceProps)
static SkImageInfo MakeN32Premul(int width, int height)