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 "fuzzer/FuzzedDataProvider.h"
17 #include "napi/native_api.h"
18 #include "message_parcel.h"
19 #include "scanhelper_fuzzer.h"
20 #include "scan_option_descriptor.h"
21 #include "scan_option_value.h"
22 #include "scan_parameters.h"
23 #include "scan_progress.h"
24 #include "scanner_info.h"
25 #include "scan_range.h"
26 #include "scan_option_descriptor_helper.h"
27 #include "scan_option_value_helper.h"
28 #include "scan_parameters_helper.h"
29 #include "scan_progress_helper.h"
30 #include "scan_range_helper.h"
31 #include "scanner_info_helper.h"
32
33 namespace OHOS {
34 namespace Scan {
35 constexpr uint8_t MAX_STRING_LENGTH = 255;
36 constexpr int MAX_SET_NUMBER = 100;
37 constexpr size_t FOO_MAX_LEN = 1024;
38 constexpr size_t U32_AT_SIZE = 4;
39
TestSetOptionName(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)40 void TestSetOptionName(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
41 {
42 ScanOptionDescriptor scanOptDes;
43 std::string optionName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
44 scanOptDes.SetOptionName(optionName);
45 optionName = scanOptDes.GetOptionName();
46 }
47
TestSetOptionTitle(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)48 void TestSetOptionTitle(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
49 {
50 ScanOptionDescriptor scanOptDes;
51 std::string optionTitle = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
52 scanOptDes.SetOptionTitle(optionTitle);
53 optionTitle = scanOptDes.GetOptionTitle();
54 }
55
TestSetOptionDesc(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)56 void TestSetOptionDesc(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
57 {
58 ScanOptionDescriptor scanOptDes;
59 std::string optionDesc = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
60 scanOptDes.SetOptionDesc(optionDesc);
61 optionDesc = scanOptDes.GetOptionDesc();
62 }
63
TestSetOptionType(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)64 void TestSetOptionType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
65 {
66 ScanOptionDescriptor scanOptDes;
67 uint32_t optionType = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
68 scanOptDes.SetOptionType(optionType);
69 optionType = scanOptDes.GetOptionType();
70 }
71
TestSetOptionUnit(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)72 void TestSetOptionUnit(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
73 {
74 ScanOptionDescriptor scanOptDes;
75 uint32_t optionUnit = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
76 scanOptDes.SetOptionUnit(optionUnit);
77 optionUnit = scanOptDes.GetOptionUnit();
78 }
79
TestSetOptionSize(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)80 void TestSetOptionSize(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
81 {
82 ScanOptionDescriptor scanOptDes;
83 int32_t optionSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
84 scanOptDes.SetOptionSize(optionSize);
85 optionSize = scanOptDes.GetOptionSize();
86 }
87
TestSetOptionCap(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)88 void TestSetOptionCap(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
89 {
90 ScanOptionDescriptor scanOptDes;
91 int32_t optionCap = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
92 scanOptDes.SetOptionCap(optionCap);
93 optionCap = scanOptDes.GetOptionCap();
94 }
95
TestSetOptionConstraintType(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)96 void TestSetOptionConstraintType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
97 {
98 ScanOptionDescriptor scanOptDes;
99 uint32_t optionConstraintType = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
100 scanOptDes.SetOptionConstraintType(optionConstraintType);
101 optionConstraintType = scanOptDes.GetOptionConstraintType();
102 }
103
TestSetOptionConstraintString(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)104 void TestSetOptionConstraintString(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
105 {
106 ScanOptionDescriptor scanOptDes;
107 std::vector<std::string> optionConstraintString;
108 int32_t vectorSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
109 for (int i = 0; i< vectorSize; i++) {
110 std::string teststr = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
111 optionConstraintString.emplace_back(teststr);
112 }
113 scanOptDes.SetOptionConstraintString(optionConstraintString);
114 scanOptDes.GetOptionConstraintString(optionConstraintString);
115 }
116
TestSetOptionConstraintNumber(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)117 void TestSetOptionConstraintNumber(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
118 {
119 ScanOptionDescriptor scanOptDes;
120 std::vector<int32_t> optionConstraintNumber;
121 int32_t vectorSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
122 for (int i = 0; i< vectorSize; i++) {
123 int32_t testNumber = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
124 optionConstraintNumber.emplace_back(testNumber);
125 }
126 scanOptDes.SetOptionConstraintNumber(optionConstraintNumber);
127 scanOptDes.GetOptionConstraintNumber(optionConstraintNumber);
128 }
129
TestSetOptionConstraintRange(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)130 void TestSetOptionConstraintRange(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
131 {
132 ScanOptionDescriptor scanOptDes;
133 ScanRange optionConstraintRange;
134 scanOptDes.SetOptionConstraintRange(optionConstraintRange);
135 scanOptDes.GetOptionConstraintRange(optionConstraintRange);
136 }
137
TestScanOptionDescriptor(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)138 void TestScanOptionDescriptor(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
139 {
140 ScanOptionDescriptor scanOptDesTmp;
141 uint32_t optionConstraintType = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
142 scanOptDesTmp.SetOptionConstraintType(optionConstraintType);
143 ScanOptionDescriptor scanOptDesBak(scanOptDesTmp);
144 ScanOptionDescriptor scanOptDesOpera = scanOptDesTmp;
145 scanOptDesOpera.Dump();
146 MessageParcel parcel;
147 scanOptDesOpera.Marshalling(parcel);
148 auto scanOptDesMarShall = ScanOptionDescriptor::Unmarshalling(parcel);
149 }
150
TestSetScanOptionValueType(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)151 void TestSetScanOptionValueType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
152 {
153 ScanOptionValue scanOptVal;
154 int32_t valueType = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
155 scanOptVal.SetScanOptionValueType(static_cast<ScanOptionValueType>(valueType));
156 valueType = scanOptVal.GetScanOptionValueType();
157 }
158
TestSetValueSize(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)159 void TestSetValueSize(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
160 {
161 ScanOptionValue scanOptVal;
162 int32_t valueSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
163 scanOptVal.SetValueSize(valueSize);
164 valueSize = scanOptVal.GetValueSize();
165 }
166
TestSetNumValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)167 void TestSetNumValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
168 {
169 ScanOptionValue scanOptVal;
170 int32_t numValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
171 scanOptVal.SetNumValue(numValue);
172 numValue = scanOptVal.GetNumValue();
173 }
174
TestSetNumListValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)175 void TestSetNumListValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
176 {
177 ScanOptionValue scanOptVal;
178 int32_t vecSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
179 std::vector<int32_t> numListValue;
180 for (int i = 0; i < vecSize; i++) {
181 int32_t number = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
182 numListValue.emplace_back(number);
183 }
184 scanOptVal.SetNumListValue(numListValue);
185 scanOptVal.GetNumListValue(numListValue);
186 }
187
TestSetStrValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)188 void TestSetStrValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
189 {
190 ScanOptionValue scanOptVal;
191 std::string optionTitle = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
192 scanOptVal.SetStrValue(optionTitle);
193 optionTitle = scanOptVal.GetStrValue();
194 }
195
TestSetBoolValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)196 void TestSetBoolValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
197 {
198 ScanOptionValue scanOptVal;
199 bool boolValue = dataProvider->ConsumeBool();
200 scanOptVal.SetBoolValue(boolValue);
201 boolValue = scanOptVal.GetBoolValue();
202 }
203
TestScanOptionValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)204 void TestScanOptionValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
205 {
206 ScanOptionValue scanOptVal;
207 int32_t valueType = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
208 scanOptVal.SetScanOptionValueType(static_cast<ScanOptionValueType>(valueType));
209 ScanOptionValue scanOptValBak = scanOptVal;
210 scanOptValBak.Reset();
211 ScanOptionValue scanOptValOpera(scanOptValBak);
212 int32_t valueSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
213 scanOptValOpera.SetValueSize(valueSize);
214 MessageParcel parcel;
215 scanOptValOpera.Marshalling(parcel);
216 auto scanOptValMarShall = ScanOptionDescriptor::Unmarshalling(parcel);
217 scanOptValMarShall->Dump();
218 }
219
TestSetFormat(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)220 void TestSetFormat(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
221 {
222 ScanParameters scanPara;
223 int32_t format = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
224 scanPara.SetFormat(static_cast<ScanFrame>(format));
225 format = scanPara.GetFormat();
226 }
227
TestSetLastFrame(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)228 void TestSetLastFrame(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
229 {
230 ScanParameters scanPara;
231 bool lastFrame = dataProvider->ConsumeBool();
232 scanPara.SetLastFrame(lastFrame);
233 lastFrame = scanPara.GetLastFrame();
234 }
235
TestSetBytesPerLine(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)236 void TestSetBytesPerLine(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
237 {
238 ScanParameters scanPara;
239 int32_t bytesPerLine = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
240 scanPara.SetBytesPerLine(bytesPerLine);
241 bytesPerLine = scanPara.GetBytesPerLine();
242 }
243
TestSetPixelsPerLine(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)244 void TestSetPixelsPerLine(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
245 {
246 ScanParameters scanPara;
247 int32_t pixelsPerLine = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
248 scanPara.SetPixelsPerLine(pixelsPerLine);
249 pixelsPerLine = scanPara.GetPixelsPerLine();
250 }
251
TestSetLines(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)252 void TestSetLines(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
253 {
254 ScanParameters scanPara;
255 int32_t lines = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
256 scanPara.SetLines(lines);
257 lines = scanPara.GetLines();
258 }
259
TestSetDepth(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)260 void TestSetDepth(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
261 {
262 ScanParameters scanPara;
263 int32_t depth = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
264 scanPara.SetDepth(depth);
265 depth = scanPara.GetDepth();
266 }
267
TestScanParameters(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)268 void TestScanParameters(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
269 {
270 ScanParameters scanPara;
271 int32_t lines = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
272 scanPara.SetLines(lines);
273 ScanParameters scanParaTmp(scanPara);
274 ScanParameters scanParaBak = scanParaTmp;
275 scanParaBak.Dump();
276 MessageParcel parcel;
277 scanParaBak.Marshalling(parcel);
278 auto scanParaBakMarShall = ScanParameters::Unmarshalling(parcel);
279 }
280
TestSetScanProgress(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)281 void TestSetScanProgress(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
282 {
283 ScanProgress scanProg;
284 int32_t progress = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
285 scanProg.SetScanProgress(progress);
286 progress = scanProg.GetScanProgress();
287 }
288
TestSetScanPictureFd(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)289 void TestSetScanPictureFd(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
290 {
291 ScanProgress scanProg;
292 int32_t fd = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
293 scanProg.SetScanPictureFd(fd);
294 fd = scanProg.GetScanPictureFd();
295 }
296
TestSetIsFinal(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)297 void TestSetIsFinal(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
298 {
299 ScanProgress scanProg;
300 bool isFinal = dataProvider->ConsumeBool();
301 scanProg.SetIsFinal(isFinal);
302 isFinal = scanProg.GetIsFinal();
303 }
304
TestSetPictureId(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)305 void TestSetPictureId(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
306 {
307 ScanProgress scanProg;
308 int32_t pictureId = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
309 scanProg.SetPictureId(pictureId);
310 pictureId = scanProg.GetPictureId();
311 }
312
TestSetTaskCode(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)313 void TestSetTaskCode(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
314 {
315 ScanProgress scanProg;
316 int32_t taskCode = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
317 scanProg.SetTaskCode(static_cast<ScanErrorCode>(taskCode));
318 taskCode = scanProg.GetTaskCode();
319 }
320
TestScanProgress(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)321 void TestScanProgress(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
322 {
323 ScanProgress scanProg;
324 int32_t taskCode = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
325 scanProg.SetTaskCode(static_cast<ScanErrorCode>(taskCode));
326 scanProg.Dump();
327 taskCode = scanProg.GetTaskCode();
328 ScanProgress scanProgTmp(scanProg);
329 ScanProgress scanProgBak = scanProgTmp;
330 MessageParcel parcel;
331 scanProgBak.Marshalling(parcel);
332 auto scanOptValMarShall = ScanProgress::Unmarshalling(parcel);
333 }
334
TestTCPSetDeviceName(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)335 void TestTCPSetDeviceName(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
336 {
337 ScanDeviceInfoTCP scanDevInfoTcp;
338 std::string deviceName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
339 scanDevInfoTcp.SetDeviceName(deviceName);
340 deviceName = scanDevInfoTcp.GetDeviceName();
341 }
342
TestTCPSetUuid(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)343 void TestTCPSetUuid(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
344 {
345 ScanDeviceInfoTCP scanDevInfoTcp;
346 std::string uuid = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
347 scanDevInfoTcp.SetUuid(uuid);
348 uuid = scanDevInfoTcp.GetUuid();
349 }
350
TestTCPSetModel(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)351 void TestTCPSetModel(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
352 {
353 ScanDeviceInfoTCP scanDevInfoTcp;
354 std::string model = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
355 scanDevInfoTcp.SetModel(model);
356 model = scanDevInfoTcp.GetModel();
357 }
358
TestTCPSetManufacturer(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)359 void TestTCPSetManufacturer(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
360 {
361 ScanDeviceInfoTCP scanDevInfoTcp;
362 std::string manufacturer = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
363 scanDevInfoTcp.SetManufacturer(manufacturer);
364 manufacturer = scanDevInfoTcp.GetManufacturer();
365 }
366
TestTCPSetDeviceType(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)367 void TestTCPSetDeviceType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
368 {
369 ScanDeviceInfoTCP scanDevInfoTcp;
370 std::string deviceType = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
371 scanDevInfoTcp.SetDeviceType(deviceType);
372 deviceType = scanDevInfoTcp.GetDeviceType();
373 }
374
TestTCPSetPort(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)375 void TestTCPSetPort(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
376 {
377 ScanDeviceInfoTCP scanDevInfoTcp;
378 std::string port = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
379 scanDevInfoTcp.SetPort(port);
380 port = scanDevInfoTcp.GetPort();
381 }
382
383
TestTCPSetAddr(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)384 void TestTCPSetAddr(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
385 {
386 ScanDeviceInfoTCP scanDevInfoTcp;
387 std::string addr = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
388 scanDevInfoTcp.SetAddr(addr);
389 addr = scanDevInfoTcp.GetAddr();
390 }
391
TestTCPSetButton(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)392 void TestTCPSetButton(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
393 {
394 ScanDeviceInfoTCP scanDevInfoTcp;
395 std::string button = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
396 scanDevInfoTcp.SetButton(button);
397 button = scanDevInfoTcp.GetButton();
398 }
399
TestTCPSetFeeder(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)400 void TestTCPSetFeeder(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
401 {
402 ScanDeviceInfoTCP scanDevInfoTcp;
403 std::string feeder = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
404 scanDevInfoTcp.SetFeeder(feeder);
405 feeder = scanDevInfoTcp.GetFeeder();
406 }
407
TestTCPSetDeviceState(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)408 void TestTCPSetDeviceState(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
409 {
410 ScanDeviceInfoTCP scanDevInfoTcp;
411 uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
412 scanDevInfoTcp.SetDeviceState(deviceState);
413 deviceState = scanDevInfoTcp.GetDeviceState();
414 }
415
TestUSBSetDeviceId(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)416 void TestUSBSetDeviceId(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
417 {
418 ScanDeviceInfo deviceInfo;
419 std::string deviceId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
420 deviceInfo.SetDeviceId(deviceId);
421 deviceId = deviceInfo.GetDeviceId();
422 }
423
TestUSBSetManufacturer(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)424 void TestUSBSetManufacturer(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
425 {
426 ScanDeviceInfo deviceInfo;
427 std::string manufacturer = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
428 deviceInfo.SetManufacturer(manufacturer);
429 manufacturer = deviceInfo.GetManufacturer();
430 }
431
TestUSBSetModel(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)432 void TestUSBSetModel(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
433 {
434 ScanDeviceInfo deviceInfo;
435 std::string model = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
436 deviceInfo.SetModel(model);
437 model = deviceInfo.GetModel();
438 }
439
TestUSBSetDeviceType(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)440 void TestUSBSetDeviceType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
441 {
442 ScanDeviceInfo deviceInfo;
443 std::string deviceType = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
444 deviceInfo.SetDeviceType(deviceType);
445 deviceType = deviceInfo.GetDeviceType();
446 }
447
TestUSBSetDeviceState(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)448 void TestUSBSetDeviceState(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
449 {
450 ScanDeviceInfo deviceInfo;
451 uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
452 deviceInfo.SetDeviceState(deviceState);
453 deviceState = deviceInfo.GetDeviceState();
454 }
455
TestUSBSetDiscoverMode(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)456 void TestUSBSetDiscoverMode(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
457 {
458 ScanDeviceInfo deviceInfo;
459 std::string discoverMode = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
460 deviceInfo.SetDiscoverMode(discoverMode);
461 discoverMode = deviceInfo.GetDiscoverMode();
462 }
463
TestUSBSetSerialNumber(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)464 void TestUSBSetSerialNumber(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
465 {
466 ScanDeviceInfo deviceInfo;
467 std::string serialNumber = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
468 deviceInfo.SetSerialNumber(serialNumber);
469 serialNumber = deviceInfo.GetSerialNumber();
470 }
471
TestSetMinValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)472 void TestSetMinValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
473 {
474 ScanRange range;
475 int32_t minValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
476 range.SetMinValue(minValue);
477 minValue = range.GetMinValue();
478 }
479
TestSetMaxValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)480 void TestSetMaxValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
481 {
482 ScanRange range;
483 int32_t maxValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
484 range.SetMaxValue(maxValue);
485 maxValue = range.GetMaxValue();
486 }
487
TestSetQuantValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)488 void TestSetQuantValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
489 {
490 ScanRange range;
491 int32_t quantValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
492 range.SetQuantValue(quantValue);
493 quantValue = range.GetQuantValue();
494 }
495
TestScanRange(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)496 void TestScanRange(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
497 {
498 ScanRange range;
499 range.Reset();
500 int32_t maxValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
501 range.SetMaxValue(maxValue);
502 ScanRange rangeBak(range);
503 MessageParcel parcel;
504 range.Marshalling(parcel);
505 auto rangeMarshall = ScanRange::Unmarshalling(parcel);
506 }
507
TestDeviceInfo(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)508 void TestDeviceInfo(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
509 {
510 ScanDeviceInfoTCP infoTcp;
511 uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
512 infoTcp.SetDeviceState(deviceState);
513 ScanDeviceInfoTCP infoTcpTmp(infoTcp);
514 ScanDeviceInfoTCP infoTcpBak(infoTcpTmp);
515 MessageParcel parcel;
516 infoTcpBak.Marshalling(parcel);
517 auto infoTcpMarshall = ScanDeviceInfoTCP::Unmarshalling(parcel);
518
519 ScanDeviceInfo info;
520 info.SetDeviceState(deviceState);
521 ScanDeviceInfo infoTmp(info);
522 ScanDeviceInfo infoBak(infoTmp);
523 infoBak.Marshalling(parcel);
524 auto infoMarshall = ScanDeviceInfo::Unmarshalling(parcel);
525 }
526
TestScanOptDesNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)527 void TestScanOptDesNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
528 {
529 napi_env env = nullptr;
530 ScanOptionDescriptor info;
531 uint32_t optionUnit = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
532 info.SetOptionUnit(optionUnit);
533 ScanOptionDescriptorHelper::MakeJsObject(env, info);
534 napi_value jsValue = nullptr;
535 ScanOptionDescriptorHelper::BuildFromJs(env, jsValue);
536 }
537
TestScanOptValNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)538 void TestScanOptValNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
539 {
540 napi_env env = nullptr;
541 ScanOptionValue info;
542 int32_t valueType = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
543 info.SetScanOptionValueType(static_cast<ScanOptionValueType>(valueType));
544 ScanOptionValueHelper::MakeJsObject(env, info);
545 napi_value jsValue = nullptr;
546 ScanOptionValueHelper::BuildFromJs(env, jsValue);
547 }
548
TestScanParaNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)549 void TestScanParaNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
550 {
551 napi_env env = nullptr;
552 ScanParameters info;
553 int32_t format = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
554 info.SetFormat(static_cast<ScanFrame>(format));
555 ScanParametersHelper::MakeJsObject(env, info);
556 napi_value jsValue = nullptr;
557 ScanParametersHelper::BuildFromJs(env, jsValue);
558 }
559
TestScanProgNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)560 void TestScanProgNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
561 {
562 napi_env env = nullptr;
563 ScanProgress info;
564 int32_t progress = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
565 info.SetScanProgress(progress);
566 ScanProgressHelper::MakeJsObject(env, info);
567 }
568
TestScanRangeNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)569 void TestScanRangeNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
570 {
571 napi_env env = nullptr;
572 ScanRange info;
573 int32_t maxValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
574 info.SetMaxValue(maxValue);
575 ScanRangeHelper::MakeJsObject(env, info);
576 napi_value jsValue = nullptr;
577 ScanRangeHelper::BuildFromJs(env, jsValue);
578 }
579
TestScannerInfoNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)580 void TestScannerInfoNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
581 {
582 napi_env env = nullptr;
583 ScanDeviceInfo info;
584 std::string deviceId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
585 info.SetDeviceId(deviceId);
586 ScannerInfoHelper::MakeJsObject(env, info);
587 }
588
TestScannerInfoTCPNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)589 void TestScannerInfoTCPNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
590 {
591 napi_env env = nullptr;
592 ScanDeviceInfoTCP info;
593 uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
594 info.SetDeviceState(deviceState);
595 ScannerInfoHelperTCP::MakeJsObject(env, info);
596 }
597
TestGetExtensionIdInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)598 void TestGetExtensionIdInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
599 {
600 std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
601 NapiScanUtils::GetExtensionId(globalId);
602 }
603
TestGetGlobalIdInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)604 void TestGetGlobalIdInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
605 {
606 std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
607 std::string localId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
608 NapiScanUtils::GetGlobalId(globalId, localId);
609 }
610
TestGetLocalIdInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)611 void TestGetLocalIdInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
612 {
613 std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
614 std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
615 NapiScanUtils::GetLocalId(globalId, extensionId);
616 }
617
TestEncodeExtensionCidInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)618 void TestEncodeExtensionCidInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
619 {
620 std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
621 uint32_t callbackId = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
622 NapiScanUtils::EncodeExtensionCid(globalId, callbackId);
623 }
624
TestDecodeExtensionCid(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)625 void TestDecodeExtensionCid(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
626 {
627 std::string cid = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
628 std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
629 uint32_t callbackId = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
630 NapiScanUtils::DecodeExtensionCid(cid, extensionId, callbackId);
631 }
632
TestGetTaskEventId(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)633 void TestGetTaskEventId(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
634 {
635 std::string taskId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
636 std::string type = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
637 NapiScanUtils::GetTaskEventId(taskId, type);
638 }
639
TestOpenFile(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)640 void TestOpenFile(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
641 {
642 std::string filePath = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
643 NapiScanUtils::OpenFile(filePath);
644 }
645
TestIsPathValid(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)646 void TestIsPathValid(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
647 {
648 std::string filePath = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
649 NapiScanUtils::IsPathValid(filePath);
650 }
651
ScanOptionDescriptorFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)652 void ScanOptionDescriptorFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
653 {
654 TestSetOptionName(data, size, dataProvider);
655 TestSetOptionTitle(data, size, dataProvider);
656 TestSetOptionDesc(data, size, dataProvider);
657 TestSetOptionType(data, size, dataProvider);
658 TestSetOptionUnit(data, size, dataProvider);
659 TestSetOptionSize(data, size, dataProvider);
660 TestSetOptionCap(data, size, dataProvider);
661 TestSetOptionConstraintType(data, size, dataProvider);
662 TestSetOptionConstraintString(data, size, dataProvider);
663 TestSetOptionConstraintNumber(data, size, dataProvider);
664 TestSetOptionConstraintRange(data, size, dataProvider);
665 TestScanOptionDescriptor(data, size, dataProvider);
666 }
667
ScanOptionValueFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)668 void ScanOptionValueFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
669 {
670 TestSetScanOptionValueType(data, size, dataProvider);
671 TestSetValueSize(data, size, dataProvider);
672 TestSetNumValue(data, size, dataProvider);
673 TestSetNumListValue(data, size, dataProvider);
674 TestSetStrValue(data, size, dataProvider);
675 TestSetBoolValue(data, size, dataProvider);
676 TestScanOptionValue(data, size, dataProvider);
677 }
678
ScanParametersFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)679 void ScanParametersFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
680 {
681 TestSetFormat(data, size, dataProvider);
682 TestSetLastFrame(data, size, dataProvider);
683 TestSetBytesPerLine(data, size, dataProvider);
684 TestSetPixelsPerLine(data, size, dataProvider);
685 TestSetLines(data, size, dataProvider);
686 TestSetDepth(data, size, dataProvider);
687 TestScanParameters(data, size, dataProvider);
688 }
689
ScanDeviceInfoFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)690 void ScanDeviceInfoFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
691 {
692 TestSetScanProgress(data, size, dataProvider);
693 TestSetScanPictureFd(data, size, dataProvider);
694 TestSetIsFinal(data, size, dataProvider);
695 TestSetPictureId(data, size, dataProvider);
696 TestSetTaskCode(data, size, dataProvider);
697 TestScanProgress(data, size, dataProvider);
698 }
699
ScannerInfoFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)700 void ScannerInfoFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
701 {
702 TestTCPSetDeviceName(data, size, dataProvider);
703 TestTCPSetUuid(data, size, dataProvider);
704 TestTCPSetModel(data, size, dataProvider);
705 TestTCPSetManufacturer(data, size, dataProvider);
706 TestTCPSetDeviceType(data, size, dataProvider);
707 TestTCPSetPort(data, size, dataProvider);
708 TestTCPSetAddr(data, size, dataProvider);
709 TestTCPSetButton(data, size, dataProvider);
710 TestTCPSetFeeder(data, size, dataProvider);
711 TestTCPSetDeviceState(data, size, dataProvider);
712 TestUSBSetDeviceId(data, size, dataProvider);
713 TestUSBSetManufacturer(data, size, dataProvider);
714 TestUSBSetModel(data, size, dataProvider);
715 TestUSBSetDeviceType(data, size, dataProvider);
716 TestUSBSetDeviceState(data, size, dataProvider);
717 TestUSBSetDiscoverMode(data, size, dataProvider);
718 TestUSBSetSerialNumber(data, size, dataProvider);
719 TestDeviceInfo(data, size, dataProvider);
720 }
721
ScanRangeFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)722 void ScanRangeFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
723 {
724 TestSetMinValue(data, size, dataProvider);
725 TestSetMaxValue(data, size, dataProvider);
726 TestSetQuantValue(data, size, dataProvider);
727 TestScanRange(data, size, dataProvider);
728 }
729
ScanOptionDescriptorHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)730 void ScanOptionDescriptorHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
731 {
732 TestScanOptDesNapiInterface(data, size, dataProvider);
733 }
734
ScanOptionValueHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)735 void ScanOptionValueHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
736 {
737 TestScanOptValNapiInterface(data, size, dataProvider);
738 }
739
ScanParametersHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)740 void ScanParametersHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
741 {
742 TestScanParaNapiInterface(data, size, dataProvider);
743 }
744
ScanProgressHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)745 void ScanProgressHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
746 {
747 TestScanProgNapiInterface(data, size, dataProvider);
748 }
749
ScanRangeHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)750 void ScanRangeHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
751 {
752 TestScanRangeNapiInterface(data, size, dataProvider);
753 }
754
ScannerInfoHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)755 void ScannerInfoHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
756 {
757 TestScannerInfoNapiInterface(data, size, dataProvider);
758 TestScannerInfoTCPNapiInterface(data, size, dataProvider);
759 }
760
NapiScanUtilsFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)761 void NapiScanUtilsFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
762 {
763 TestGetExtensionIdInterface(data, size, dataProvider);
764 TestGetGlobalIdInterface(data, size, dataProvider);
765 TestGetLocalIdInterface(data, size, dataProvider);
766 TestEncodeExtensionCidInterface(data, size, dataProvider);
767 TestDecodeExtensionCid(data, size, dataProvider);
768 TestGetTaskEventId(data, size, dataProvider);
769 TestOpenFile(data, size, dataProvider);
770 TestIsPathValid(data, size, dataProvider);
771 }
772
773 }
774 }
775
776 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)777 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
778 {
779 if (data == nullptr) {
780 return 0;
781 }
782
783 if (size < OHOS::Scan::U32_AT_SIZE || size > OHOS::Scan::FOO_MAX_LEN) {
784 return 0;
785 }
786 FuzzedDataProvider dataProvider(data, size);
787 OHOS::Scan::ScanOptionDescriptorFuzzTest(data, size, &dataProvider);
788 OHOS::Scan::ScanOptionValueFuzzTest(data, size, &dataProvider);
789 OHOS::Scan::ScanParametersFuzzTest(data, size, &dataProvider);
790 OHOS::Scan::ScanDeviceInfoFuzzTest(data, size, &dataProvider);
791 OHOS::Scan::ScannerInfoFuzzTest(data, size, &dataProvider);
792 OHOS::Scan::ScanRangeFuzzTest(data, size, &dataProvider);
793 OHOS::Scan::ScanOptionDescriptorHelperFuzzTest(data, size, &dataProvider);
794 OHOS::Scan::ScanOptionValueHelperFuzzTest(data, size, &dataProvider);
795 OHOS::Scan::ScanParametersHelperFuzzTest(data, size, &dataProvider);
796 OHOS::Scan::ScanProgressHelperFuzzTest(data, size, &dataProvider);
797 OHOS::Scan::ScanRangeHelperFuzzTest(data, size, &dataProvider);
798 OHOS::Scan::ScannerInfoHelperFuzzTest(data, size, &dataProvider);
799 OHOS::Scan::NapiScanUtilsFuzzTest(data, size, &dataProvider);
800 return 0;
801 }
802
803