1 /*
2 * Copyright (c) 2024 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
16 #include "utd_client_fuzzer.h"
17 #include "utd_client.h"
18
19 #include <fuzzer/FuzzedDataProvider.h>
20
21 using namespace OHOS;
22 using namespace OHOS::UDMF;
23
24 namespace OHOS {
SetUpTestCase()25 void SetUpTestCase()
26 {
27 }
28
TearDown()29 void TearDown()
30 {
31 }
32
GetTypeDescriptorFuzz(FuzzedDataProvider & provider)33 void GetTypeDescriptorFuzz(FuzzedDataProvider &provider)
34 {
35 std::string typeId = provider.ConsumeRandomLengthString();
36 std::shared_ptr<TypeDescriptor> typeDescriptor;
37 UtdClient::GetInstance().GetTypeDescriptor(typeId, typeDescriptor);
38 }
39
GetUniformDataTypeByFilenameExtensionDefaultBelongsFuzz(FuzzedDataProvider & provider)40 void GetUniformDataTypeByFilenameExtensionDefaultBelongsFuzz(FuzzedDataProvider &provider)
41 {
42 std::string fileExtension = provider.ConsumeRandomLengthString();
43 std::string typeId;
44 UtdClient::GetInstance().GetUniformDataTypeByFilenameExtension(fileExtension, typeId);
45 }
46
GetUniformDataTypeByFilenameExtensionFuzz(FuzzedDataProvider & provider)47 void GetUniformDataTypeByFilenameExtensionFuzz(FuzzedDataProvider &provider)
48 {
49 std::string fileExtension = provider.ConsumeRandomLengthString();
50 std::string typeId;
51 std::string belongsTo = provider.ConsumeRandomLengthString();
52 UtdClient::GetInstance().GetUniformDataTypeByFilenameExtension(fileExtension, typeId, belongsTo);
53 }
54
GetUniformDataTypesByFilenameExtensionDefaultBelongsFuzz(FuzzedDataProvider & provider)55 void GetUniformDataTypesByFilenameExtensionDefaultBelongsFuzz(FuzzedDataProvider &provider)
56 {
57 std::string fileExtension = provider.ConsumeRandomLengthString();
58 std::vector<std::string> typeIds;
59 UtdClient::GetInstance().GetUniformDataTypesByFilenameExtension(fileExtension, typeIds);
60 }
61
GetUniformDataTypesByFilenameExtensionFuzz(FuzzedDataProvider & provider)62 void GetUniformDataTypesByFilenameExtensionFuzz(FuzzedDataProvider &provider)
63 {
64 std::string fileExtension = provider.ConsumeRandomLengthString();
65 std::vector<std::string> typeIds;
66 std::string belongsTo = provider.ConsumeRandomLengthString();
67 UtdClient::GetInstance().GetUniformDataTypesByFilenameExtension(fileExtension, typeIds, belongsTo);
68 }
69
GetUniformDataTypeByMIMETypeDefaultBelongsFuzz(FuzzedDataProvider & provider)70 void GetUniformDataTypeByMIMETypeDefaultBelongsFuzz(FuzzedDataProvider &provider)
71 {
72 std::string mimeType = provider.ConsumeRandomLengthString();
73 std::string typeId;
74 UtdClient::GetInstance().GetUniformDataTypeByMIMEType(mimeType, typeId);
75 }
76
GetUniformDataTypeByMIMETypeFuzz(FuzzedDataProvider & provider)77 void GetUniformDataTypeByMIMETypeFuzz(FuzzedDataProvider &provider)
78 {
79 std::string mimeType = provider.ConsumeRandomLengthString();
80 std::string typeId;
81 std::string belongsTo = provider.ConsumeRandomLengthString();
82 UtdClient::GetInstance().GetUniformDataTypeByMIMEType(mimeType, typeId, belongsTo);
83 }
84
GetUniformDataTypesByMIMETypeDefaultBelongsFuzz(FuzzedDataProvider & provider)85 void GetUniformDataTypesByMIMETypeDefaultBelongsFuzz(FuzzedDataProvider &provider)
86 {
87 std::string mimeType = provider.ConsumeRandomLengthString();
88 std::vector<std::string> typeIds;
89 UtdClient::GetInstance().GetUniformDataTypesByMIMEType(mimeType, typeIds);
90 }
91
GetUniformDataTypesByMIMETypeFuzz(FuzzedDataProvider & provider)92 void GetUniformDataTypesByMIMETypeFuzz(FuzzedDataProvider &provider)
93 {
94 std::string mimeType = provider.ConsumeRandomLengthString();
95 std::vector<std::string> typeIds;
96 std::string belongsTo = provider.ConsumeRandomLengthString();
97 UtdClient::GetInstance().GetUniformDataTypesByMIMEType(mimeType, typeIds, belongsTo);
98 }
99
IsUtdFuzz(FuzzedDataProvider & provider)100 void IsUtdFuzz(FuzzedDataProvider &provider)
101 {
102 std::string typeId = provider.ConsumeRandomLengthString();
103 bool result;
104 UtdClient::GetInstance().IsUtd(typeId, result);
105 }
106
107 }
108 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)109 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
110 {
111 /* Run your code on data */
112 FuzzedDataProvider provider(data, size);
113 OHOS::SetUpTestCase();
114 OHOS::GetTypeDescriptorFuzz(provider);
115 OHOS::GetUniformDataTypeByFilenameExtensionDefaultBelongsFuzz(provider);
116 OHOS::GetUniformDataTypeByFilenameExtensionFuzz(provider);
117 OHOS::GetUniformDataTypesByFilenameExtensionDefaultBelongsFuzz(provider);
118 OHOS::GetUniformDataTypesByFilenameExtensionFuzz(provider);
119 OHOS::GetUniformDataTypeByMIMETypeDefaultBelongsFuzz(provider);
120 OHOS::GetUniformDataTypeByMIMETypeFuzz(provider);
121 OHOS::GetUniformDataTypesByMIMETypeDefaultBelongsFuzz(provider);
122 OHOS::GetUniformDataTypesByMIMETypeFuzz(provider);
123 OHOS::IsUtdFuzz(provider);
124 return 0;
125 }