136a3a8d0Sopenharmony_ci/* 236a3a8d0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 336a3a8d0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 436a3a8d0Sopenharmony_ci * you may not use this file except in compliance with the License. 536a3a8d0Sopenharmony_ci * You may obtain a copy of the License at 636a3a8d0Sopenharmony_ci * 736a3a8d0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 836a3a8d0Sopenharmony_ci * 936a3a8d0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1036a3a8d0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1136a3a8d0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1236a3a8d0Sopenharmony_ci * See the License for the specific language governing permissions and 1336a3a8d0Sopenharmony_ci * limitations under the License. 1436a3a8d0Sopenharmony_ci */ 1536a3a8d0Sopenharmony_ci 1636a3a8d0Sopenharmony_ci#include "resmgr_fuzzer.h" 1736a3a8d0Sopenharmony_ci 1836a3a8d0Sopenharmony_ci#include <string> 1936a3a8d0Sopenharmony_ci#include <securec.h> 2036a3a8d0Sopenharmony_ci#include <vector> 2136a3a8d0Sopenharmony_ci#include "resource_manager.h" 2236a3a8d0Sopenharmony_ci 2336a3a8d0Sopenharmony_ci#undef private 2436a3a8d0Sopenharmony_ci 2536a3a8d0Sopenharmony_ciusing namespace std; 2636a3a8d0Sopenharmony_ciusing namespace OHOS::Global::Resource; 2736a3a8d0Sopenharmony_ci 2836a3a8d0Sopenharmony_cinamespace OHOS { 2936a3a8d0Sopenharmony_ci 3036a3a8d0Sopenharmony_ci constexpr int SINGULAR_NUM = 1; 3136a3a8d0Sopenharmony_ci constexpr int PLURAL_NUM = 2; 3236a3a8d0Sopenharmony_ci 3336a3a8d0Sopenharmony_ci bool AddResourceFuzzTest(const char* data, size_t size, ResourceManager *rm) 3436a3a8d0Sopenharmony_ci { 3536a3a8d0Sopenharmony_ci bool result = false; 3636a3a8d0Sopenharmony_ci if (size > 0) { 3736a3a8d0Sopenharmony_ci std::string testName(data, size); 3836a3a8d0Sopenharmony_ci result = rm->AddResource(testName.c_str()); 3936a3a8d0Sopenharmony_ci } 4036a3a8d0Sopenharmony_ci return result; 4136a3a8d0Sopenharmony_ci } 4236a3a8d0Sopenharmony_ci 4336a3a8d0Sopenharmony_ci bool RemoveResourceFuzzTest(const char* data, size_t size, ResourceManager *rm) 4436a3a8d0Sopenharmony_ci { 4536a3a8d0Sopenharmony_ci bool result = false; 4636a3a8d0Sopenharmony_ci std::vector<std::string> overlayPaths; 4736a3a8d0Sopenharmony_ci if (size > 0) { 4836a3a8d0Sopenharmony_ci std::string testName(data, size); 4936a3a8d0Sopenharmony_ci result = rm->RemoveResource(testName.c_str(), overlayPaths); 5036a3a8d0Sopenharmony_ci } 5136a3a8d0Sopenharmony_ci return result; 5236a3a8d0Sopenharmony_ci } 5336a3a8d0Sopenharmony_ci 5436a3a8d0Sopenharmony_ci bool AddAppOverlayFuzzTest(const char* data, size_t size, ResourceManager *rm) 5536a3a8d0Sopenharmony_ci { 5636a3a8d0Sopenharmony_ci bool result = false; 5736a3a8d0Sopenharmony_ci if (size > 0) { 5836a3a8d0Sopenharmony_ci std::string testName(data, size); 5936a3a8d0Sopenharmony_ci result = rm->AddAppOverlay(testName.c_str()); 6036a3a8d0Sopenharmony_ci } 6136a3a8d0Sopenharmony_ci return result; 6236a3a8d0Sopenharmony_ci } 6336a3a8d0Sopenharmony_ci 6436a3a8d0Sopenharmony_ci bool RemoveAppOverlayFuzzTest(const char* data, size_t size, ResourceManager *rm) 6536a3a8d0Sopenharmony_ci { 6636a3a8d0Sopenharmony_ci bool result = false; 6736a3a8d0Sopenharmony_ci if (size > 0) { 6836a3a8d0Sopenharmony_ci std::string testName(data, size); 6936a3a8d0Sopenharmony_ci result = rm->RemoveAppOverlay(testName.c_str()); 7036a3a8d0Sopenharmony_ci } 7136a3a8d0Sopenharmony_ci return result; 7236a3a8d0Sopenharmony_ci } 7336a3a8d0Sopenharmony_ci 7436a3a8d0Sopenharmony_ci bool GetStringByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 7536a3a8d0Sopenharmony_ci { 7636a3a8d0Sopenharmony_ci bool result = false; 7736a3a8d0Sopenharmony_ci if (size > 0) { 7836a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 7936a3a8d0Sopenharmony_ci std::string extraInfo = ""; 8036a3a8d0Sopenharmony_ci result = rm->GetStringById(testId, extraInfo); 8136a3a8d0Sopenharmony_ci } 8236a3a8d0Sopenharmony_ci return result; 8336a3a8d0Sopenharmony_ci } 8436a3a8d0Sopenharmony_ci 8536a3a8d0Sopenharmony_ci bool GetStringByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 8636a3a8d0Sopenharmony_ci { 8736a3a8d0Sopenharmony_ci bool result = false; 8836a3a8d0Sopenharmony_ci if (size > 0) { 8936a3a8d0Sopenharmony_ci std::string testName(data, size); 9036a3a8d0Sopenharmony_ci std::string extraInfo = ""; 9136a3a8d0Sopenharmony_ci result = rm->GetStringByName(testName.c_str(), extraInfo); 9236a3a8d0Sopenharmony_ci } 9336a3a8d0Sopenharmony_ci return result; 9436a3a8d0Sopenharmony_ci } 9536a3a8d0Sopenharmony_ci 9636a3a8d0Sopenharmony_ci bool GetStringArrayByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 9736a3a8d0Sopenharmony_ci { 9836a3a8d0Sopenharmony_ci bool result = false; 9936a3a8d0Sopenharmony_ci if (size > 0) { 10036a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 10136a3a8d0Sopenharmony_ci std::vector<std::string> outValue; 10236a3a8d0Sopenharmony_ci result = rm->GetStringArrayById(testId, outValue); 10336a3a8d0Sopenharmony_ci } 10436a3a8d0Sopenharmony_ci return result; 10536a3a8d0Sopenharmony_ci } 10636a3a8d0Sopenharmony_ci 10736a3a8d0Sopenharmony_ci bool GetStringArrayByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 10836a3a8d0Sopenharmony_ci { 10936a3a8d0Sopenharmony_ci bool result = false; 11036a3a8d0Sopenharmony_ci if (size > 0) { 11136a3a8d0Sopenharmony_ci std::string testName(data, size); 11236a3a8d0Sopenharmony_ci std::vector<std::string> outValue; 11336a3a8d0Sopenharmony_ci result = rm->GetStringArrayByName(testName.c_str(), outValue); 11436a3a8d0Sopenharmony_ci } 11536a3a8d0Sopenharmony_ci return result; 11636a3a8d0Sopenharmony_ci } 11736a3a8d0Sopenharmony_ci 11836a3a8d0Sopenharmony_ci bool GetPatternByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 11936a3a8d0Sopenharmony_ci { 12036a3a8d0Sopenharmony_ci bool result = false; 12136a3a8d0Sopenharmony_ci if (size > 0) { 12236a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 12336a3a8d0Sopenharmony_ci std::map<std::string, std::string> outValue; 12436a3a8d0Sopenharmony_ci result = rm->GetPatternById(testId, outValue); 12536a3a8d0Sopenharmony_ci } 12636a3a8d0Sopenharmony_ci return result; 12736a3a8d0Sopenharmony_ci } 12836a3a8d0Sopenharmony_ci 12936a3a8d0Sopenharmony_ci bool GetPatternByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 13036a3a8d0Sopenharmony_ci { 13136a3a8d0Sopenharmony_ci bool result = false; 13236a3a8d0Sopenharmony_ci if (size > 0) { 13336a3a8d0Sopenharmony_ci std::string testName(data, size); 13436a3a8d0Sopenharmony_ci std::map<std::string, std::string> outValue; 13536a3a8d0Sopenharmony_ci result = rm->GetPatternByName(testName.c_str(), outValue); 13636a3a8d0Sopenharmony_ci } 13736a3a8d0Sopenharmony_ci return result; 13836a3a8d0Sopenharmony_ci } 13936a3a8d0Sopenharmony_ci 14036a3a8d0Sopenharmony_ci bool GetPluralStringByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 14136a3a8d0Sopenharmony_ci { 14236a3a8d0Sopenharmony_ci bool result = false; 14336a3a8d0Sopenharmony_ci if (size > 0) { 14436a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 14536a3a8d0Sopenharmony_ci std::string outValue = ""; 14636a3a8d0Sopenharmony_ci result = rm->GetPluralStringById(testId, SINGULAR_NUM, outValue); 14736a3a8d0Sopenharmony_ci } 14836a3a8d0Sopenharmony_ci return result; 14936a3a8d0Sopenharmony_ci } 15036a3a8d0Sopenharmony_ci 15136a3a8d0Sopenharmony_ci bool GetPluralStringByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 15236a3a8d0Sopenharmony_ci { 15336a3a8d0Sopenharmony_ci bool result = false; 15436a3a8d0Sopenharmony_ci if (size > 0) { 15536a3a8d0Sopenharmony_ci std::string testName(data, size); 15636a3a8d0Sopenharmony_ci std::string outValue = ""; 15736a3a8d0Sopenharmony_ci result = rm->GetPluralStringByName(testName.c_str(), PLURAL_NUM, outValue); 15836a3a8d0Sopenharmony_ci } 15936a3a8d0Sopenharmony_ci return result; 16036a3a8d0Sopenharmony_ci } 16136a3a8d0Sopenharmony_ci 16236a3a8d0Sopenharmony_ci bool GetThemeByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 16336a3a8d0Sopenharmony_ci { 16436a3a8d0Sopenharmony_ci bool result = false; 16536a3a8d0Sopenharmony_ci if (size > 0) { 16636a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 16736a3a8d0Sopenharmony_ci std::map<std::string, std::string> outValue; 16836a3a8d0Sopenharmony_ci result = rm->GetThemeById(testId, outValue); 16936a3a8d0Sopenharmony_ci } 17036a3a8d0Sopenharmony_ci return result; 17136a3a8d0Sopenharmony_ci } 17236a3a8d0Sopenharmony_ci 17336a3a8d0Sopenharmony_ci bool GetThemeByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 17436a3a8d0Sopenharmony_ci { 17536a3a8d0Sopenharmony_ci bool result = false; 17636a3a8d0Sopenharmony_ci if (size > 0) { 17736a3a8d0Sopenharmony_ci std::string testName(data, size); 17836a3a8d0Sopenharmony_ci std::map<std::string, std::string> outValue; 17936a3a8d0Sopenharmony_ci result = rm->GetThemeByName(testName.c_str(), outValue); 18036a3a8d0Sopenharmony_ci } 18136a3a8d0Sopenharmony_ci return result; 18236a3a8d0Sopenharmony_ci } 18336a3a8d0Sopenharmony_ci 18436a3a8d0Sopenharmony_ci bool GetIntegerByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 18536a3a8d0Sopenharmony_ci { 18636a3a8d0Sopenharmony_ci bool result = false; 18736a3a8d0Sopenharmony_ci if (size > 0) { 18836a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 18936a3a8d0Sopenharmony_ci int outValue; 19036a3a8d0Sopenharmony_ci result = rm->GetIntegerById(testId, outValue); 19136a3a8d0Sopenharmony_ci } 19236a3a8d0Sopenharmony_ci return result; 19336a3a8d0Sopenharmony_ci } 19436a3a8d0Sopenharmony_ci 19536a3a8d0Sopenharmony_ci bool GetIntegerByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 19636a3a8d0Sopenharmony_ci { 19736a3a8d0Sopenharmony_ci bool result = false; 19836a3a8d0Sopenharmony_ci if (size > 0) { 19936a3a8d0Sopenharmony_ci std::string testName(data, size); 20036a3a8d0Sopenharmony_ci int outValue; 20136a3a8d0Sopenharmony_ci result = rm->GetIntegerByName(testName.c_str(), outValue); 20236a3a8d0Sopenharmony_ci } 20336a3a8d0Sopenharmony_ci return result; 20436a3a8d0Sopenharmony_ci } 20536a3a8d0Sopenharmony_ci 20636a3a8d0Sopenharmony_ci bool GetBooleanByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 20736a3a8d0Sopenharmony_ci { 20836a3a8d0Sopenharmony_ci bool result = false; 20936a3a8d0Sopenharmony_ci if (size > 0) { 21036a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 21136a3a8d0Sopenharmony_ci bool outValue; 21236a3a8d0Sopenharmony_ci result = rm->GetBooleanById(testId, outValue); 21336a3a8d0Sopenharmony_ci } 21436a3a8d0Sopenharmony_ci return result; 21536a3a8d0Sopenharmony_ci } 21636a3a8d0Sopenharmony_ci 21736a3a8d0Sopenharmony_ci bool GetBooleanByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 21836a3a8d0Sopenharmony_ci { 21936a3a8d0Sopenharmony_ci bool result = false; 22036a3a8d0Sopenharmony_ci if (size > 0) { 22136a3a8d0Sopenharmony_ci std::string testName(data, size); 22236a3a8d0Sopenharmony_ci bool outValue = false; 22336a3a8d0Sopenharmony_ci result = rm->GetBooleanByName(testName.c_str(), outValue); 22436a3a8d0Sopenharmony_ci } 22536a3a8d0Sopenharmony_ci return result; 22636a3a8d0Sopenharmony_ci } 22736a3a8d0Sopenharmony_ci 22836a3a8d0Sopenharmony_ci bool GetFloatByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 22936a3a8d0Sopenharmony_ci { 23036a3a8d0Sopenharmony_ci bool result = false; 23136a3a8d0Sopenharmony_ci if (size > 0) { 23236a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 23336a3a8d0Sopenharmony_ci float outValue; 23436a3a8d0Sopenharmony_ci result = rm->GetFloatById(testId, outValue); 23536a3a8d0Sopenharmony_ci } 23636a3a8d0Sopenharmony_ci return result; 23736a3a8d0Sopenharmony_ci } 23836a3a8d0Sopenharmony_ci 23936a3a8d0Sopenharmony_ci bool GetFloatByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 24036a3a8d0Sopenharmony_ci { 24136a3a8d0Sopenharmony_ci bool result = false; 24236a3a8d0Sopenharmony_ci if (size > 0) { 24336a3a8d0Sopenharmony_ci std::string testName(data, size); 24436a3a8d0Sopenharmony_ci float outValue = 0.0f; 24536a3a8d0Sopenharmony_ci result = rm->GetFloatByName(testName.c_str(), outValue); 24636a3a8d0Sopenharmony_ci } 24736a3a8d0Sopenharmony_ci return result; 24836a3a8d0Sopenharmony_ci } 24936a3a8d0Sopenharmony_ci 25036a3a8d0Sopenharmony_ci bool GetIntArrayByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 25136a3a8d0Sopenharmony_ci { 25236a3a8d0Sopenharmony_ci bool result = false; 25336a3a8d0Sopenharmony_ci if (size > 0) { 25436a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 25536a3a8d0Sopenharmony_ci std::vector<int> outValue; 25636a3a8d0Sopenharmony_ci result = rm->GetIntArrayById(testId, outValue); 25736a3a8d0Sopenharmony_ci } 25836a3a8d0Sopenharmony_ci return result; 25936a3a8d0Sopenharmony_ci } 26036a3a8d0Sopenharmony_ci 26136a3a8d0Sopenharmony_ci bool GetIntArrayByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 26236a3a8d0Sopenharmony_ci { 26336a3a8d0Sopenharmony_ci bool result = false; 26436a3a8d0Sopenharmony_ci if (size > 0) { 26536a3a8d0Sopenharmony_ci std::string testName(data, size); 26636a3a8d0Sopenharmony_ci std::vector<int> outValue; 26736a3a8d0Sopenharmony_ci result = rm->GetIntArrayByName(testName.c_str(), outValue); 26836a3a8d0Sopenharmony_ci } 26936a3a8d0Sopenharmony_ci return result; 27036a3a8d0Sopenharmony_ci } 27136a3a8d0Sopenharmony_ci 27236a3a8d0Sopenharmony_ci bool GetMediaByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 27336a3a8d0Sopenharmony_ci { 27436a3a8d0Sopenharmony_ci bool result = false; 27536a3a8d0Sopenharmony_ci if (size > 0) { 27636a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 27736a3a8d0Sopenharmony_ci std::string outValue = ""; 27836a3a8d0Sopenharmony_ci result = rm->GetMediaById(testId, outValue); 27936a3a8d0Sopenharmony_ci } 28036a3a8d0Sopenharmony_ci return result; 28136a3a8d0Sopenharmony_ci } 28236a3a8d0Sopenharmony_ci 28336a3a8d0Sopenharmony_ci bool GetMediaByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 28436a3a8d0Sopenharmony_ci { 28536a3a8d0Sopenharmony_ci bool result = false; 28636a3a8d0Sopenharmony_ci if (size > 0) { 28736a3a8d0Sopenharmony_ci std::string testName(data, size); 28836a3a8d0Sopenharmony_ci std::string outValue = ""; 28936a3a8d0Sopenharmony_ci result = rm->GetMediaByName(testName.c_str(), outValue); 29036a3a8d0Sopenharmony_ci } 29136a3a8d0Sopenharmony_ci return result; 29236a3a8d0Sopenharmony_ci } 29336a3a8d0Sopenharmony_ci 29436a3a8d0Sopenharmony_ci bool GetRawFilePathByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 29536a3a8d0Sopenharmony_ci { 29636a3a8d0Sopenharmony_ci bool result = false; 29736a3a8d0Sopenharmony_ci if (size > 0) { 29836a3a8d0Sopenharmony_ci std::string testName(data, size); 29936a3a8d0Sopenharmony_ci std::string outValue = ""; 30036a3a8d0Sopenharmony_ci result = rm->GetRawFilePathByName(testName.c_str(), outValue); 30136a3a8d0Sopenharmony_ci } 30236a3a8d0Sopenharmony_ci return result; 30336a3a8d0Sopenharmony_ci } 30436a3a8d0Sopenharmony_ci 30536a3a8d0Sopenharmony_ci bool GetRawFileDescriptorFuzzTest(const char* data, size_t size, ResourceManager *rm) 30636a3a8d0Sopenharmony_ci { 30736a3a8d0Sopenharmony_ci bool result = false; 30836a3a8d0Sopenharmony_ci if (size > 0) { 30936a3a8d0Sopenharmony_ci std::string testName(data, size); 31036a3a8d0Sopenharmony_ci ResourceManager::RawFileDescriptor outValue; 31136a3a8d0Sopenharmony_ci result = rm->GetRawFileDescriptor(testName.c_str(), outValue); 31236a3a8d0Sopenharmony_ci } 31336a3a8d0Sopenharmony_ci return result; 31436a3a8d0Sopenharmony_ci } 31536a3a8d0Sopenharmony_ci 31636a3a8d0Sopenharmony_ci bool GetRawFdNdkFromHapFuzzTest(const char* data, size_t size, ResourceManager *rm) 31736a3a8d0Sopenharmony_ci { 31836a3a8d0Sopenharmony_ci bool result = false; 31936a3a8d0Sopenharmony_ci if (size > 0) { 32036a3a8d0Sopenharmony_ci std::string testName(data, size); 32136a3a8d0Sopenharmony_ci ResourceManager::RawFileDescriptor outValue; 32236a3a8d0Sopenharmony_ci result = rm->GetRawFdNdkFromHap(testName.c_str(), outValue); 32336a3a8d0Sopenharmony_ci } 32436a3a8d0Sopenharmony_ci return result; 32536a3a8d0Sopenharmony_ci } 32636a3a8d0Sopenharmony_ci 32736a3a8d0Sopenharmony_ci bool CloseRawFileDescriptorFuzzTest(const char* data, size_t size, ResourceManager *rm) 32836a3a8d0Sopenharmony_ci { 32936a3a8d0Sopenharmony_ci bool result = false; 33036a3a8d0Sopenharmony_ci if (size > 0) { 33136a3a8d0Sopenharmony_ci std::string testName(data, size); 33236a3a8d0Sopenharmony_ci result = rm->CloseRawFileDescriptor(testName.c_str()); 33336a3a8d0Sopenharmony_ci } 33436a3a8d0Sopenharmony_ci return result; 33536a3a8d0Sopenharmony_ci } 33636a3a8d0Sopenharmony_ci 33736a3a8d0Sopenharmony_ci bool GetMediaDataByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 33836a3a8d0Sopenharmony_ci { 33936a3a8d0Sopenharmony_ci bool result = false; 34036a3a8d0Sopenharmony_ci if (size > 0) { 34136a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 34236a3a8d0Sopenharmony_ci size_t len = 0; 34336a3a8d0Sopenharmony_ci std::unique_ptr<uint8_t[]> outValue; 34436a3a8d0Sopenharmony_ci result = rm->GetMediaDataById(testId, len, outValue); 34536a3a8d0Sopenharmony_ci } 34636a3a8d0Sopenharmony_ci return result; 34736a3a8d0Sopenharmony_ci } 34836a3a8d0Sopenharmony_ci 34936a3a8d0Sopenharmony_ci bool GetMediaDataByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 35036a3a8d0Sopenharmony_ci { 35136a3a8d0Sopenharmony_ci bool result = false; 35236a3a8d0Sopenharmony_ci if (size > 0) { 35336a3a8d0Sopenharmony_ci std::string testName(data, size); 35436a3a8d0Sopenharmony_ci size_t len = 0; 35536a3a8d0Sopenharmony_ci std::unique_ptr<uint8_t[]> outValue; 35636a3a8d0Sopenharmony_ci result = rm->GetMediaDataByName(testName.c_str(), len, outValue); 35736a3a8d0Sopenharmony_ci } 35836a3a8d0Sopenharmony_ci return result; 35936a3a8d0Sopenharmony_ci } 36036a3a8d0Sopenharmony_ci 36136a3a8d0Sopenharmony_ci bool GetMediaBase64DataByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 36236a3a8d0Sopenharmony_ci { 36336a3a8d0Sopenharmony_ci bool result = false; 36436a3a8d0Sopenharmony_ci if (size > 0) { 36536a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 36636a3a8d0Sopenharmony_ci std::string outValue; 36736a3a8d0Sopenharmony_ci result = rm->GetMediaBase64DataById(testId, outValue); 36836a3a8d0Sopenharmony_ci } 36936a3a8d0Sopenharmony_ci return result; 37036a3a8d0Sopenharmony_ci } 37136a3a8d0Sopenharmony_ci 37236a3a8d0Sopenharmony_ci bool GetMediaBase64DataByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 37336a3a8d0Sopenharmony_ci { 37436a3a8d0Sopenharmony_ci bool result = false; 37536a3a8d0Sopenharmony_ci if (size > 0) { 37636a3a8d0Sopenharmony_ci std::string testName(data, size); 37736a3a8d0Sopenharmony_ci std::string outValue; 37836a3a8d0Sopenharmony_ci result = rm->GetMediaBase64DataByName(testName.c_str(), outValue); 37936a3a8d0Sopenharmony_ci } 38036a3a8d0Sopenharmony_ci return result; 38136a3a8d0Sopenharmony_ci } 38236a3a8d0Sopenharmony_ci 38336a3a8d0Sopenharmony_ci bool GetProfileDataByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 38436a3a8d0Sopenharmony_ci { 38536a3a8d0Sopenharmony_ci bool result = false; 38636a3a8d0Sopenharmony_ci if (size > 0) { 38736a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 38836a3a8d0Sopenharmony_ci size_t len = 0; 38936a3a8d0Sopenharmony_ci std::unique_ptr<uint8_t[]> outValue; 39036a3a8d0Sopenharmony_ci result = rm->GetProfileDataById(testId, len, outValue); 39136a3a8d0Sopenharmony_ci } 39236a3a8d0Sopenharmony_ci return result; 39336a3a8d0Sopenharmony_ci } 39436a3a8d0Sopenharmony_ci 39536a3a8d0Sopenharmony_ci bool GetProfileDataByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 39636a3a8d0Sopenharmony_ci { 39736a3a8d0Sopenharmony_ci bool result = false; 39836a3a8d0Sopenharmony_ci if (size > 0) { 39936a3a8d0Sopenharmony_ci std::string testName(data, size); 40036a3a8d0Sopenharmony_ci size_t len = 0; 40136a3a8d0Sopenharmony_ci std::unique_ptr<uint8_t[]> outValue; 40236a3a8d0Sopenharmony_ci result = rm->GetProfileDataByName(testName.c_str(), len, outValue); 40336a3a8d0Sopenharmony_ci } 40436a3a8d0Sopenharmony_ci return result; 40536a3a8d0Sopenharmony_ci } 40636a3a8d0Sopenharmony_ci 40736a3a8d0Sopenharmony_ci bool GetRawFileFromHapFuzzTest(const char* data, size_t size, ResourceManager *rm) 40836a3a8d0Sopenharmony_ci { 40936a3a8d0Sopenharmony_ci bool result = false; 41036a3a8d0Sopenharmony_ci if (size > 0) { 41136a3a8d0Sopenharmony_ci std::string testName(data, size); 41236a3a8d0Sopenharmony_ci size_t len = 0; 41336a3a8d0Sopenharmony_ci std::unique_ptr<uint8_t[]> outValue; 41436a3a8d0Sopenharmony_ci result = rm->GetRawFileFromHap(testName.c_str(), len, outValue); 41536a3a8d0Sopenharmony_ci } 41636a3a8d0Sopenharmony_ci return result; 41736a3a8d0Sopenharmony_ci } 41836a3a8d0Sopenharmony_ci 41936a3a8d0Sopenharmony_ci bool GetRawFileDescriptorFromHapFuzzTest(const char* data, size_t size, ResourceManager *rm) 42036a3a8d0Sopenharmony_ci { 42136a3a8d0Sopenharmony_ci bool result = false; 42236a3a8d0Sopenharmony_ci if (size > 0) { 42336a3a8d0Sopenharmony_ci std::string testName(data, size); 42436a3a8d0Sopenharmony_ci ResourceManager::RawFileDescriptor outValue; 42536a3a8d0Sopenharmony_ci result = rm->GetRawFileDescriptorFromHap(testName.c_str(), outValue); 42636a3a8d0Sopenharmony_ci } 42736a3a8d0Sopenharmony_ci return result; 42836a3a8d0Sopenharmony_ci } 42936a3a8d0Sopenharmony_ci 43036a3a8d0Sopenharmony_ci bool IsLoadHapFuzzTest(const char* data, size_t size, ResourceManager *rm) 43136a3a8d0Sopenharmony_ci { 43236a3a8d0Sopenharmony_ci bool result = false; 43336a3a8d0Sopenharmony_ci if (size > 0) { 43436a3a8d0Sopenharmony_ci std::string testName(data, size); 43536a3a8d0Sopenharmony_ci result = rm->IsLoadHap(testName); 43636a3a8d0Sopenharmony_ci } 43736a3a8d0Sopenharmony_ci return result; 43836a3a8d0Sopenharmony_ci } 43936a3a8d0Sopenharmony_ci 44036a3a8d0Sopenharmony_ci bool GetRawFileListFuzzTest(const char* data, size_t size, ResourceManager *rm) 44136a3a8d0Sopenharmony_ci { 44236a3a8d0Sopenharmony_ci bool result = false; 44336a3a8d0Sopenharmony_ci if (size > 0) { 44436a3a8d0Sopenharmony_ci std::string testName(data, size); 44536a3a8d0Sopenharmony_ci std::vector<std::string> outValue; 44636a3a8d0Sopenharmony_ci result = rm->GetRawFileList(testName.c_str(), outValue); 44736a3a8d0Sopenharmony_ci } 44836a3a8d0Sopenharmony_ci return result; 44936a3a8d0Sopenharmony_ci } 45036a3a8d0Sopenharmony_ci 45136a3a8d0Sopenharmony_ci bool GetResIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 45236a3a8d0Sopenharmony_ci { 45336a3a8d0Sopenharmony_ci bool result = false; 45436a3a8d0Sopenharmony_ci if (size > 0) { 45536a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 45636a3a8d0Sopenharmony_ci std::string testName(data, size); 45736a3a8d0Sopenharmony_ci result = rm->GetResId(testName.c_str(), testId); 45836a3a8d0Sopenharmony_ci } 45936a3a8d0Sopenharmony_ci return result; 46036a3a8d0Sopenharmony_ci } 46136a3a8d0Sopenharmony_ci 46236a3a8d0Sopenharmony_ci bool GetThemeIconsFuzzTest(const char* data, size_t size, ResourceManager *rm) 46336a3a8d0Sopenharmony_ci { 46436a3a8d0Sopenharmony_ci bool result = false; 46536a3a8d0Sopenharmony_ci if (size > 0) { 46636a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 46736a3a8d0Sopenharmony_ci std::pair<std::unique_ptr<uint8_t[]>, size_t> foregroundInfo; 46836a3a8d0Sopenharmony_ci std::pair<std::unique_ptr<uint8_t[]>, size_t> backgroundInfo; 46936a3a8d0Sopenharmony_ci result = rm->GetThemeIcons(testId, foregroundInfo, backgroundInfo); 47036a3a8d0Sopenharmony_ci } 47136a3a8d0Sopenharmony_ci return result; 47236a3a8d0Sopenharmony_ci } 47336a3a8d0Sopenharmony_ci 47436a3a8d0Sopenharmony_ci bool GetStringFormatByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 47536a3a8d0Sopenharmony_ci { 47636a3a8d0Sopenharmony_ci bool result = false; 47736a3a8d0Sopenharmony_ci if (size > 0) { 47836a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 47936a3a8d0Sopenharmony_ci std::string outValue = ""; 48036a3a8d0Sopenharmony_ci result = rm->GetStringFormatById(outValue, testId); 48136a3a8d0Sopenharmony_ci } 48236a3a8d0Sopenharmony_ci return result; 48336a3a8d0Sopenharmony_ci } 48436a3a8d0Sopenharmony_ci 48536a3a8d0Sopenharmony_ci bool GetColorByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 48636a3a8d0Sopenharmony_ci { 48736a3a8d0Sopenharmony_ci bool result = false; 48836a3a8d0Sopenharmony_ci if (size > 0) { 48936a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 49036a3a8d0Sopenharmony_ci uint32_t outValue = 0; 49136a3a8d0Sopenharmony_ci result = rm->GetColorById(testId, outValue); 49236a3a8d0Sopenharmony_ci } 49336a3a8d0Sopenharmony_ci return result; 49436a3a8d0Sopenharmony_ci } 49536a3a8d0Sopenharmony_ci 49636a3a8d0Sopenharmony_ci bool GetColorByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 49736a3a8d0Sopenharmony_ci { 49836a3a8d0Sopenharmony_ci bool result = false; 49936a3a8d0Sopenharmony_ci if (size > 0) { 50036a3a8d0Sopenharmony_ci std::string testName(data, size); 50136a3a8d0Sopenharmony_ci uint32_t outValue = 0; 50236a3a8d0Sopenharmony_ci result = rm->GetColorByName(testName.c_str(), outValue); 50336a3a8d0Sopenharmony_ci } 50436a3a8d0Sopenharmony_ci return result; 50536a3a8d0Sopenharmony_ci } 50636a3a8d0Sopenharmony_ci 50736a3a8d0Sopenharmony_ci bool GetSymbolByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 50836a3a8d0Sopenharmony_ci { 50936a3a8d0Sopenharmony_ci bool result = false; 51036a3a8d0Sopenharmony_ci if (size > 0) { 51136a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 51236a3a8d0Sopenharmony_ci uint32_t outValue = 0; 51336a3a8d0Sopenharmony_ci result = rm->GetSymbolById(testId, outValue); 51436a3a8d0Sopenharmony_ci } 51536a3a8d0Sopenharmony_ci return result; 51636a3a8d0Sopenharmony_ci } 51736a3a8d0Sopenharmony_ci 51836a3a8d0Sopenharmony_ci bool GetSymbolByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 51936a3a8d0Sopenharmony_ci { 52036a3a8d0Sopenharmony_ci bool result = false; 52136a3a8d0Sopenharmony_ci if (size > 0) { 52236a3a8d0Sopenharmony_ci std::string testName(data, size); 52336a3a8d0Sopenharmony_ci uint32_t outValue = 0; 52436a3a8d0Sopenharmony_ci result = rm->GetSymbolByName(testName.c_str(), outValue); 52536a3a8d0Sopenharmony_ci } 52636a3a8d0Sopenharmony_ci return result; 52736a3a8d0Sopenharmony_ci } 52836a3a8d0Sopenharmony_ci 52936a3a8d0Sopenharmony_ci bool GetProfileByIdFuzzTest(const char* data, size_t size, ResourceManager *rm) 53036a3a8d0Sopenharmony_ci { 53136a3a8d0Sopenharmony_ci bool result = false; 53236a3a8d0Sopenharmony_ci if (size > 0) { 53336a3a8d0Sopenharmony_ci uint32_t testId = static_cast<uint32_t>(atoi(data)); 53436a3a8d0Sopenharmony_ci std::string outValue; 53536a3a8d0Sopenharmony_ci result = rm->GetProfileById(testId, outValue); 53636a3a8d0Sopenharmony_ci } 53736a3a8d0Sopenharmony_ci return result; 53836a3a8d0Sopenharmony_ci } 53936a3a8d0Sopenharmony_ci 54036a3a8d0Sopenharmony_ci bool GetProfileByNameFuzzTest(const char* data, size_t size, ResourceManager *rm) 54136a3a8d0Sopenharmony_ci { 54236a3a8d0Sopenharmony_ci bool result = false; 54336a3a8d0Sopenharmony_ci if (size > 0) { 54436a3a8d0Sopenharmony_ci std::string testName(data, size); 54536a3a8d0Sopenharmony_ci std::string outValue; 54636a3a8d0Sopenharmony_ci result = rm->GetProfileByName(testName.c_str(), outValue); 54736a3a8d0Sopenharmony_ci } 54836a3a8d0Sopenharmony_ci return result; 54936a3a8d0Sopenharmony_ci } 55036a3a8d0Sopenharmony_ci 55136a3a8d0Sopenharmony_ci void ResourceManagerImplAdd(const char* data, size_t size, ResourceManager *rm) 55236a3a8d0Sopenharmony_ci { 55336a3a8d0Sopenharmony_ci AddResourceFuzzTest(data, size, rm); 55436a3a8d0Sopenharmony_ci RemoveResourceFuzzTest(data, size, rm); 55536a3a8d0Sopenharmony_ci AddAppOverlayFuzzTest(data, size, rm); 55636a3a8d0Sopenharmony_ci RemoveAppOverlayFuzzTest(data, size, rm); 55736a3a8d0Sopenharmony_ci GetStringByNameFuzzTest(data, size, rm); 55836a3a8d0Sopenharmony_ci GetStringArrayByNameFuzzTest(data, size, rm); 55936a3a8d0Sopenharmony_ci GetPatternByIdFuzzTest(data, size, rm); 56036a3a8d0Sopenharmony_ci GetPatternByNameFuzzTest(data, size, rm); 56136a3a8d0Sopenharmony_ci GetPluralStringByIdFuzzTest(data, size, rm); 56236a3a8d0Sopenharmony_ci GetPluralStringByNameFuzzTest(data, size, rm); 56336a3a8d0Sopenharmony_ci GetThemeByIdFuzzTest(data, size, rm); 56436a3a8d0Sopenharmony_ci GetThemeByNameFuzzTest(data, size, rm); 56536a3a8d0Sopenharmony_ci GetBooleanByNameFuzzTest(data, size, rm); 56636a3a8d0Sopenharmony_ci GetFloatByNameFuzzTest(data, size, rm); 56736a3a8d0Sopenharmony_ci GetIntArrayByIdFuzzTest(data, size, rm); 56836a3a8d0Sopenharmony_ci GetIntArrayByNameFuzzTest(data, size, rm); 56936a3a8d0Sopenharmony_ci GetRawFilePathByNameFuzzTest(data, size, rm); 57036a3a8d0Sopenharmony_ci GetRawFileDescriptorFuzzTest(data, size, rm); 57136a3a8d0Sopenharmony_ci GetRawFdNdkFromHapFuzzTest(data, size, rm); 57236a3a8d0Sopenharmony_ci CloseRawFileDescriptorFuzzTest(data, size, rm); 57336a3a8d0Sopenharmony_ci GetMediaDataByIdFuzzTest(data, size, rm); 57436a3a8d0Sopenharmony_ci GetMediaDataByNameFuzzTest(data, size, rm); 57536a3a8d0Sopenharmony_ci GetMediaBase64DataByIdFuzzTest(data, size, rm); 57636a3a8d0Sopenharmony_ci GetMediaBase64DataByNameFuzzTest(data, size, rm); 57736a3a8d0Sopenharmony_ci } 57836a3a8d0Sopenharmony_ci 57936a3a8d0Sopenharmony_ci void ResourceManagerImplFuzzTest(const char* data, size_t size) 58036a3a8d0Sopenharmony_ci { 58136a3a8d0Sopenharmony_ci ResourceManager *rm = CreateResourceManager(); 58236a3a8d0Sopenharmony_ci if (rm == nullptr) { 58336a3a8d0Sopenharmony_ci return; 58436a3a8d0Sopenharmony_ci } 58536a3a8d0Sopenharmony_ci ResourceManagerImplAdd(data, size, rm); 58636a3a8d0Sopenharmony_ci GetProfileDataByIdFuzzTest(data, size, rm); 58736a3a8d0Sopenharmony_ci GetProfileDataByNameFuzzTest(data, size, rm); 58836a3a8d0Sopenharmony_ci GetRawFileFromHapFuzzTest(data, size, rm); 58936a3a8d0Sopenharmony_ci GetRawFileDescriptorFromHapFuzzTest(data, size, rm); 59036a3a8d0Sopenharmony_ci IsLoadHapFuzzTest(data, size, rm); 59136a3a8d0Sopenharmony_ci GetRawFileListFuzzTest(data, size, rm); 59236a3a8d0Sopenharmony_ci GetResIdFuzzTest(data, size, rm); 59336a3a8d0Sopenharmony_ci GetThemeIconsFuzzTest(data, size, rm); 59436a3a8d0Sopenharmony_ci GetColorByNameFuzzTest(data, size, rm); 59536a3a8d0Sopenharmony_ci GetSymbolByIdFuzzTest(data, size, rm); 59636a3a8d0Sopenharmony_ci GetSymbolByNameFuzzTest(data, size, rm); 59736a3a8d0Sopenharmony_ci GetProfileByIdFuzzTest(data, size, rm); 59836a3a8d0Sopenharmony_ci GetProfileByNameFuzzTest(data, size, rm); 59936a3a8d0Sopenharmony_ci GetStringByIdFuzzTest(data, size, rm); 60036a3a8d0Sopenharmony_ci GetStringArrayByIdFuzzTest(data, size, rm); 60136a3a8d0Sopenharmony_ci GetIntegerByIdFuzzTest(data, size, rm); 60236a3a8d0Sopenharmony_ci GetIntegerByNameFuzzTest(data, size, rm); 60336a3a8d0Sopenharmony_ci GetBooleanByIdFuzzTest(data, size, rm); 60436a3a8d0Sopenharmony_ci GetFloatByIdFuzzTest(data, size, rm); 60536a3a8d0Sopenharmony_ci GetMediaByIdFuzzTest(data, size, rm); 60636a3a8d0Sopenharmony_ci GetMediaByNameFuzzTest(data, size, rm); 60736a3a8d0Sopenharmony_ci GetStringFormatByIdFuzzTest(data, size, rm); 60836a3a8d0Sopenharmony_ci GetColorByIdFuzzTest(data, size, rm); 60936a3a8d0Sopenharmony_ci delete rm; 61036a3a8d0Sopenharmony_ci return; 61136a3a8d0Sopenharmony_ci } 61236a3a8d0Sopenharmony_ci} 61336a3a8d0Sopenharmony_ci 61436a3a8d0Sopenharmony_ci/* Fuzzer entry point */ 61536a3a8d0Sopenharmony_ciextern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) 61636a3a8d0Sopenharmony_ci{ 61736a3a8d0Sopenharmony_ci /* Run your code on data */ 61836a3a8d0Sopenharmony_ci if (data == nullptr) { 61936a3a8d0Sopenharmony_ci return 0; 62036a3a8d0Sopenharmony_ci } 62136a3a8d0Sopenharmony_ci 62236a3a8d0Sopenharmony_ci char* ch = (char *)malloc(size + 1); 62336a3a8d0Sopenharmony_ci if (ch == nullptr) { 62436a3a8d0Sopenharmony_ci return 0; 62536a3a8d0Sopenharmony_ci } 62636a3a8d0Sopenharmony_ci 62736a3a8d0Sopenharmony_ci (void)memset_s(ch, size, 0x00, size); 62836a3a8d0Sopenharmony_ci if (memcpy_s(ch, size, data, size) != 0) { 62936a3a8d0Sopenharmony_ci free(ch); 63036a3a8d0Sopenharmony_ci ch = nullptr; 63136a3a8d0Sopenharmony_ci return 0; 63236a3a8d0Sopenharmony_ci } 63336a3a8d0Sopenharmony_ci OHOS::ResourceManagerImplFuzzTest(ch, size); 63436a3a8d0Sopenharmony_ci free(ch); 63536a3a8d0Sopenharmony_ci ch = nullptr; 63636a3a8d0Sopenharmony_ci return 0; 63736a3a8d0Sopenharmony_ci} 63836a3a8d0Sopenharmony_ci 639