• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }