1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2018 Google, LLC 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkStream.h" 9*c8dee2aaSAndroid Build Coastguard Worker #include "modules/skottie/include/Skottie.h" 10*c8dee2aaSAndroid Build Coastguard Worker #include "tools/fonts/FontToolUtils.h" 11*c8dee2aaSAndroid Build Coastguard Worker FuzzSkottieJSON(const uint8_t * data,size_t size)12*c8dee2aaSAndroid Build Coastguard Workervoid FuzzSkottieJSON(const uint8_t *data, size_t size) { 13*c8dee2aaSAndroid Build Coastguard Worker SkMemoryStream stream(data, size); 14*c8dee2aaSAndroid Build Coastguard Worker auto animation = skottie::Animation::Make(&stream); 15*c8dee2aaSAndroid Build Coastguard Worker if (!animation) { 16*c8dee2aaSAndroid Build Coastguard Worker return; 17*c8dee2aaSAndroid Build Coastguard Worker } 18*c8dee2aaSAndroid Build Coastguard Worker animation->seek(0.1337f); // A "nothing up my sleeve" number 19*c8dee2aaSAndroid Build Coastguard Worker } 20*c8dee2aaSAndroid Build Coastguard Worker 21*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_BUILD_FOR_LIBFUZZER) LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)22*c8dee2aaSAndroid Build Coastguard Workerextern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { 23*c8dee2aaSAndroid Build Coastguard Worker ToolUtils::UsePortableFontMgr(); 24*c8dee2aaSAndroid Build Coastguard Worker FuzzSkottieJSON(data, size); 25*c8dee2aaSAndroid Build Coastguard Worker return 0; 26*c8dee2aaSAndroid Build Coastguard Worker } 27*c8dee2aaSAndroid Build Coastguard Worker #endif 28