• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 #include "ipc_model_codec_fuzzer.h"
16 
17 #include <fuzzer/FuzzedDataProvider.h>
18 
19 #include "ipc_model_codec.h"
20 
21 
22 namespace OHOS {
23 namespace DistributedHardware {
24 constexpr size_t MAX_STRING_LENGTH = 64;
DecodeDmDeviceBasicInfoFuzzTest(const uint8_t * data,size_t size)25 void DecodeDmDeviceBasicInfoFuzzTest(const uint8_t* data, size_t size)
26 {
27     size_t requiredSize = sizeof(uint16_t) + MAX_STRING_LENGTH * 4;
28     if ((data == nullptr) || (size < requiredSize)) {
29         return;
30     }
31     FuzzedDataProvider fdp(data, size);
32 
33     MessageParcel parcel;
34     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
35     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
36     parcel.WriteUint16(fdp.ConsumeIntegral<uint16_t>());
37     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
38     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
39 
40     DmDeviceBasicInfo devInfo;
41     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
42     ipcModelCodec->DecodeDmDeviceBasicInfo(parcel, devInfo);
43 }
44 
EncodePeerTargetIdFuzzTest(const uint8_t * data,size_t size)45 void EncodePeerTargetIdFuzzTest(const uint8_t* data, size_t size)
46 {
47     size_t requiredSize = sizeof(uint16_t) + MAX_STRING_LENGTH * 4;
48     if ((data == nullptr) || (size < requiredSize)) {
49         return;
50     }
51     FuzzedDataProvider fdp(data, size);
52 
53     PeerTargetId targetId;
54     targetId.deviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
55     targetId.brMac = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
56     targetId.bleMac = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
57     targetId.wifiIp = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
58     targetId.wifiPort = fdp.ConsumeIntegral<uint16_t>();
59 
60     MessageParcel parcel;
61     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
62     ipcModelCodec->EncodePeerTargetId(targetId, parcel);
63 }
64 
DecodePeerTargetIdFuzzTest(const uint8_t * data,size_t size)65 void DecodePeerTargetIdFuzzTest(const uint8_t* data, size_t size)
66 {
67     size_t requiredSize = sizeof(uint16_t) + MAX_STRING_LENGTH * 4;
68     if ((data == nullptr) || (size < requiredSize)) {
69         return;
70     }
71     FuzzedDataProvider fdp(data, size);
72 
73     MessageParcel parcel;
74     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
75     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
76     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
77     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
78     parcel.WriteUint16(fdp.ConsumeIntegral<uint16_t>());
79 
80     PeerTargetId targetId;
81     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
82     ipcModelCodec->DecodePeerTargetId(parcel, targetId);
83 }
84 
EncodeDmAccessCallerFuzzTest(const uint8_t * data,size_t size)85 void EncodeDmAccessCallerFuzzTest(const uint8_t* data, size_t size)
86 {
87     size_t requiredSize = sizeof(int32_t) + sizeof(uint64_t) + MAX_STRING_LENGTH * 4;
88     if ((data == nullptr) || (size < requiredSize)) {
89         return;
90     }
91     FuzzedDataProvider fdp(data, size);
92 
93     DmAccessCaller caller;
94     caller.accountId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
95     caller.pkgName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
96     caller.networkId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
97     caller.userId = fdp.ConsumeIntegral<int32_t>();
98     caller.tokenId = fdp.ConsumeIntegral<uint64_t>();
99     caller.extra = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
100 
101     MessageParcel parcel;
102     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
103     ipcModelCodec->EncodeDmAccessCaller(caller, parcel);
104 }
105 
EncodeDmAccessCalleeFuzzTest(const uint8_t * data,size_t size)106 void EncodeDmAccessCalleeFuzzTest(const uint8_t* data, size_t size)
107 {
108     size_t requiredSize = sizeof(int32_t) + sizeof(uint64_t) + MAX_STRING_LENGTH * 5;
109     if ((data == nullptr) || (size < requiredSize)) {
110         return;
111     }
112     FuzzedDataProvider fdp(data, size);
113 
114     DmAccessCallee callee;
115     callee.accountId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
116     callee.networkId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
117     callee.peerId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
118     callee.pkgName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
119     callee.userId = fdp.ConsumeIntegral<int32_t>();
120     callee.extra = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
121     callee.tokenId = fdp.ConsumeIntegral<uint64_t>();
122 
123     MessageParcel parcel;
124     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
125     ipcModelCodec->EncodeDmAccessCallee(callee, parcel);
126 }
127 
DecodeDmDeviceProfileInfoFilterOptionsFuzzTest(const uint8_t * data,size_t size)128 void DecodeDmDeviceProfileInfoFilterOptionsFuzzTest(const uint8_t* data, size_t size)
129 {
130     if ((data == nullptr) || (size < sizeof(uint32_t) + sizeof(uint32_t))) {
131         return;
132     }
133     FuzzedDataProvider fdp(data, size);
134 
135     MessageParcel parcel;
136     parcel.WriteBool(fdp.ConsumeBool());
137     uint32_t minRangeSize = 0;
138     uint32_t middleRangeSize = 500;
139     uint32_t maxRangeSize = 1000;
140     uint32_t listSize = fdp.ConsumeIntegralInRange<uint32_t>(middleRangeSize, maxRangeSize);
141     parcel.WriteUint32(listSize);
142 
143     DmDeviceProfileInfoFilterOptions filterOptions;
144     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
145     ipcModelCodec->DecodeDmDeviceProfileInfoFilterOptions(parcel, filterOptions);
146 
147     listSize = fdp.ConsumeIntegralInRange<uint32_t>(minRangeSize, middleRangeSize);
148     parcel.WriteUint32(listSize);
149     ipcModelCodec->DecodeDmDeviceProfileInfoFilterOptions(parcel, filterOptions);
150 }
151 
EncodeDmDeviceProfileInfoFilterOptionsFuzzTest(const uint8_t * data,size_t size)152 void EncodeDmDeviceProfileInfoFilterOptionsFuzzTest(const uint8_t* data, size_t size)
153 {
154     if ((data == nullptr) || (size < sizeof(uint32_t) + MAX_STRING_LENGTH)) {
155         return;
156     }
157     FuzzedDataProvider fdp(data, size);
158 
159     DmDeviceProfileInfoFilterOptions filterOptions;
160     filterOptions.isCloud = fdp.ConsumeBool();
161     uint32_t minRangeSize = 0;
162     uint32_t maxRangeSize = 100;
163     uint32_t listSize = fdp.ConsumeIntegralInRange<uint32_t>(minRangeSize, maxRangeSize);
164     for (uint32_t i = 0; i < listSize; ++i) {
165         filterOptions.deviceIdList.emplace_back(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
166     }
167     MessageParcel parcel;
168 
169     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
170     ipcModelCodec->EncodeDmDeviceProfileInfoFilterOptions(filterOptions, parcel);
171 }
172 
DecodeDmServiceProfileInfoFuzzTest(const uint8_t * data,size_t size)173 void DecodeDmServiceProfileInfoFuzzTest(const uint8_t* data, size_t size)
174 {
175     size_t requiredSize = sizeof(int32_t) + MAX_STRING_LENGTH * 5;
176     if ((data == nullptr) || (size < requiredSize)) {
177         return;
178     }
179     FuzzedDataProvider fdp(data, size);
180 
181     MessageParcel parcel;
182     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
183     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
184     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
185     int32_t minRangeSize = 0;
186     int32_t maxRangeSize = 100;
187     int32_t num = fdp.ConsumeIntegralInRange<int32_t>(minRangeSize, maxRangeSize);
188     parcel.WriteInt32(num);
189     for (int32_t i = 0; i < num; ++i) {
190         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
191         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
192     }
193     DmServiceProfileInfo svrInfo;
194 
195     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
196     ipcModelCodec->DecodeDmServiceProfileInfo(parcel, svrInfo);
197 }
198 
DecodeDmServiceProfileInfosFuzzTest(const uint8_t * data,size_t size)199 void DecodeDmServiceProfileInfosFuzzTest(const uint8_t* data, size_t size)
200 {
201     size_t requiredSize = sizeof(int32_t) * 2 + MAX_STRING_LENGTH * 5;
202     if ((data == nullptr) || (size < requiredSize)) {
203         return;
204     }
205     FuzzedDataProvider fdp(data, size);
206 
207     MessageParcel parcel;
208     int32_t minRangeSize = 0;
209     int32_t middleRangeSize = 50;
210     int32_t maxRangeSize = 100;
211     int32_t svrNum = fdp.ConsumeIntegralInRange<int32_t>(minRangeSize, maxRangeSize);
212     parcel.WriteInt32(svrNum);
213     for (int32_t i = 0; i < svrNum; ++i) {
214         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
215         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
216         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
217         int32_t num = fdp.ConsumeIntegralInRange<int32_t>(minRangeSize, middleRangeSize);
218         parcel.WriteInt32(num);
219         for (int32_t j = 0; j < num; ++j) {
220             parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
221             parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
222         }
223     }
224     std::vector<DmServiceProfileInfo> svrInfos;
225 
226     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
227     ipcModelCodec->DecodeDmServiceProfileInfos(parcel, svrInfos);
228 }
229 
DecodeDmDeviceProfileInfoFuzzTest(const uint8_t * data,size_t size)230 void DecodeDmDeviceProfileInfoFuzzTest(const uint8_t* data, size_t size)
231 {
232     size_t requiredSize = sizeof(int32_t) * 2 + MAX_STRING_LENGTH * 22;
233     if ((data == nullptr) || (size < requiredSize)) {
234         return;
235     }
236     FuzzedDataProvider fdp(data, size);
237     MessageParcel parcel;
238     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
239     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
240     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
241     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
242     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
243     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
244     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
245     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
246     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
247     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
248     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
249     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
250     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
251     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
252     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
253     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
254     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
255     parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
256     parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
257     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
258     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
259     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
260     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
261     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
262     parcel.WriteBool(fdp.ConsumeBool());
263     int32_t serviceCount = 10;
264     parcel.WriteInt32(serviceCount);
265     for (int32_t i = 0; i < serviceCount; ++i) {
266         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
267         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
268         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
269         int32_t dataCount = 5;
270         parcel.WriteInt32(dataCount);
271         for (int32_t j = 0; j < dataCount; ++j) {
272             parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
273             parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
274         }
275     }
276     DmDeviceProfileInfo devInfo;
277     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
278     ipcModelCodec->DecodeDmDeviceProfileInfo(parcel, devInfo);
279 }
280 
EncodeDmServiceProfileInfoFuzzTest(const uint8_t * data,size_t size)281 void EncodeDmServiceProfileInfoFuzzTest(const uint8_t* data, size_t size)
282 {
283     size_t requiredSize = sizeof(int32_t) + MAX_STRING_LENGTH * 5;
284     if ((data == nullptr) || (size < requiredSize)) {
285         return;
286     }
287     FuzzedDataProvider fdp(data, size);
288 
289     DmServiceProfileInfo svrInfo;
290     svrInfo.deviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
291     svrInfo.serviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
292     svrInfo.serviceType = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
293     int32_t minRangeSize = 0;
294     int32_t maxRangeSize = 100;
295     int32_t dataSize = fdp.ConsumeIntegralInRange<int32_t>(minRangeSize, maxRangeSize);
296     for (int32_t i = 0; i < dataSize; ++i) {
297         std::string key = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
298         std::string value = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
299         svrInfo.data[key] = value;
300     }
301     MessageParcel parcel;
302 
303     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
304     ipcModelCodec->EncodeDmServiceProfileInfo(svrInfo, parcel);
305 }
306 
EncodeDmServiceProfileInfosFuzzTest(const uint8_t * data,size_t size)307 void EncodeDmServiceProfileInfosFuzzTest(const uint8_t* data, size_t size)
308 {
309     size_t requiredSize = sizeof(int32_t) * 2 + MAX_STRING_LENGTH * 5;
310     if ((data == nullptr) || (size < requiredSize)) {
311         return;
312     }
313     FuzzedDataProvider fdp(data, size);
314     int32_t minRangeSize = 0;
315     int32_t middleRangeSize = 50;
316     int32_t maxRangeSize = 100;
317     std::vector<DmServiceProfileInfo> svrInfos;
318     int32_t listSize = fdp.ConsumeIntegralInRange<int32_t>(minRangeSize, maxRangeSize);
319     for (int32_t i = 0; i < listSize; ++i) {
320         DmServiceProfileInfo svrInfo;
321         svrInfo.deviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
322         svrInfo.serviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
323         svrInfo.serviceType = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
324 
325         int32_t dataSize = fdp.ConsumeIntegralInRange<int32_t>(minRangeSize, middleRangeSize);
326         for (int32_t j = 0; j < dataSize; ++j) {
327             std::string key = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
328             std::string value = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
329             svrInfo.data[key] = value;
330         }
331         svrInfos.emplace_back(svrInfo);
332     }
333     MessageParcel parcel;
334 
335     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
336     ipcModelCodec->EncodeDmServiceProfileInfos(svrInfos, parcel);
337 }
338 
EncodeDmDeviceProfileInfoFuzzTest(const uint8_t * data,size_t size)339 void EncodeDmDeviceProfileInfoFuzzTest(const uint8_t* data, size_t size)
340 {
341     size_t requiredSize = sizeof(int32_t) * 2 + MAX_STRING_LENGTH * 22;
342     if ((data == nullptr) || (size < requiredSize)) {
343         return;
344     }
345     FuzzedDataProvider fdp(data, size);
346     DmDeviceProfileInfo devInfo;
347     devInfo.deviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
348     devInfo.deviceSn = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
349     devInfo.mac = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
350     devInfo.model = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
351     devInfo.internalModel = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
352     devInfo.deviceType = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
353     devInfo.manufacturer = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
354     devInfo.deviceName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
355     devInfo.productName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
356     devInfo.productId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
357     devInfo.subProductId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
358     devInfo.sdkVersion = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
359     devInfo.bleMac = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
360     devInfo.sleMac = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
361     devInfo.firmwareVersion = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
362     devInfo.hardwareVersion = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
363     devInfo.softwareVersion = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
364     devInfo.protocolType = fdp.ConsumeIntegral<int32_t>();
365     devInfo.setupType = fdp.ConsumeIntegral<int32_t>();
366     devInfo.wiseDeviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
367     devInfo.wiseUserId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
368     devInfo.registerTime = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
369     devInfo.modifyTime = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
370     devInfo.shareTime = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
371     devInfo.isLocalDevice = fdp.ConsumeBool();
372     int32_t serviceCount = 10;
373     for (int32_t i = 0; i < serviceCount; ++i) {
374         DmServiceProfileInfo serviceInfo;
375         serviceInfo.deviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
376         serviceInfo.serviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
377         serviceInfo.serviceType = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
378         int32_t dataCount = 5;
379         for (int32_t j = 0; j < dataCount; ++j) {
380             std::string key = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
381             std::string value = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
382             serviceInfo.data[key] = value;
383         }
384         devInfo.services.emplace_back(serviceInfo);
385     }
386     MessageParcel parcel;
387     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
388     ipcModelCodec->EncodeDmDeviceProfileInfo(devInfo, parcel);
389 }
390 
GetDeviceIconInfoUniqueKeyFuzzTest(const uint8_t * data,size_t size)391 void GetDeviceIconInfoUniqueKeyFuzzTest(const uint8_t* data, size_t size)
392 {
393     size_t requiredSize = MAX_STRING_LENGTH * 5;
394     if ((data == nullptr) || (size < requiredSize)) {
395         return;
396     }
397     FuzzedDataProvider fdp(data, size);
398 
399     DmDeviceIconInfoFilterOptions iconFilter;
400     iconFilter.productId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
401     iconFilter.subProductId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
402     iconFilter.internalModel = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
403     iconFilter.imageType = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
404     iconFilter.specName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
405 
406     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
407     ipcModelCodec->GetDeviceIconInfoUniqueKey(iconFilter);
408 }
409 
GetDeviceIconInfoFuzzTest(const uint8_t * data,size_t size)410 void GetDeviceIconInfoFuzzTest(const uint8_t* data, size_t size)
411 {
412     size_t requiredSize = MAX_STRING_LENGTH * 5;
413     if ((data == nullptr) || (size < requiredSize)) {
414         return;
415     }
416     FuzzedDataProvider fdp(data, size);
417 
418     DmDeviceIconInfo iconInfo;
419     iconInfo.productId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
420     iconInfo.subProductId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
421     iconInfo.internalModel = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
422     iconInfo.imageType = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
423     iconInfo.specName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
424 
425     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
426     ipcModelCodec->GetDeviceIconInfoUniqueKey(iconInfo);
427 }
428 
DecodeDmDeviceIconInfoFuzzTest(const uint8_t * data,size_t size)429 void DecodeDmDeviceIconInfoFuzzTest(const uint8_t* data, size_t size)
430 {
431     size_t requiredSize = sizeof(int32_t) + sizeof(uint8_t) + MAX_STRING_LENGTH * 7;
432     if ((data == nullptr) || (size < requiredSize)) {
433         return;
434     }
435     FuzzedDataProvider fdp(data, size);
436 
437     MessageParcel parcel;
438     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
439     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
440     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
441     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
442     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
443     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
444     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
445 
446     int32_t minRangeLength = 0;
447     int32_t maxRangeLength = 100;
448     int32_t iconLength = fdp.ConsumeIntegralInRange<int32_t>(minRangeLength, maxRangeLength);
449     parcel.WriteInt32(iconLength);
450     if (iconLength > 0) {
451         std::vector<uint8_t> iconData = fdp.ConsumeBytes<uint8_t>(iconLength);
452         parcel.WriteRawData(iconData.data(), iconData.size());
453     }
454     DmDeviceIconInfo deviceIconInfo;
455 
456     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
457     ipcModelCodec->DecodeDmDeviceIconInfo(parcel, deviceIconInfo);
458 }
459 
EncodeDmDeviceIconInfoFuzzTest(const uint8_t * data,size_t size)460 void EncodeDmDeviceIconInfoFuzzTest(const uint8_t* data, size_t size)
461 {
462     size_t requiredSize = sizeof(int32_t) + sizeof(uint8_t) + MAX_STRING_LENGTH * 7;
463     if ((data == nullptr) || (size < requiredSize)) {
464         return;
465     }
466     FuzzedDataProvider fdp(data, size);
467 
468     DmDeviceIconInfo deviceIconInfo;
469     deviceIconInfo.productId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
470     deviceIconInfo.subProductId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
471     deviceIconInfo.internalModel = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
472     deviceIconInfo.imageType = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
473     deviceIconInfo.specName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
474     deviceIconInfo.version = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
475     deviceIconInfo.url = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
476 
477     int32_t minRangeLength = 0;
478     int32_t maxRangeLength = 100;
479     int32_t iconLength = fdp.ConsumeIntegralInRange<int32_t>(minRangeLength, maxRangeLength);
480     deviceIconInfo.icon = fdp.ConsumeBytes<uint8_t>(iconLength);
481 
482     MessageParcel parcel;
483     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
484     ipcModelCodec->EncodeDmDeviceIconInfo(deviceIconInfo, parcel);
485 }
486 
DecodeDmDeviceIconInfoFilterOptionsFuzzTest(const uint8_t * data,size_t size)487 void DecodeDmDeviceIconInfoFilterOptionsFuzzTest(const uint8_t* data, size_t size)
488 {
489     size_t requiredSize = MAX_STRING_LENGTH * 5;
490     if ((data == nullptr) || (size < requiredSize)) {
491         return;
492     }
493     FuzzedDataProvider fdp(data, size);
494 
495     MessageParcel parcel;
496     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
497     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
498     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
499     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
500     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
501 
502     DmDeviceIconInfoFilterOptions filterOptions;
503     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
504     ipcModelCodec->DecodeDmDeviceIconInfoFilterOptions(parcel, filterOptions);
505 }
506 
EncodeDmDeviceIconInfoFilterOptionsFuzzTest(const uint8_t * data,size_t size)507 void EncodeDmDeviceIconInfoFilterOptionsFuzzTest(const uint8_t* data, size_t size)
508 {
509     size_t requiredSize = MAX_STRING_LENGTH * 5;
510     if ((data == nullptr) || (size < requiredSize)) {
511         return;
512     }
513     FuzzedDataProvider fdp(data, size);
514 
515     DmDeviceIconInfoFilterOptions filterOptions;
516     filterOptions.productId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
517     filterOptions.subProductId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
518     filterOptions.internalModel = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
519     filterOptions.imageType = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
520     filterOptions.specName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
521 
522     MessageParcel parcel;
523     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
524     ipcModelCodec->EncodeDmDeviceIconInfoFilterOptions(filterOptions, parcel);
525 }
526 
DecodeDmDeviceInfoFuzzTest(const uint8_t * data,size_t size)527 void DecodeDmDeviceInfoFuzzTest(const uint8_t* data, size_t size)
528 {
529     size_t requiredSize = sizeof(int32_t) * 3 + sizeof(uint16_t) + MAX_STRING_LENGTH * 4;
530     if ((data == nullptr) || (size < requiredSize)) {
531         return;
532     }
533     FuzzedDataProvider fdp(data, size);
534 
535     MessageParcel parcel;
536     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
537     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
538     parcel.WriteUint16(fdp.ConsumeIntegral<uint16_t>());
539     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
540     parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
541     parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
542     parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
543     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
544 
545     DmDeviceInfo devInfo;
546     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
547     ipcModelCodec->DecodeDmDeviceInfo(parcel, devInfo);
548 }
549 
EncodeLocalServiceInfoFuzzTest(const uint8_t * data,size_t size)550 void EncodeLocalServiceInfoFuzzTest(const uint8_t* data, size_t size)
551 {
552     size_t requiredSize = sizeof(int32_t) * 3 + MAX_STRING_LENGTH * 4;
553     if ((data == nullptr) || (size < requiredSize)) {
554         return;
555     }
556     FuzzedDataProvider fdp(data, size);
557 
558     DMLocalServiceInfo serviceInfo;
559     serviceInfo.bundleName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
560     serviceInfo.authBoxType = fdp.ConsumeIntegral<int32_t>();
561     serviceInfo.authType = fdp.ConsumeIntegral<int32_t>();
562     serviceInfo.pinExchangeType = fdp.ConsumeIntegral<int32_t>();
563     serviceInfo.pinCode = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
564     serviceInfo.description = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
565     serviceInfo.extraInfo = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
566 
567     MessageParcel parcel;
568 
569     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
570     ipcModelCodec->EncodeLocalServiceInfo(serviceInfo, parcel);
571 }
572 
EncodeLocalServiceInfosFuzzTest(const uint8_t * data,size_t size)573 void EncodeLocalServiceInfosFuzzTest(const uint8_t* data, size_t size)
574 {
575     size_t requiredSize = sizeof(int32_t) * 6 + sizeof(uint32_t) + MAX_STRING_LENGTH * 4;
576     if ((data == nullptr) || (size < requiredSize)) {
577         return;
578     }
579     FuzzedDataProvider fdp(data, size);
580     uint32_t minRangeSize = 0;
581     uint32_t maxRangeSize = 100;
582     std::vector<DMLocalServiceInfo> serviceInfos;
583     uint32_t listSize = fdp.ConsumeIntegralInRange<uint32_t>(minRangeSize, maxRangeSize);
584     for (uint32_t i = 0; i < listSize; ++i) {
585         DMLocalServiceInfo serviceInfo;
586         serviceInfo.bundleName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
587         serviceInfo.authBoxType = fdp.ConsumeIntegral<int32_t>();
588         serviceInfo.authType = fdp.ConsumeIntegral<int32_t>();
589         serviceInfo.pinExchangeType = fdp.ConsumeIntegral<int32_t>();
590         serviceInfo.pinCode = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
591         serviceInfo.description = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
592         serviceInfo.extraInfo = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
593         serviceInfos.emplace_back(serviceInfo);
594     }
595     MessageParcel parcel;
596     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
597     ipcModelCodec->EncodeLocalServiceInfos(serviceInfos, parcel);
598     serviceInfos.clear();
599     uint32_t outListSize = 1001;
600     for (uint32_t i = 0; i < outListSize; ++i) {
601         DMLocalServiceInfo serviceInfo;
602         serviceInfo.bundleName = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
603         serviceInfo.authBoxType = fdp.ConsumeIntegral<int32_t>();
604         serviceInfo.authType = fdp.ConsumeIntegral<int32_t>();
605         serviceInfo.pinExchangeType = fdp.ConsumeIntegral<int32_t>();
606         serviceInfo.pinCode = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
607         serviceInfo.description = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
608         serviceInfo.extraInfo = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
609         serviceInfos.emplace_back(serviceInfo);
610     }
611     ipcModelCodec->EncodeLocalServiceInfos(serviceInfos, parcel);
612 }
613 
DecodeLocalServiceInfoFuzzTest(const uint8_t * data,size_t size)614 void DecodeLocalServiceInfoFuzzTest(const uint8_t* data, size_t size)
615 {
616     size_t requiredSize = sizeof(int32_t) * 3 + MAX_STRING_LENGTH * 4;
617     if ((data == nullptr) || (size < requiredSize)) {
618         return;
619     }
620     FuzzedDataProvider fdp(data, size);
621 
622     MessageParcel parcel;
623     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
624     parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
625     parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
626     parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
627     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
628     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
629     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
630 
631     DMLocalServiceInfo serviceInfo;
632     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
633     ipcModelCodec->DecodeLocalServiceInfo(parcel, serviceInfo);
634 }
635 
DecodeLocalServiceInfosFuzzTest(const uint8_t * data,size_t size)636 void DecodeLocalServiceInfosFuzzTest(const uint8_t* data, size_t size)
637 {
638     size_t requiredSize = sizeof(int32_t) * 3 + sizeof(uint32_t) + MAX_STRING_LENGTH * 4;
639     if ((data == nullptr) || (size < requiredSize)) {
640         return;
641     }
642     FuzzedDataProvider fdp(data, size);
643 
644     uint32_t minRangeSize = 0;
645     uint32_t maxRangeSize = 100;
646     MessageParcel parcel;
647     uint32_t num = fdp.ConsumeIntegralInRange<uint32_t>(minRangeSize, maxRangeSize);
648     parcel.WriteUint32(num);
649     for (uint32_t i = 0; i < num; ++i) {
650         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
651         parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
652         parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
653         parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
654         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
655         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
656         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
657     }
658 
659     std::vector<DMLocalServiceInfo> serviceInfos;
660     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
661     ipcModelCodec->DecodeLocalServiceInfos(parcel, serviceInfos);
662 }
663 
EncodeNetworkIdQueryFilterFuzzTest(const uint8_t * data,size_t size)664 void EncodeNetworkIdQueryFilterFuzzTest(const uint8_t* data, size_t size)
665 {
666     size_t requiredSize = sizeof(int32_t) + MAX_STRING_LENGTH * 4;
667     if ((data == nullptr) || (size < requiredSize)) {
668         return;
669     }
670     FuzzedDataProvider fdp(data, size);
671 
672     NetworkIdQueryFilter queryFilter;
673     queryFilter.wiseDeviceId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
674     queryFilter.onlineStatus = fdp.ConsumeIntegral<int32_t>();
675     queryFilter.deviceType = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
676     queryFilter.deviceProductId = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
677     queryFilter.deviceModel = fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH);
678 
679     MessageParcel parcel;
680     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
681     ipcModelCodec->EncodeNetworkIdQueryFilter(queryFilter, parcel);
682 }
683 
DecodeNetworkIdQueryFilterFuzzTest(const uint8_t * data,size_t size)684 void DecodeNetworkIdQueryFilterFuzzTest(const uint8_t* data, size_t size)
685 {
686     size_t requiredSize = sizeof(int32_t) + MAX_STRING_LENGTH * 4;
687     if ((data == nullptr) || (size < requiredSize)) {
688         return;
689     }
690     FuzzedDataProvider fdp(data, size);
691 
692     MessageParcel parcel;
693     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
694     parcel.WriteInt32(fdp.ConsumeIntegral<int32_t>());
695     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
696     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
697     parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
698 
699     NetworkIdQueryFilter queryFilter;
700     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
701     ipcModelCodec->DecodeNetworkIdQueryFilter(parcel, queryFilter);
702 }
703 
EncodeStringVectorFuzzTest(const uint8_t * data,size_t size)704 void EncodeStringVectorFuzzTest(const uint8_t* data, size_t size)
705 {
706     if ((data == nullptr) || (size < sizeof(uint32_t))) {
707         return;
708     }
709     FuzzedDataProvider fdp(data, size);
710     uint32_t minRangeSize = 0;
711     uint32_t maxRangeSize = 100;
712 
713     std::vector<std::string> vec;
714     uint32_t listSize = fdp.ConsumeIntegralInRange<uint32_t>(minRangeSize, maxRangeSize);
715     for (uint32_t i = 0; i < listSize; ++i) {
716         vec.emplace_back(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
717     }
718     MessageParcel parcel;
719 
720     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
721     ipcModelCodec->EncodeStringVector(vec, parcel);
722 }
723 
DecodeStringVectorFuzzTest(const uint8_t * data,size_t size)724 void DecodeStringVectorFuzzTest(const uint8_t* data, size_t size)
725 {
726     size_t count = 2;
727     if ((data == nullptr) || (size < sizeof(uint32_t) * count)) {
728         return;
729     }
730     FuzzedDataProvider fdp(data, size);
731 
732     uint32_t minRangeSize = 0;
733     uint32_t maxRangeSize = 1000;
734     MessageParcel parcel;
735     uint32_t num = fdp.ConsumeIntegralInRange<uint32_t>(minRangeSize, maxRangeSize);
736     parcel.WriteUint32(num);
737     for (uint32_t i = 0; i < num; ++i) {
738         parcel.WriteString(fdp.ConsumeRandomLengthString(MAX_STRING_LENGTH));
739     }
740 
741     std::vector<std::string> vec;
742     std::shared_ptr<IpcModelCodec> ipcModelCodec = std::make_shared<IpcModelCodec>();
743     ipcModelCodec->DecodeStringVector(parcel, vec);
744 
745     uint32_t outMinRangeSize = 1001;
746     uint32_t outMaxRangeSize = 2000;
747     uint32_t invalidNum = fdp.ConsumeIntegralInRange<uint32_t>(outMinRangeSize, outMaxRangeSize);
748     MessageParcel invalidParcel;
749     parcel.WriteUint32(invalidNum);
750     ipcModelCodec->DecodeStringVector(invalidParcel, vec);
751 }
752 }
753 }
754 
755 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)756 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
757 {
758     /* Run your code on data */
759     OHOS::DistributedHardware::DecodeDmDeviceBasicInfoFuzzTest(data, size);
760     OHOS::DistributedHardware::EncodePeerTargetIdFuzzTest(data, size);
761     OHOS::DistributedHardware::DecodePeerTargetIdFuzzTest(data, size);
762     OHOS::DistributedHardware::EncodeDmAccessCallerFuzzTest(data, size);
763     OHOS::DistributedHardware::EncodeDmAccessCalleeFuzzTest(data, size);
764     OHOS::DistributedHardware::DecodeDmDeviceProfileInfoFilterOptionsFuzzTest(data, size);
765     OHOS::DistributedHardware::EncodeDmDeviceProfileInfoFilterOptionsFuzzTest(data, size);
766     OHOS::DistributedHardware::DecodeDmServiceProfileInfoFuzzTest(data, size);
767     OHOS::DistributedHardware::DecodeDmServiceProfileInfosFuzzTest(data, size);
768     OHOS::DistributedHardware::DecodeDmDeviceProfileInfoFuzzTest(data, size);
769     OHOS::DistributedHardware::EncodeDmServiceProfileInfoFuzzTest(data, size);
770     OHOS::DistributedHardware::EncodeDmServiceProfileInfosFuzzTest(data, size);
771     OHOS::DistributedHardware::EncodeDmDeviceProfileInfoFuzzTest(data, size);
772     OHOS::DistributedHardware::GetDeviceIconInfoUniqueKeyFuzzTest(data, size);
773     OHOS::DistributedHardware::GetDeviceIconInfoFuzzTest(data, size);
774     OHOS::DistributedHardware::DecodeDmDeviceIconInfoFuzzTest(data, size);
775     OHOS::DistributedHardware::EncodeDmDeviceIconInfoFuzzTest(data, size);
776     OHOS::DistributedHardware::DecodeDmDeviceIconInfoFilterOptionsFuzzTest(data, size);
777     OHOS::DistributedHardware::EncodeDmDeviceIconInfoFilterOptionsFuzzTest(data, size);
778     OHOS::DistributedHardware::DecodeDmDeviceInfoFuzzTest(data, size);
779     OHOS::DistributedHardware::EncodeLocalServiceInfoFuzzTest(data, size);
780     OHOS::DistributedHardware::EncodeLocalServiceInfosFuzzTest(data, size);
781     OHOS::DistributedHardware::DecodeLocalServiceInfoFuzzTest(data, size);
782     OHOS::DistributedHardware::DecodeLocalServiceInfosFuzzTest(data, size);
783     OHOS::DistributedHardware::EncodeNetworkIdQueryFilterFuzzTest(data, size);
784     OHOS::DistributedHardware::DecodeNetworkIdQueryFilterFuzzTest(data, size);
785     OHOS::DistributedHardware::EncodeStringVectorFuzzTest(data, size);
786     OHOS::DistributedHardware::DecodeStringVectorFuzzTest(data, size);
787     return 0;
788 }
789