• 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 "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