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