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 }