Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
FuzzAnimatedImage.cpp
Go to the documentation of this file.
1/*
2 * Copyright 2018 Google, LLC
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
13
14bool FuzzAnimatedImage(const uint8_t *data, size_t size) {
16 if (nullptr == codec) {
17 return false;
18 }
19 auto aImg = SkAnimatedImage::Make(std::move(codec));
20 if (nullptr == aImg) {
21 return false;
22 }
23
25 if (!s) {
26 // May return nullptr in memory-constrained fuzzing environments
27 return false;
28 }
29
30 int escape = 0;
31 while (!aImg->isFinished() && escape < 100) {
32 aImg->draw(s->getCanvas());
33 escape++;
34 aImg->decodeNextFrame();
35 }
36 return true;
37}
38
39#if defined(SK_BUILD_FOR_LIBFUZZER)
40extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
41 if (size > 10240) {
42 return 0;
43 }
44 FuzzAnimatedImage(data, size);
45 return 0;
46}
47#endif
bool FuzzAnimatedImage(const uint8_t *data, size_t size)
static std::unique_ptr< SkAndroidCodec > MakeFromStream(std::unique_ptr< SkStream >, SkPngChunkReader *=nullptr)
static sk_sp< SkAnimatedImage > Make(std::unique_ptr< SkAndroidCodec >, const SkImageInfo &info, SkIRect cropRect, sk_sp< SkPicture > postProcess)
static std::unique_ptr< SkMemoryStream > MakeDirect(const void *data, size_t length)
Definition SkStream.cpp:310
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)