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