1 /*
2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #define private public
16 #define protected public
17 #include "security_mode_parser.h"
18 #undef private
19
20 #include "securitymodeparser_fuzzer.h"
21
22 using namespace OHOS::MiscServices;
23 namespace OHOS {
FuzzInitialize(const int32_t userId)24 void FuzzInitialize(const int32_t userId)
25 {
26 SecurityModeParser::GetInstance()->Initialize(userId);
27 }
28
FuzzGetSecurityMode(const std::string & bundleName,const int32_t userId)29 void FuzzGetSecurityMode(const std::string &bundleName, const int32_t userId)
30 {
31 SecurityModeParser::GetInstance()->GetSecurityMode(bundleName, userId);
32 }
33
FuzzUpdateFullModeList(const int32_t userId)34 void FuzzUpdateFullModeList(const int32_t userId)
35 {
36 SecurityModeParser::GetInstance()->UpdateFullModeList(userId);
37 }
38
FuzzParseSecurityMode(const std::string & bundleName,const int32_t userId)39 void FuzzParseSecurityMode(const std::string &bundleName, const int32_t userId)
40 {
41 SecurityModeParser::GetInstance()->ParseSecurityMode(bundleName, userId);
42 }
43
FuzzIsFullMode(const std::string & bundleName)44 void FuzzIsFullMode(const std::string &bundleName)
45 {
46 SecurityModeParser::GetInstance()->IsFullMode(bundleName);
47 }
48
49 } // namespace OHOS
50 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)51 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
52 {
53 if (data == nullptr) {
54 return 0;
55 }
56 /* Run your code on data */
57 const int32_t userId = static_cast<int32_t>(size);
58 std::string fuzzedString(reinterpret_cast<const char *>(data), size);
59
60 OHOS::FuzzInitialize(userId);
61 OHOS::FuzzGetSecurityMode(fuzzedString, userId);
62 OHOS::FuzzUpdateFullModeList(userId);
63 OHOS::FuzzParseSecurityMode(fuzzedString, userId);
64 OHOS::FuzzIsFullMode(fuzzedString);
65 return 0;
66 }
67