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 std::string optionName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
137 scanOptDes.SetOptionName(optionName);
138 }
139
TestScanOptionDescriptor(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)140 void TestScanOptionDescriptor(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
141 {
142 ScanOptionDescriptor scanOptDesTmp;
143 uint32_t optionConstraintType = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
144 scanOptDesTmp.SetOptionConstraintType(optionConstraintType);
145 ScanOptionDescriptor scanOptDesBak(scanOptDesTmp);
146 ScanOptionDescriptor scanOptDesOpera = scanOptDesTmp;
147 scanOptDesOpera.Dump();
148 MessageParcel parcel;
149 scanOptDesOpera.Marshalling(parcel);
150 auto scanOptDesMarShall = ScanOptionDescriptor::Unmarshalling(parcel);
151 }
152
TestSetScanOptionValueType(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)153 void TestSetScanOptionValueType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
154 {
155 ScanOptionValue scanOptVal;
156 int32_t valueType = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
157 scanOptVal.SetScanOptionValueType(static_cast<ScanOptionValueType>(valueType));
158 valueType = scanOptVal.GetScanOptionValueType();
159 }
160
TestSetValueSize(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)161 void TestSetValueSize(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
162 {
163 ScanOptionValue scanOptVal;
164 int32_t valueSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
165 scanOptVal.SetValueSize(valueSize);
166 valueSize = scanOptVal.GetValueSize();
167 }
168
TestSetNumValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)169 void TestSetNumValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
170 {
171 ScanOptionValue scanOptVal;
172 int32_t numValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
173 scanOptVal.SetNumValue(numValue);
174 numValue = scanOptVal.GetNumValue();
175 }
176
TestSetNumListValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)177 void TestSetNumListValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
178 {
179 ScanOptionValue scanOptVal;
180 int32_t vecSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
181 std::vector<int32_t> numListValue;
182 for (int i = 0; i < vecSize; i++) {
183 int32_t number = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
184 numListValue.emplace_back(number);
185 }
186 scanOptVal.SetNumListValue(numListValue);
187 scanOptVal.GetNumListValue(numListValue);
188 }
189
TestSetStrValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)190 void TestSetStrValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
191 {
192 ScanOptionValue scanOptVal;
193 std::string optionTitle = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
194 scanOptVal.SetStrValue(optionTitle);
195 optionTitle = scanOptVal.GetStrValue();
196 }
197
TestSetBoolValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)198 void TestSetBoolValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
199 {
200 ScanOptionValue scanOptVal;
201 bool boolValue = dataProvider->ConsumeBool();
202 scanOptVal.SetBoolValue(boolValue);
203 boolValue = scanOptVal.GetBoolValue();
204 }
205
TestScanOptionValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)206 void TestScanOptionValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
207 {
208 ScanOptionValue scanOptVal;
209 int32_t valueType = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
210 scanOptVal.SetScanOptionValueType(static_cast<ScanOptionValueType>(valueType));
211 ScanOptionValue scanOptValBak = scanOptVal;
212 scanOptValBak.Reset();
213 ScanOptionValue scanOptValOpera(scanOptValBak);
214 int32_t valueSize = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
215 scanOptValOpera.SetValueSize(valueSize);
216 MessageParcel parcel;
217 scanOptValOpera.Marshalling(parcel);
218 auto scanOptValMarShall = ScanOptionDescriptor::Unmarshalling(parcel);
219 scanOptValMarShall->Dump();
220 }
221
TestSetFormat(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)222 void TestSetFormat(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
223 {
224 ScanParameters scanPara;
225 int32_t format = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
226 scanPara.SetFormat(static_cast<ScanFrame>(format));
227 format = scanPara.GetFormat();
228 }
229
TestSetLastFrame(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)230 void TestSetLastFrame(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
231 {
232 ScanParameters scanPara;
233 bool lastFrame = dataProvider->ConsumeBool();
234 scanPara.SetLastFrame(lastFrame);
235 lastFrame = scanPara.GetLastFrame();
236 }
237
TestSetBytesPerLine(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)238 void TestSetBytesPerLine(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
239 {
240 ScanParameters scanPara;
241 int32_t bytesPerLine = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
242 scanPara.SetBytesPerLine(bytesPerLine);
243 bytesPerLine = scanPara.GetBytesPerLine();
244 }
245
TestSetPixelsPerLine(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)246 void TestSetPixelsPerLine(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
247 {
248 ScanParameters scanPara;
249 int32_t pixelsPerLine = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
250 scanPara.SetPixelsPerLine(pixelsPerLine);
251 pixelsPerLine = scanPara.GetPixelsPerLine();
252 }
253
TestSetLines(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)254 void TestSetLines(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
255 {
256 ScanParameters scanPara;
257 int32_t lines = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
258 scanPara.SetLines(lines);
259 lines = scanPara.GetLines();
260 }
261
TestSetDepth(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)262 void TestSetDepth(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
263 {
264 ScanParameters scanPara;
265 int32_t depth = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
266 scanPara.SetDepth(depth);
267 depth = scanPara.GetDepth();
268 }
269
TestScanParameters(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)270 void TestScanParameters(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
271 {
272 ScanParameters scanPara;
273 int32_t lines = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
274 scanPara.SetLines(lines);
275 ScanParameters scanParaTmp(scanPara);
276 ScanParameters scanParaBak = scanParaTmp;
277 scanParaBak.Dump();
278 MessageParcel parcel;
279 scanParaBak.Marshalling(parcel);
280 auto scanParaBakMarShall = ScanParameters::Unmarshalling(parcel);
281 }
282
TestSetScanProgress(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)283 void TestSetScanProgress(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
284 {
285 ScanProgress scanProg;
286 int32_t progress = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
287 scanProg.SetScanProgress(progress);
288 progress = scanProg.GetScanProgress();
289 }
290
TestSetScanPictureFd(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)291 void TestSetScanPictureFd(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
292 {
293 ScanProgress scanProg;
294 int32_t fd = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
295 scanProg.SetScanPictureFd(fd);
296 fd = scanProg.GetScanPictureFd();
297 }
298
TestSetIsFinal(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)299 void TestSetIsFinal(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
300 {
301 ScanProgress scanProg;
302 bool isFinal = dataProvider->ConsumeBool();
303 scanProg.SetIsFinal(isFinal);
304 isFinal = scanProg.GetIsFinal();
305 }
306
TestSetPictureId(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)307 void TestSetPictureId(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
308 {
309 ScanProgress scanProg;
310 int32_t pictureId = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
311 scanProg.SetPictureId(pictureId);
312 pictureId = scanProg.GetPictureId();
313 }
314
TestSetTaskCode(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)315 void TestSetTaskCode(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
316 {
317 ScanProgress scanProg;
318 int32_t taskCode = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
319 scanProg.SetTaskCode(static_cast<ScanErrorCode>(taskCode));
320 taskCode = scanProg.GetTaskCode();
321 }
322
TestScanProgress(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)323 void TestScanProgress(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
324 {
325 ScanProgress scanProg;
326 int32_t taskCode = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
327 scanProg.SetTaskCode(static_cast<ScanErrorCode>(taskCode));
328 scanProg.Dump();
329 taskCode = scanProg.GetTaskCode();
330 ScanProgress scanProgTmp(scanProg);
331 ScanProgress scanProgBak = scanProgTmp;
332 MessageParcel parcel;
333 scanProgBak.Marshalling(parcel);
334 auto scanOptValMarShall = ScanProgress::Unmarshalling(parcel);
335 }
336
TestTCPSetDeviceName(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)337 void TestTCPSetDeviceName(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
338 {
339 ScanDeviceInfoTCP scanDevInfoTcp;
340 std::string deviceName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
341 scanDevInfoTcp.SetDeviceName(deviceName);
342 deviceName = scanDevInfoTcp.GetDeviceName();
343 }
344
TestTCPSetUuid(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)345 void TestTCPSetUuid(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
346 {
347 ScanDeviceInfoTCP scanDevInfoTcp;
348 std::string uuid = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
349 scanDevInfoTcp.SetUuid(uuid);
350 uuid = scanDevInfoTcp.GetUuid();
351 }
352
TestTCPSetModel(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)353 void TestTCPSetModel(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
354 {
355 ScanDeviceInfoTCP scanDevInfoTcp;
356 std::string model = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
357 scanDevInfoTcp.SetModel(model);
358 model = scanDevInfoTcp.GetModel();
359 }
360
TestTCPSetManufacturer(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)361 void TestTCPSetManufacturer(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
362 {
363 ScanDeviceInfoTCP scanDevInfoTcp;
364 std::string manufacturer = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
365 scanDevInfoTcp.SetManufacturer(manufacturer);
366 manufacturer = scanDevInfoTcp.GetManufacturer();
367 }
368
TestTCPSetDeviceType(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)369 void TestTCPSetDeviceType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
370 {
371 ScanDeviceInfoTCP scanDevInfoTcp;
372 std::string deviceType = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
373 scanDevInfoTcp.SetDeviceType(deviceType);
374 deviceType = scanDevInfoTcp.GetDeviceType();
375 }
376
TestTCPSetPort(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)377 void TestTCPSetPort(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
378 {
379 ScanDeviceInfoTCP scanDevInfoTcp;
380 std::string port = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
381 scanDevInfoTcp.SetPort(port);
382 port = scanDevInfoTcp.GetPort();
383 }
384
385
TestTCPSetAddr(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)386 void TestTCPSetAddr(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
387 {
388 ScanDeviceInfoTCP scanDevInfoTcp;
389 std::string addr = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
390 scanDevInfoTcp.SetAddr(addr);
391 addr = scanDevInfoTcp.GetAddr();
392 }
393
TestTCPSetButton(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)394 void TestTCPSetButton(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
395 {
396 ScanDeviceInfoTCP scanDevInfoTcp;
397 std::string button = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
398 scanDevInfoTcp.SetButton(button);
399 button = scanDevInfoTcp.GetButton();
400 }
401
TestTCPSetFeeder(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)402 void TestTCPSetFeeder(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
403 {
404 ScanDeviceInfoTCP scanDevInfoTcp;
405 std::string feeder = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
406 scanDevInfoTcp.SetFeeder(feeder);
407 feeder = scanDevInfoTcp.GetFeeder();
408 }
409
TestTCPSetDeviceState(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)410 void TestTCPSetDeviceState(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
411 {
412 ScanDeviceInfoTCP scanDevInfoTcp;
413 uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
414 scanDevInfoTcp.SetDeviceState(deviceState);
415 deviceState = scanDevInfoTcp.GetDeviceState();
416 }
417
TestUSBSetDeviceId(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)418 void TestUSBSetDeviceId(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
419 {
420 ScanDeviceInfo deviceInfo;
421 std::string deviceId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
422 deviceInfo.SetDeviceId(deviceId);
423 deviceId = deviceInfo.GetDeviceId();
424 }
425
TestUSBSetManufacturer(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)426 void TestUSBSetManufacturer(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
427 {
428 ScanDeviceInfo deviceInfo;
429 std::string manufacturer = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
430 deviceInfo.SetManufacturer(manufacturer);
431 manufacturer = deviceInfo.GetManufacturer();
432 }
433
TestUSBSetModel(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)434 void TestUSBSetModel(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
435 {
436 ScanDeviceInfo deviceInfo;
437 std::string model = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
438 deviceInfo.SetModel(model);
439 model = deviceInfo.GetModel();
440 }
441
TestUSBSetDeviceType(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)442 void TestUSBSetDeviceType(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
443 {
444 ScanDeviceInfo deviceInfo;
445 std::string deviceType = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
446 deviceInfo.SetDeviceType(deviceType);
447 deviceType = deviceInfo.GetDeviceType();
448 }
449
TestUSBSetDeviceState(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)450 void TestUSBSetDeviceState(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
451 {
452 ScanDeviceInfo deviceInfo;
453 uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
454 deviceInfo.SetDeviceState(deviceState);
455 deviceState = deviceInfo.GetDeviceState();
456 }
457
TestUSBSetDiscoverMode(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)458 void TestUSBSetDiscoverMode(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
459 {
460 ScanDeviceInfo deviceInfo;
461 std::string discoverMode = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
462 deviceInfo.SetDiscoverMode(discoverMode);
463 discoverMode = deviceInfo.GetDiscoverMode();
464 }
465
TestUSBSetSerialNumber(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)466 void TestUSBSetSerialNumber(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
467 {
468 ScanDeviceInfo deviceInfo;
469 std::string serialNumber = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
470 deviceInfo.SetSerialNumber(serialNumber);
471 serialNumber = deviceInfo.GetSerialNumber();
472 }
473
TestSetMinValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)474 void TestSetMinValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
475 {
476 ScanRange range;
477 int32_t minValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
478 range.SetMinValue(minValue);
479 minValue = range.GetMinValue();
480 }
481
TestSetMaxValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)482 void TestSetMaxValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
483 {
484 ScanRange range;
485 int32_t maxValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
486 range.SetMaxValue(maxValue);
487 maxValue = range.GetMaxValue();
488 }
489
TestSetQuantValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)490 void TestSetQuantValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
491 {
492 ScanRange range;
493 int32_t quantValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
494 range.SetQuantValue(quantValue);
495 quantValue = range.GetQuantValue();
496 }
497
TestScanRange(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)498 void TestScanRange(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
499 {
500 ScanRange range;
501 range.Reset();
502 int32_t maxValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
503 range.SetMaxValue(maxValue);
504 ScanRange rangeBak(range);
505 MessageParcel parcel;
506 range.Marshalling(parcel);
507 auto rangeMarshall = ScanRange::Unmarshalling(parcel);
508 }
509
TestDeviceInfo(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)510 void TestDeviceInfo(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
511 {
512 ScanDeviceInfoTCP infoTcp;
513 uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
514 infoTcp.SetDeviceState(deviceState);
515 ScanDeviceInfoTCP infoTcpTmp(infoTcp);
516 ScanDeviceInfoTCP infoTcpBak(infoTcpTmp);
517 MessageParcel parcel;
518 infoTcpBak.Marshalling(parcel);
519 auto infoTcpMarshall = ScanDeviceInfoTCP::Unmarshalling(parcel);
520
521 ScanDeviceInfo info;
522 info.SetDeviceState(deviceState);
523 ScanDeviceInfo infoTmp(info);
524 ScanDeviceInfo infoBak(infoTmp);
525 infoBak.Marshalling(parcel);
526 auto infoMarshall = ScanDeviceInfo::Unmarshalling(parcel);
527 }
528
TestScanOptDesNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)529 void TestScanOptDesNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
530 {
531 napi_env env = nullptr;
532 ScanOptionDescriptor info;
533 uint32_t optionUnit = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
534 info.SetOptionUnit(optionUnit);
535 ScanOptionDescriptorHelper::MakeJsObject(env, info);
536 napi_value jsValue = nullptr;
537 ScanOptionDescriptorHelper::BuildFromJs(env, jsValue);
538 }
539
TestScanOptValNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)540 void TestScanOptValNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
541 {
542 napi_env env = nullptr;
543 ScanOptionValue info;
544 int32_t valueType = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
545 info.SetScanOptionValueType(static_cast<ScanOptionValueType>(valueType));
546 ScanOptionValueHelper::MakeJsObject(env, info);
547 napi_value jsValue = nullptr;
548 ScanOptionValueHelper::BuildFromJs(env, jsValue);
549 }
550
TestScanParaNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)551 void TestScanParaNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
552 {
553 napi_env env = nullptr;
554 ScanParameters info;
555 int32_t format = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
556 info.SetFormat(static_cast<ScanFrame>(format));
557 ScanParametersHelper::MakeJsObject(env, info);
558 napi_value jsValue = nullptr;
559 ScanParametersHelper::BuildFromJs(env, jsValue);
560 }
561
TestScanProgNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)562 void TestScanProgNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
563 {
564 napi_env env = nullptr;
565 ScanProgress info;
566 int32_t progress = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
567 info.SetScanProgress(progress);
568 ScanProgressHelper::MakeJsObject(env, info);
569 }
570
TestScanRangeNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)571 void TestScanRangeNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
572 {
573 napi_env env = nullptr;
574 ScanRange info;
575 int32_t maxValue = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
576 info.SetMaxValue(maxValue);
577 ScanRangeHelper::MakeJsObject(env, info);
578 napi_value jsValue = nullptr;
579 ScanRangeHelper::BuildFromJs(env, jsValue);
580 }
581
TestScannerInfoNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)582 void TestScannerInfoNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
583 {
584 napi_env env = nullptr;
585 ScanDeviceInfo info;
586 std::string deviceId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
587 info.SetDeviceId(deviceId);
588 ScannerInfoHelper::MakeJsObject(env, info);
589 }
590
TestScannerInfoTCPNapiInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)591 void TestScannerInfoTCPNapiInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
592 {
593 napi_env env = nullptr;
594 ScanDeviceInfoTCP info;
595 uint32_t deviceState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
596 info.SetDeviceState(deviceState);
597 ScannerInfoHelperTCP::MakeJsObject(env, info);
598 }
599
TestSetNamedProperty(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)600 void TestSetNamedProperty(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
601 {
602 napi_env env = nullptr;
603 napi_value object = nullptr;
604 std::string name = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
605 napi_value value = nullptr;
606 NapiScanUtils::SetNamedProperty(env, object, name, value);
607 }
608
TestGetUint32FromValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)609 void TestGetUint32FromValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
610 {
611 napi_env env = nullptr;
612 napi_value value = nullptr;
613 NapiScanUtils::GetUint32FromValue(env, value);
614 }
615
TestGetInt32FromValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)616 void TestGetInt32FromValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
617 {
618 napi_env env = nullptr;
619 napi_value value = nullptr;
620 NapiScanUtils::GetInt32FromValue(env, value);
621 }
622
TestGetStringFromValueUtf8(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)623 void TestGetStringFromValueUtf8(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
624 {
625 napi_env env = nullptr;
626 napi_value value = nullptr;
627 NapiScanUtils::GetStringFromValueUtf8(env, value);
628 }
629
TestValueIsArrayBuffer(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)630 void TestValueIsArrayBuffer(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
631 {
632 napi_env env = nullptr;
633 napi_value value = nullptr;
634 NapiScanUtils::ValueIsArrayBuffer(env, value);
635 }
636
TestGetInfoFromArrayBufferValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)637 void TestGetInfoFromArrayBufferValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
638 {
639 napi_env env = nullptr;
640 napi_value value = nullptr;
641 size_t *length = nullptr;
642 NapiScanUtils::GetInfoFromArrayBufferValue(env, value, length);
643 }
644
TestCreateObject(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)645 void TestCreateObject(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
646 {
647 napi_env env = nullptr;
648 NapiScanUtils::CreateObject(env);
649 }
650
TestGetUndefined(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)651 void TestGetUndefined(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
652 {
653 napi_env env = nullptr;
654 NapiScanUtils::GetUndefined(env);
655 }
656
TestCallFunction(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)657 void TestCallFunction(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
658 {
659 napi_env env = nullptr;
660 napi_value recv = nullptr;
661 napi_value func = nullptr;
662 size_t argc = 0;
663 napi_value *argv = nullptr;
664 NapiScanUtils::CallFunction(env, recv, func, argc, argv);
665 }
666
TestCreateReference(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)667 void TestCreateReference(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
668 {
669 napi_env env = nullptr;
670 napi_value callback = nullptr;
671 NapiScanUtils::CreateReference(env, callback);
672 }
673
TestCreateBoolean(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)674 void TestCreateBoolean(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
675 {
676 napi_env env = nullptr;
677 bool value = 1;
678 NapiScanUtils::CreateBoolean(env, value);
679 }
680
TestGetBooleanFromValue(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)681 void TestGetBooleanFromValue(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
682 {
683 napi_env env = nullptr;
684 napi_value value = nullptr;
685 NapiScanUtils::GetBooleanFromValue(env, value);
686 }
687
TestGetBooleanProperty(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)688 void TestGetBooleanProperty(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
689 {
690 napi_env env = nullptr;
691 napi_value object = nullptr;
692 std::string propertyName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
693 NapiScanUtils::GetBooleanProperty(env, object, propertyName);
694 }
695
TestSetBooleanProperty(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)696 void TestSetBooleanProperty(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
697 {
698 napi_env env = nullptr;
699 napi_value object = nullptr;
700 std::string name = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
701 bool value = 1;
702 NapiScanUtils::SetBooleanProperty(env, object, name, value);
703 }
704
TestToLower(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)705 void TestToLower(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
706 {
707 std::string s = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
708 NapiScanUtils::ToLower(s);
709 }
710
TestGetValueString(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)711 void TestGetValueString(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
712 {
713 napi_env env = nullptr;
714 napi_value jsValue = nullptr;
715 NapiScanUtils::GetValueString(env, jsValue);
716 }
717
TestGetExtensionIdInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)718 void TestGetExtensionIdInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
719 {
720 std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
721 NapiScanUtils::GetExtensionId(globalId);
722 }
723
TestGetGlobalIdInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)724 void TestGetGlobalIdInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
725 {
726 std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
727 std::string localId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
728 NapiScanUtils::GetGlobalId(globalId, localId);
729 }
730
TestGetLocalIdInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)731 void TestGetLocalIdInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
732 {
733 std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
734 std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
735 NapiScanUtils::GetLocalId(globalId, extensionId);
736 }
737
TestEncodeExtensionCidInterface(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)738 void TestEncodeExtensionCidInterface(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
739 {
740 std::string globalId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
741 uint32_t callbackId = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
742 NapiScanUtils::EncodeExtensionCid(globalId, callbackId);
743 }
744
TestDecodeExtensionCid(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)745 void TestDecodeExtensionCid(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
746 {
747 std::string cid = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
748 std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
749 uint32_t callbackId = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
750 NapiScanUtils::DecodeExtensionCid(cid, extensionId, callbackId);
751 }
752
TestGetTaskEventId(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)753 void TestGetTaskEventId(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
754 {
755 std::string taskId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
756 std::string type = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
757 NapiScanUtils::GetTaskEventId(taskId, type);
758 }
759
TestOpenFile(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)760 void TestOpenFile(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
761 {
762 std::string filePath = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
763 NapiScanUtils::OpenFile(filePath);
764 }
765
TestIsPathValid(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)766 void TestIsPathValid(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
767 {
768 std::string filePath = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
769 NapiScanUtils::IsPathValid(filePath);
770 }
771
TestGetJsVal(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)772 void TestGetJsVal(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
773 {
774 napi_env env = nullptr;
775 napi_callback_info info = nullptr;
776 napi_value* jsValue = nullptr;
777 size_t length = 1;
778 NapiScanUtils::GetJsVal(env, info, jsValue, length);
779 }
780
ScanOptionDescriptorFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)781 void ScanOptionDescriptorFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
782 {
783 TestSetOptionName(data, size, dataProvider);
784 TestSetOptionTitle(data, size, dataProvider);
785 TestSetOptionDesc(data, size, dataProvider);
786 TestSetOptionType(data, size, dataProvider);
787 TestSetOptionUnit(data, size, dataProvider);
788 TestSetOptionSize(data, size, dataProvider);
789 TestSetOptionCap(data, size, dataProvider);
790 TestSetOptionConstraintType(data, size, dataProvider);
791 TestSetOptionConstraintString(data, size, dataProvider);
792 TestSetOptionConstraintNumber(data, size, dataProvider);
793 TestSetOptionConstraintRange(data, size, dataProvider);
794 TestScanOptionDescriptor(data, size, dataProvider);
795 }
796
ScanOptionValueFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)797 void ScanOptionValueFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
798 {
799 TestSetScanOptionValueType(data, size, dataProvider);
800 TestSetValueSize(data, size, dataProvider);
801 TestSetNumValue(data, size, dataProvider);
802 TestSetNumListValue(data, size, dataProvider);
803 TestSetStrValue(data, size, dataProvider);
804 TestSetBoolValue(data, size, dataProvider);
805 TestScanOptionValue(data, size, dataProvider);
806 }
807
ScanParametersFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)808 void ScanParametersFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
809 {
810 TestSetFormat(data, size, dataProvider);
811 TestSetLastFrame(data, size, dataProvider);
812 TestSetBytesPerLine(data, size, dataProvider);
813 TestSetPixelsPerLine(data, size, dataProvider);
814 TestSetLines(data, size, dataProvider);
815 TestSetDepth(data, size, dataProvider);
816 TestScanParameters(data, size, dataProvider);
817 }
818
ScanDeviceInfoFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)819 void ScanDeviceInfoFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
820 {
821 TestSetScanProgress(data, size, dataProvider);
822 TestSetScanPictureFd(data, size, dataProvider);
823 TestSetIsFinal(data, size, dataProvider);
824 TestSetPictureId(data, size, dataProvider);
825 TestSetTaskCode(data, size, dataProvider);
826 TestScanProgress(data, size, dataProvider);
827 }
828
ScannerInfoFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)829 void ScannerInfoFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
830 {
831 TestTCPSetDeviceName(data, size, dataProvider);
832 TestTCPSetUuid(data, size, dataProvider);
833 TestTCPSetModel(data, size, dataProvider);
834 TestTCPSetManufacturer(data, size, dataProvider);
835 TestTCPSetDeviceType(data, size, dataProvider);
836 TestTCPSetPort(data, size, dataProvider);
837 TestTCPSetAddr(data, size, dataProvider);
838 TestTCPSetButton(data, size, dataProvider);
839 TestTCPSetFeeder(data, size, dataProvider);
840 TestTCPSetDeviceState(data, size, dataProvider);
841 TestUSBSetDeviceId(data, size, dataProvider);
842 TestUSBSetManufacturer(data, size, dataProvider);
843 TestUSBSetModel(data, size, dataProvider);
844 TestUSBSetDeviceType(data, size, dataProvider);
845 TestUSBSetDeviceState(data, size, dataProvider);
846 TestUSBSetDiscoverMode(data, size, dataProvider);
847 TestUSBSetSerialNumber(data, size, dataProvider);
848 TestDeviceInfo(data, size, dataProvider);
849 }
850
ScanRangeFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)851 void ScanRangeFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
852 {
853 TestSetMinValue(data, size, dataProvider);
854 TestSetMaxValue(data, size, dataProvider);
855 TestSetQuantValue(data, size, dataProvider);
856 TestScanRange(data, size, dataProvider);
857 }
858
ScanOptionDescriptorHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)859 void ScanOptionDescriptorHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
860 {
861 TestScanOptDesNapiInterface(data, size, dataProvider);
862 }
863
ScanOptionValueHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)864 void ScanOptionValueHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
865 {
866 TestScanOptValNapiInterface(data, size, dataProvider);
867 }
868
ScanParametersHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)869 void ScanParametersHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
870 {
871 TestScanParaNapiInterface(data, size, dataProvider);
872 }
873
ScanProgressHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)874 void ScanProgressHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
875 {
876 TestScanProgNapiInterface(data, size, dataProvider);
877 }
878
ScanRangeHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)879 void ScanRangeHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
880 {
881 TestScanRangeNapiInterface(data, size, dataProvider);
882 }
883
ScannerInfoHelperFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)884 void ScannerInfoHelperFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
885 {
886 TestScannerInfoNapiInterface(data, size, dataProvider);
887 TestScannerInfoTCPNapiInterface(data, size, dataProvider);
888 }
889
NapiScanUtilsFuzzTest(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)890 void NapiScanUtilsFuzzTest(const uint8_t* data, size_t size, FuzzedDataProvider* dataProvider)
891 {
892 TestSetNamedProperty(data, size, dataProvider);
893 TestGetUint32FromValue(data, size, dataProvider);
894 TestGetInt32FromValue(data, size, dataProvider);
895 TestGetStringFromValueUtf8(data, size, dataProvider);
896 TestValueIsArrayBuffer(data, size, dataProvider);
897 TestGetInfoFromArrayBufferValue(data, size, dataProvider);
898 TestCreateObject(data, size, dataProvider);
899 TestGetUndefined(data, size, dataProvider);
900 TestCallFunction(data, size, dataProvider);
901 TestCreateReference(data, size, dataProvider);
902 TestCreateBoolean(data, size, dataProvider);
903 TestGetBooleanFromValue(data, size, dataProvider);
904 TestGetBooleanProperty(data, size, dataProvider);
905 TestSetBooleanProperty(data, size, dataProvider);
906 TestToLower(data, size, dataProvider);
907 TestGetValueString(data, size, dataProvider);
908 TestGetExtensionIdInterface(data, size, dataProvider);
909 TestGetGlobalIdInterface(data, size, dataProvider);
910 TestGetLocalIdInterface(data, size, dataProvider);
911 TestEncodeExtensionCidInterface(data, size, dataProvider);
912 TestDecodeExtensionCid(data, size, dataProvider);
913 TestGetTaskEventId(data, size, dataProvider);
914 TestOpenFile(data, size, dataProvider);
915 TestIsPathValid(data, size, dataProvider);
916 TestGetJsVal(data, size, dataProvider);
917 }
918
919 }
920 }
921
922 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)923 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
924 {
925 if (data == nullptr) {
926 return 0;
927 }
928
929 if (size < OHOS::Scan::U32_AT_SIZE || size > OHOS::Scan::FOO_MAX_LEN) {
930 return 0;
931 }
932 FuzzedDataProvider dataProvider(data, size);
933 OHOS::Scan::ScanOptionDescriptorFuzzTest(data, size, &dataProvider);
934 OHOS::Scan::ScanOptionValueFuzzTest(data, size, &dataProvider);
935 OHOS::Scan::ScanParametersFuzzTest(data, size, &dataProvider);
936 OHOS::Scan::ScanDeviceInfoFuzzTest(data, size, &dataProvider);
937 OHOS::Scan::ScannerInfoFuzzTest(data, size, &dataProvider);
938 OHOS::Scan::ScanRangeFuzzTest(data, size, &dataProvider);
939 OHOS::Scan::ScanOptionDescriptorHelperFuzzTest(data, size, &dataProvider);
940 OHOS::Scan::ScanOptionValueHelperFuzzTest(data, size, &dataProvider);
941 OHOS::Scan::ScanParametersHelperFuzzTest(data, size, &dataProvider);
942 OHOS::Scan::ScanProgressHelperFuzzTest(data, size, &dataProvider);
943 OHOS::Scan::ScanRangeHelperFuzzTest(data, size, &dataProvider);
944 OHOS::Scan::ScannerInfoHelperFuzzTest(data, size, &dataProvider);
945 OHOS::Scan::NapiScanUtilsFuzzTest(data, size, &dataProvider);
946 return 0;
947 }
948
949