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 #define private public
16 #define protected public
17 #include "printserviceability_fuzzer.h"
18 #include "fuzzer/FuzzedDataProvider.h"
19 #include "print_constant.h"
20 #include "printer_capability.h"
21 #include "print_log.h"
22 #include "print_service_ability.h"
23 #include "print_service_ability_mock_permission.h"
24 #include "print_callback.h"
25 #include "iprint_adapter_inner.h"
26
27 namespace OHOS {
28 namespace Print {
29 constexpr uint8_t MAX_STRING_LENGTH = 20;
30 constexpr int MAX_SET_NUMBER = 128;
31 constexpr size_t U32_AT_SIZE = 4;
32 static constexpr const char *JOB_OPTIONS =
33 "{\"jobName\":\"xx\",\"jobNum\":1,\"mediaType\":\"stationery\",\"documentCategory\":0,\"printQuality\":\"4\","
34 "\"printerName\":\"testId\",\"printerUri\":\"ipp://192.168.0.1:111/ipp/print\","
35 "\"documentFormat\":\"application/pdf\",\"files\":[\"/data/1.pdf\"]}";
36 static const std::string DEFAULT_PRINTERID = "testId";
37
TestStartPrint(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)38 void TestStartPrint(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
39 {
40 PrintServiceAbilityMockPermission::MockPermission();
41 PrintServiceAbility::GetInstance()->OnStart();
42 PrintServiceAbility::GetInstance()->ManualStart();
43 auto cupsPrinter = std::make_shared<CupsPrinterInfo>();
44 PrintServiceAbility::GetInstance()->printSystemData_.addedPrinterMap_.Insert(DEFAULT_PRINTERID, cupsPrinter);
45 PrintServiceAbility::GetInstance()->StartService();
46 std::string fileUri = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
47 std::vector<std::string> fileList;
48 fileList.push_back(fileUri);
49 uint32_t fd = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
50 std::vector<uint32_t> fdList;
51 fdList.push_back(fd);
52 std::string taskId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
53 PrintServiceAbility::GetInstance()->StartPrint(fileList, fdList, taskId);
54 PrintServiceAbility::GetInstance()->OnStop();
55 }
56
TestStopPrint(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)57 void TestStopPrint(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
58 {
59 std::string taskId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
60 PrintServiceAbility::GetInstance()->StopPrint(taskId);
61 }
62
TestConnectPrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)63 void TestConnectPrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
64 {
65 std::string printerId = size ? dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH) : DEFAULT_PRINTERID;
66 PrinterInfo printerInfo;
67 printerInfo.SetPrinterId(printerId);
68 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
69 printerInfo.SetOption(JOB_OPTIONS);
70 std::vector <PrinterInfo> printerInfos;
71 printerInfos.push_back(printerInfo);
72 PrintServiceAbility::GetInstance()->AddPrinters(printerInfos);
73 PrintServiceAbility::GetInstance()->ConnectPrinter(printerId);
74 PrintServiceAbility::GetInstance()->DisconnectPrinter(printerId);
75 }
76
TestDisconnectPrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)77 void TestDisconnectPrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
78 {
79 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
80 PrintServiceAbility::GetInstance()->DisconnectPrinter(printerId);
81 }
82
TestStartDiscoverPrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)83 void TestStartDiscoverPrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
84 {
85 std::vector <PrintExtensionInfo> printExtensionInfos;
86 PrintServiceAbility::GetInstance()->QueryAllExtension(printExtensionInfos);
87 std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
88 std::vector <std::string> extensionIds;
89 extensionIds.push_back(extensionId);
90 for (auto &printExtensionInfo: printExtensionInfos) {
91 extensionIds.push_back(printExtensionInfo.GetExtensionId());
92 }
93 PrintServiceAbility::GetInstance()->StartDiscoverPrinter(extensionIds);
94 PrintServiceAbility::GetInstance()->StopDiscoverPrinter();
95 }
96
TestQueryAllExtension(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)97 void TestQueryAllExtension(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
98 {
99 PrintExtensionInfo printExtensionInfo;
100 printExtensionInfo.SetExtensionId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
101 std::vector<PrintExtensionInfo> printExtensionInfos;
102 printExtensionInfos.push_back(printExtensionInfo);
103 PrintServiceAbility::GetInstance()->QueryAllExtension(printExtensionInfos);
104 }
105
TestStartPrintJob(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)106 void TestStartPrintJob(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
107 {
108 PrinterInfo printerInfo;
109 printerInfo.SetPrinterId(DEFAULT_PRINTERID);
110 printerInfo.SetPrinterName(DEFAULT_PRINTERID);
111 std::vector <PrinterInfo> printerInfos;
112 PrinterCapability printerCaps;
113 printerCaps.SetColorMode(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
114 printerInfos.push_back(printerInfo);
115
116 PrintServiceAbility::GetInstance()->AddPrinters(printerInfos);
117 PrintServiceAbility::GetInstance()->UpdatePrinters(printerInfos);
118
119 PrintJob testJob;
120 testJob.SetJobId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
121 std::vector <uint32_t> files = {1};
122 testJob.SetFdList(files);
123 OHOS::Print::PrintPageSize pageSize;
124 pageSize.SetId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
125 testJob.SetPageSize(pageSize);
126 testJob.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
127 testJob.SetOption(JOB_OPTIONS);
128 PrintServiceAbility::GetInstance()->StartPrintJob(testJob);
129 }
130
TestCancelPrintJob(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)131 void TestCancelPrintJob(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
132 {
133 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
134 PrintServiceAbility::GetInstance()->CancelPrintJob(jobId);
135 }
136
TestAddPrinters(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)137 void TestAddPrinters(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
138 {
139 PrinterInfo printerInfo;
140 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
141 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
142 printerInfo.SetOption(JOB_OPTIONS);
143 std::vector<PrinterInfo> printerInfos;
144 printerInfos.push_back(printerInfo);
145 PrintServiceAbility::GetInstance()->AddPrinters(printerInfos);
146 }
147
TestRemovePrinters(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)148 void TestRemovePrinters(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
149 {
150 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
151 std::vector<std::string> printerIds;
152 printerIds.push_back(printerId);
153 PrintServiceAbility::GetInstance()->RemovePrinters(printerIds);
154 }
155
TestUpdatePrinters(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)156 void TestUpdatePrinters(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
157 {
158 PrinterInfo printerInfo;
159 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
160 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
161 printerInfo.SetOption(JOB_OPTIONS);
162 std::vector<PrinterInfo> printerInfos;
163 printerInfos.push_back(printerInfo);
164 PrintServiceAbility::GetInstance()->UpdatePrinters(printerInfos);
165 return;
166 }
167
TestUpdatePrinterState(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)168 void TestUpdatePrinterState(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
169 {
170 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
171 uint32_t state = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
172 PrintServiceAbility::GetInstance()->UpdatePrinterState(printerId, state);
173 }
174
TestUpdatePrintJobStateOnlyForSystemApp(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)175 void TestUpdatePrintJobStateOnlyForSystemApp(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
176 {
177 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
178 uint32_t state = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
179 uint32_t subState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
180 PrintServiceAbility::GetInstance()->UpdatePrintJobStateOnlyForSystemApp(jobId, state, subState);
181 }
182
TestUpdateExtensionInfo(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)183 void TestUpdateExtensionInfo(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
184 {
185 std::string extInfo = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
186 PrintServiceAbility::GetInstance()->UpdateExtensionInfo(extInfo);
187 }
188
TestRequestPreview(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)189 void TestRequestPreview(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
190 {
191 PrintJob printJob;
192 printJob.SetJobId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
193 std::vector<uint32_t> files = {1};
194 printJob.SetFdList(files);
195 OHOS::Print::PrintPageSize pageSize;
196 pageSize.SetId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
197 printJob.SetPageSize(pageSize);
198 printJob.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
199 printJob.SetOption(JOB_OPTIONS);
200 std::string previewResult = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
201 PrintServiceAbility::GetInstance()->RequestPreview(printJob, previewResult);
202 }
203
TestQueryPrinterCapability(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)204 void TestQueryPrinterCapability(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
205 {
206 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
207 PrintServiceAbility::GetInstance()->QueryPrinterCapability(printerId);
208 }
209
TestOn(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)210 void TestOn(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
211 {
212 PrintDocumentAdapter *printerAdapterPtr = new PrintDocumentAdapter();
213 sptr <PrintCallback> callback = new(std::nothrow) PrintCallback(printerAdapterPtr);
214 if (callback != nullptr) {
215 std::string taskId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
216 std::string type = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
217 PrintServiceAbility::GetInstance()->On(taskId, type, callback);
218 } else {
219 delete printerAdapterPtr;
220 printerAdapterPtr = nullptr;
221 }
222 }
223
TestOff(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)224 void TestOff(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
225 {
226 std::string taskId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
227 std::string type = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
228 PrintServiceAbility::GetInstance()->Off(taskId, type);
229 }
230
TestCallback(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)231 void TestCallback(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
232 {
233 PrintDocumentAdapter *printerAdapterPtr = new PrintDocumentAdapter();
234 sptr <PrintCallback> callback = new(std::nothrow) PrintCallback(printerAdapterPtr);
235 if (callback != nullptr) {
236 std::string type = PRINTER_DISCOVER_EVENT_TYPE;
237 PrintServiceAbility::GetInstance()->RegisterPrinterCallback(type, callback);
238 PrintServiceAbility::GetInstance()->UnregisterPrinterCallback(type);
239 } else {
240 delete printerAdapterPtr;
241 printerAdapterPtr = nullptr;
242 }
243 std::vector <PrintExtensionInfo> printExtensionInfos;
244 PrintServiceAbility::GetInstance()->QueryAllExtension(printExtensionInfos);
245 std::vector <std::string> extensionIds;
246 for (auto &printExtensionInfo: printExtensionInfos) {
247 extensionIds.push_back(printExtensionInfo.GetExtensionId());
248 }
249 PrintServiceAbility::GetInstance()->StartDiscoverPrinter(extensionIds);
250
251 for (auto &printExtensionInfo: printExtensionInfos) {
252 PrintServiceAbility::GetInstance()->RegisterExtCallback(printExtensionInfo.GetExtensionId(), nullptr);
253 PrintServiceAbility::GetInstance()->UnregisterAllExtCallback(printExtensionInfo.GetExtensionId());
254 }
255
256 std::string extensionCID = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
257 PrintServiceAbility::GetInstance()->RegisterExtCallback(extensionCID, nullptr);
258 PrintServiceAbility::GetInstance()->UnregisterAllExtCallback(extensionCID);
259 }
260
TestLoadExtSuccess(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)261 void TestLoadExtSuccess(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
262 {
263 std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
264 PrintServiceAbility::GetInstance()->LoadExtSuccess(extensionId);
265 }
266
TestQueryAllPrintJob(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)267 void TestQueryAllPrintJob(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
268 {
269 PrintJob printJob;
270 printJob.SetJobId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
271 std::vector<uint32_t> files = {0};
272 printJob.SetFdList(files);
273 OHOS::Print::PrintPageSize pageSize;
274 pageSize.SetId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
275 printJob.SetPageSize(pageSize);
276 printJob.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
277 std::vector<PrintJob> printJobs;
278 printJobs.push_back(printJob);
279 PrintServiceAbility::GetInstance()->QueryAllPrintJob(printJobs);
280 }
281
TestQueryPrintJobById(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)282 void TestQueryPrintJobById(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
283 {
284 PrintJob printJob;
285 printJob.SetJobId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
286 std::vector<uint32_t> files = {0};
287 printJob.SetFdList(files);
288 OHOS::Print::PrintPageSize pageSize;
289 pageSize.SetId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
290 printJob.SetPageSize(pageSize);
291 printJob.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
292 std::string printJobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
293 PrintServiceAbility::GetInstance()->QueryPrintJobById(printJobId, printJob);
294 }
295
TestAddPrinterToCups(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)296 void TestAddPrinterToCups(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
297 {
298 std::string printerUri = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
299 std::string printerName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
300 std::string printerMake = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
301 PrintServiceAbility::GetInstance()->AddPrinterToCups(printerUri, printerName, printerMake);
302 }
303
TestQueryPrinterCapabilityByUri(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)304 void TestQueryPrinterCapabilityByUri(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
305 {
306 std::string printerUri = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
307 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
308 PrinterCapability printerCaps;
309 PrintServiceAbility::GetInstance()->SetHelper(nullptr);
310 PrintServiceAbility::GetInstance()->QueryPrinterCapabilityByUri(printerUri, printerId, printerCaps);
311 }
312
TestPrintByAdapter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)313 void TestPrintByAdapter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
314 {
315 std::string jobName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
316 PrintAttributes printAttributes;
317 std::string taskId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
318 PrintServiceAbility::GetInstance()->PrintByAdapter(jobName, printAttributes, taskId);
319 }
320
TestStartGetPrintFile(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)321 void TestStartGetPrintFile(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
322 {
323 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
324 PrintAttributes printAttributes;
325 uint32_t fd = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
326 PrintServiceAbility::GetInstance()->StartGetPrintFile(jobId, printAttributes, fd);
327 }
328
TestQueryPrinterInfoByPrinterId(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)329 void TestQueryPrinterInfoByPrinterId(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
330 {
331 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
332 PrinterInfo printerInfo;
333 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
334 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
335 printerInfo.SetOption(JOB_OPTIONS);
336 PrintServiceAbility::GetInstance()->QueryPrinterInfoByPrinterId(printerId, printerInfo);
337 }
338
TestNotifyPrintService(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)339 void TestNotifyPrintService(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
340 {
341 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
342 std::string type = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
343 PrintServiceAbility::GetInstance()->NotifyPrintService(jobId, type);
344 }
345
TestQueryAddedPrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)346 void TestQueryAddedPrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
347 {
348 std::string printerName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
349 std::vector<std::string> printerNameList;
350 printerNameList.push_back(printerName);
351 PrintServiceAbility::GetInstance()->QueryAddedPrinter(printerNameList);
352 }
353
TestQueryPrinterProperties(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)354 void TestQueryPrinterProperties(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
355 {
356 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
357 std::string key = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
358 std::vector<std::string> keyList;
359 keyList.push_back(key);
360 std::string value = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
361 std::vector<std::string> valueList;
362 valueList.push_back(value);
363 PrintServiceAbility::GetInstance()->QueryPrinterProperties(printerId, keyList, valueList);
364 }
365
TestUpdatePrintJobState(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)366 void TestUpdatePrintJobState(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
367 {
368 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
369 uint32_t state = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
370 uint32_t subState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
371 PrintServiceAbility::GetInstance()->UpdatePrintJobState(jobId, state, subState);
372 }
373
TestSetPrinterPreference(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)374 void TestSetPrinterPreference(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
375 {
376 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
377 PrinterPreferences printerPreference;
378 PrintServiceAbility::GetInstance()->SetPrinterPreference(printerId, printerPreference);
379 }
380
TestSetDefaultPrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)381 void TestSetDefaultPrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
382 {
383 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
384 uint32_t type = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
385 PrintServiceAbility::GetInstance()->SetDefaultPrinter(printerId, type);
386 }
387
TestDeletePrinterFromCups(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)388 void TestDeletePrinterFromCups(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
389 {
390 std::string printerName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
391 PrintServiceAbility::GetInstance()->DeletePrinterFromCups(printerName);
392 }
393
TestDiscoverUsbPrinters(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)394 void TestDiscoverUsbPrinters(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
395 {
396 PrinterInfo printerInfo;
397 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
398 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
399 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
400 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
401 std::vector<PrinterInfo> printers;
402 printers.push_back(printerInfo);
403 PrintServiceAbility::GetInstance()->DiscoverUsbPrinters(printers);
404 }
405
TestStartNativePrintJob(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)406 void TestStartNativePrintJob(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
407 {
408 PrintJob testJob;
409 testJob.SetJobId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
410 std::vector<uint32_t> files = {1};
411 testJob.SetFdList(files);
412 OHOS::Print::PrintPageSize pageSize;
413 pageSize.SetId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
414 testJob.SetPageSize(pageSize);
415 testJob.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
416 testJob.SetOption(JOB_OPTIONS);
417 PrintServiceAbility::GetInstance()->StartNativePrintJob(testJob);
418 }
419
TestNotifyPrintServiceEvent(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)420 void TestNotifyPrintServiceEvent(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
421 {
422 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
423 uint32_t event = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
424 PrintServiceAbility::GetInstance()->NotifyPrintServiceEvent(jobId, event);
425 }
426
427 // below are private test
TestUpdateQueuedJobList(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)428 void TestUpdateQueuedJobList(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
429 {
430 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
431 std::string printJobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
432 auto printJob = std::make_shared<PrintJob>();
433 printJob->SetJobId(printJobId);
434 printJob->SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
435 PrintServiceAbility::GetInstance()->UpdateQueuedJobList(printJobId, printJob);
436 }
437
TestUpdatePrintJobOptionByPrinterId(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)438 void TestUpdatePrintJobOptionByPrinterId(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
439 {
440 PrintJob printJob;
441 printJob.SetJobId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
442 std::vector<uint32_t> files = {0};
443 printJob.SetFdList(files);
444 OHOS::Print::PrintPageSize pageSize;
445 pageSize.SetId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
446 printJob.SetPageSize(pageSize);
447 printJob.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
448 PrintServiceAbility::GetInstance()->UpdatePrintJobOptionByPrinterId(printJob);
449 }
450
TestDelayStartDiscovery(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)451 void TestDelayStartDiscovery(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
452 {
453 std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
454 PrintServiceAbility::GetInstance()->DelayStartDiscovery(extensionId);
455 }
456
TestAdapterGetFileCallBack(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)457 void TestAdapterGetFileCallBack(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
458 {
459 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
460 uint32_t state = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
461 uint32_t subState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
462 PrintServiceAbility::GetInstance()->AdapterGetFileCallBack(jobId, state, subState);
463 }
464
TestAddNativePrintJob(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)465 void TestAddNativePrintJob(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
466 {
467 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
468 PrintJob printJob;
469 PrintServiceAbility::GetInstance()->AddNativePrintJob(jobId, printJob);
470 }
471
TestIsQueuedJobListEmpty(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)472 void TestIsQueuedJobListEmpty(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
473 {
474 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
475 PrintServiceAbility::GetInstance()->IsQueuedJobListEmpty(jobId);
476 }
477
TestSetPrintJobCanceled(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)478 void TestSetPrintJobCanceled(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
479 {
480 PrintJob printJob;
481 std::string printerid = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
482 printJob.SetPrinterId(printerid);
483 PrintServiceAbility::GetInstance()->SetPrintJobCanceled(printJob);
484 }
485
TestCancelUserPrintJobs(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)486 void TestCancelUserPrintJobs(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
487 {
488 int32_t userId = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
489 PrintServiceAbility::GetInstance()->CancelUserPrintJobs(userId);
490 PrintServiceAbility::GetInstance()->CallStatusBar();
491 }
492
TestSendExtensionEvent(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)493 void TestSendExtensionEvent(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
494 {
495 std::string extensionId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
496 std::string extInfo = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
497 PrintServiceAbility::GetInstance()->SendExtensionEvent(extensionId, extInfo);
498 PrintServiceAbility::GetInstance()->UpdatePrintUserMap();
499 }
500
TestNotifyAdapterJobChanged(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)501 void TestNotifyAdapterJobChanged(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
502 {
503 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
504 uint32_t state = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
505 uint32_t subState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
506 PrintServiceAbility::GetInstance()->notifyAdapterJobChanged(jobId, state, subState);
507 }
508
TestRegisterAdapterListener(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)509 void TestRegisterAdapterListener(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
510 {
511 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
512 PrintServiceAbility::GetInstance()->RegisterAdapterListener(jobId);
513 }
514
TestisEprint(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)515 void TestisEprint(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
516 {
517 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
518 PrintServiceAbility::GetInstance()->isEprint(printerId);
519 PrintServiceAbility::GetInstance()->GetPrintJobOrderId();
520 }
521
TestCheckIsDefaultPrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)522 void TestCheckIsDefaultPrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
523 {
524 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
525 PrintServiceAbility::GetInstance()->CheckIsDefaultPrinter(printerId);
526 }
527
TestCheckIsLastUsedPrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)528 void TestCheckIsLastUsedPrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
529 {
530 std::string printerName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
531 PrintServiceAbility::GetInstance()->CheckIsLastUsedPrinter(printerName);
532 }
533
TestSetLastUsedPrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)534 void TestSetLastUsedPrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
535 {
536 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
537 PrintServiceAbility::GetInstance()->SetLastUsedPrinter(printerId);
538 }
539
TestSendPrintJobEvent(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)540 void TestSendPrintJobEvent(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
541 {
542 PrintJob jobInfo;
543 uint32_t jobStateArr[] = {PRINT_JOB_COMPLETED, PRINT_JOB_BLOCKED, PRINT_JOB_COMPLETED};
544 for (auto jobState : jobStateArr) {
545 jobInfo.SetJobState(jobState);
546 PrintServiceAbility::GetInstance()->SendPrintJobEvent(jobInfo);
547 }
548 uint32_t jobState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
549 jobInfo.SetJobState(jobState);
550 PrintServiceAbility::GetInstance()->SendPrintJobEvent(jobInfo);
551 }
552
TestStartPrintJobCB(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)553 void TestStartPrintJobCB(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
554 {
555 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
556 auto printJob = std::make_shared<PrintJob>();
557 printJob->SetJobId(jobId);
558 printJob->SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
559 PrintServiceAbility::GetInstance()->StartPrintJobCB(jobId, printJob);
560 }
561
TestCheckPrinterUriDifferent(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)562 void TestCheckPrinterUriDifferent(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
563 {
564 auto printerInfo = std::make_shared<PrinterInfo>();
565 printerInfo->SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
566 printerInfo->SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
567 printerInfo->SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
568 printerInfo->SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
569 PrintServiceAbility::GetInstance()->CheckPrinterUriDifferent(printerInfo);
570 }
571
TestUpdatePrinterCapability(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)572 void TestUpdatePrinterCapability(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
573 {
574 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
575 PrinterInfo printerInfo;
576 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
577 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
578 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
579 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
580 PrintServiceAbility::GetInstance()->UpdatePrinterCapability(printerId, printerInfo);
581 }
582
TestReportCompletedPrint(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)583 void TestReportCompletedPrint(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
584 {
585 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
586 PrintServiceAbility::GetInstance()->ReportCompletedPrint(printerId);
587 }
588
TestReportHisysEvent(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)589 void TestReportHisysEvent(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
590 {
591 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
592 auto printJob = std::make_shared<PrintJob>();
593 printJob->SetJobId(jobId);
594 printJob->SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
595 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
596 uint32_t subState = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
597 PrintServiceAbility::GetInstance()->ReportHisysEvent(printJob, printerId, subState);
598 }
599
TestNotifyAppJobQueueChanged(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)600 void TestNotifyAppJobQueueChanged(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
601 {
602 std::string applyResult = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
603 PrintServiceAbility::GetInstance()->NotifyAppJobQueueChanged(applyResult);
604 }
605
TestSendPrinterChangeEvent(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)606 void TestSendPrinterChangeEvent(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
607 {
608 int event = dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER);
609 PrinterInfo printerInfo;
610 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
611 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
612 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
613 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
614 PrintServiceAbility::GetInstance()->SendPrinterChangeEvent(event, printerInfo);
615 PrintServiceAbility::GetInstance()->DestroyExtension();
616 PrintServiceAbility::GetInstance()->ReduceAppCount();
617 }
618
TestCheckJobQueueBlocked(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)619 void TestCheckJobQueueBlocked(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
620 {
621 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
622 PrintJob printJob;
623 printJob.SetJobId(jobId);
624 printJob.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
625 PrintServiceAbility::GetInstance()->CheckJobQueueBlocked(printJob);
626 }
627
TestGetListeningState(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)628 void TestGetListeningState(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
629 {
630 uint32_t subState = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
631 PrintServiceAbility::GetInstance()->GetListeningState(subState);
632 }
633
TestChangeDefaultPrinterForDelete(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)634 void TestChangeDefaultPrinterForDelete(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
635 {
636 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
637 auto userData = std::make_shared<PrintUserData>();
638 PrintServiceAbility::GetInstance()->ChangeDefaultPrinterForDelete(userData, printerId);
639 }
640
TestGetUserDataByUserId(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)641 void TestGetUserDataByUserId(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
642 {
643 int32_t userId = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
644 PrintServiceAbility::GetInstance()->GetUserDataByUserId(userId);
645 }
646
TestDetermineUserJobStatus(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)647 void TestDetermineUserJobStatus(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
648 {
649 std::string jobId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
650 auto printJob = std::make_shared<PrintJob>();
651 printJob->SetJobId(jobId);
652 printJob->SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
653 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
654 std::map<std::string, std::shared_ptr<PrintJob>> jobList;
655 jobList[jobId] = printJob;
656 PrintServiceAbility::GetInstance()->DetermineUserJobStatus(jobList);
657 }
658
TestNotifyCurrentUserChanged(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)659 void TestNotifyCurrentUserChanged(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
660 {
661 int32_t userId = dataProvider->ConsumeIntegralInRange<int32_t>(0, MAX_SET_NUMBER);
662 PrintServiceAbility::GetInstance()->NotifyCurrentUserChanged(userId);
663 }
664
TestHandleExtensionConnectPrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)665 void TestHandleExtensionConnectPrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
666 {
667 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
668 PrintServiceAbility::GetInstance()->HandleExtensionConnectPrinter(printerId);
669 }
670
TestSendQueuePrintJob(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)671 void TestSendQueuePrintJob(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
672 {
673 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
674 PrintServiceAbility::GetInstance()->SendQueuePrintJob(printerId);
675 }
676
TestUnloadSystemAbility(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)677 void TestUnloadSystemAbility(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
678 {
679 PrintServiceAbility::GetInstance()->UnloadSystemAbility();
680 }
681
TestAddPrinterToDiscovery(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)682 void TestAddPrinterToDiscovery(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
683 {
684 PrinterInfo printerInfo;
685 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
686 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
687 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
688 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
689 PrintServiceAbility::GetInstance()->AddPrinterToDiscovery(printerInfo);
690 }
691
TestUpdatePrinterInDiscovery(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)692 void TestUpdatePrinterInDiscovery(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
693 {
694 PrinterInfo printerInfo;
695 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
696 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
697 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
698 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
699 PrintServiceAbility::GetInstance()->UpdatePrinterInDiscovery(printerInfo);
700 }
701
TestRemovePrinterFromDiscovery(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)702 void TestRemovePrinterFromDiscovery(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
703 {
704 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
705 PrintServiceAbility::GetInstance()->RemovePrinterFromDiscovery(printerId);
706 }
707
TestUpdatePrinterInSystem(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)708 void TestUpdatePrinterInSystem(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
709 {
710 PrinterInfo printerInfo;
711 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
712 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
713 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
714 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
715 PrintServiceAbility::GetInstance()->UpdatePrinterInSystem(printerInfo);
716 }
717
TestDeletePrinterFromUserData(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)718 void TestDeletePrinterFromUserData(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
719 {
720 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
721 PrintServiceAbility::GetInstance()->DeletePrinterFromUserData(printerId);
722 }
723
TestNotifyAppDeletePrinter(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)724 void TestNotifyAppDeletePrinter(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
725 {
726 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
727 PrintServiceAbility::GetInstance()->NotifyAppDeletePrinter(printerId);
728 }
729
TestAddVendorPrinterToDiscovery(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)730 void TestAddVendorPrinterToDiscovery(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
731 {
732 std::string globalVendorName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
733 PrinterInfo printerInfo;
734 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
735 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
736 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
737 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
738 PrintServiceAbility::GetInstance()->AddVendorPrinterToDiscovery(globalVendorName, printerInfo);
739 }
740
TestUpdateVendorPrinterToDiscovery(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)741 void TestUpdateVendorPrinterToDiscovery(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
742 {
743 std::string globalVendorName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
744 PrinterInfo printerInfo;
745 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
746 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
747 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
748 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
749 PrintServiceAbility::GetInstance()->UpdateVendorPrinterToDiscovery(globalVendorName, printerInfo);
750 }
751
TestRemoveVendorPrinterFromDiscovery(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)752 void TestRemoveVendorPrinterFromDiscovery(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
753 {
754 std::string globalVendorName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
755 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
756 PrintServiceAbility::GetInstance()->RemoveVendorPrinterFromDiscovery(globalVendorName, printerId);
757 }
758
TestAddVendorPrinterToCupsWithPpd(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)759 void TestAddVendorPrinterToCupsWithPpd(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
760 {
761 std::string globalVendorName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
762 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
763 std::string ppdData = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
764 PrintServiceAbility::GetInstance()->AddVendorPrinterToCupsWithPpd(globalVendorName, printerId, ppdData);
765 }
766
TestAddVendorPrinterToCupsWithSpecificPpd(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)767 void TestAddVendorPrinterToCupsWithSpecificPpd(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
768 {
769 std::string globalVendorName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
770 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
771 std::string ppdData = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
772 PrintServiceAbility::GetInstance()->AddVendorPrinterToCupsWithSpecificPpd(globalVendorName, printerId, ppdData);
773 }
774
TestRemoveVendorPrinterFromCups(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)775 void TestRemoveVendorPrinterFromCups(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
776 {
777 std::string globalVendorName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
778 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
779 PrintServiceAbility::GetInstance()->RemoveVendorPrinterFromCups(globalVendorName, printerId);
780 }
781
TestOnVendorStatusUpdate(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)782 void TestOnVendorStatusUpdate(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
783 {
784 std::string globalVendorName = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
785 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
786 PrinterVendorStatus printerVendorStatus;
787 PrintServiceAbility::GetInstance()->OnVendorStatusUpdate(globalVendorName, printerId, printerVendorStatus);
788 }
789
TestQueryVendorPrinterInfo(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)790 void TestQueryVendorPrinterInfo(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
791 {
792 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
793 PrinterInfo printerInfo;
794 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
795 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
796 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
797 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
798 PrintServiceAbility::GetInstance()->QueryVendorPrinterInfo(printerId, printerInfo);
799 }
800
TestHandlePrinterStateChangeRegister(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)801 void TestHandlePrinterStateChangeRegister(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
802 {
803 std::string eventType = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
804 PrintServiceAbility::GetInstance()->HandlePrinterStateChangeRegister(eventType);
805 }
806
TestHandlePrinterChangeRegister(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)807 void TestHandlePrinterChangeRegister(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
808 {
809 std::string eventType = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
810 PrintServiceAbility::GetInstance()->HandlePrinterChangeRegister(eventType);
811 }
812
TestUpdateAddedPrinterInCups(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)813 void TestUpdateAddedPrinterInCups(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
814 {
815 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
816 std::string printerUri = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
817 PrintServiceAbility::GetInstance()->UpdateAddedPrinterInCups(printerId, printerUri);
818 }
819
TestRenamePrinterWhenAdded(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)820 void TestRenamePrinterWhenAdded(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
821 {
822 PrinterInfo printerInfo;
823 printerInfo.SetPrinterId(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
824 printerInfo.SetPrinterName(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
825 printerInfo.SetDescription(dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH));
826 printerInfo.SetPrinterState(dataProvider->ConsumeIntegralInRange<uint32_t>(0, MAX_SET_NUMBER));
827 PrintServiceAbility::GetInstance()->RenamePrinterWhenAdded(printerInfo);
828 }
829
TestQueryDiscoveredPrinterInfoById(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)830 void TestQueryDiscoveredPrinterInfoById(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
831 {
832 std::string printerId = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
833 PrintServiceAbility::GetInstance()->QueryDiscoveredPrinterInfoById(printerId);
834 }
835
TestCheckUserIdInEventType(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)836 void TestCheckUserIdInEventType(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
837 {
838 std::string type = dataProvider->ConsumeRandomLengthString(MAX_STRING_LENGTH);
839 PrintServiceAbility::GetInstance()->CheckUserIdInEventType(type);
840 }
841
TestMoreFunction(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)842 void TestMoreFunction(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
843 {
844 TestChangeDefaultPrinterForDelete(data, size, dataProvider);
845 TestGetUserDataByUserId(data, size, dataProvider);
846 TestDetermineUserJobStatus(data, size, dataProvider);
847 TestNotifyCurrentUserChanged(data, size, dataProvider);
848 TestHandleExtensionConnectPrinter(data, size, dataProvider);
849 TestSendQueuePrintJob(data, size, dataProvider);
850 TestUnloadSystemAbility(data, size, dataProvider);
851 TestAddPrinterToDiscovery(data, size, dataProvider);
852 TestUpdatePrinterInDiscovery(data, size, dataProvider);
853 TestRemovePrinterFromDiscovery(data, size, dataProvider);
854 TestUpdatePrinterInSystem(data, size, dataProvider);
855 TestDeletePrinterFromUserData(data, size, dataProvider);
856 TestNotifyAppDeletePrinter(data, size, dataProvider);
857 TestAddVendorPrinterToDiscovery(data, size, dataProvider);
858 TestUpdateVendorPrinterToDiscovery(data, size, dataProvider);
859 TestRemoveVendorPrinterFromDiscovery(data, size, dataProvider);
860 TestAddVendorPrinterToCupsWithPpd(data, size, dataProvider);
861 TestAddVendorPrinterToCupsWithSpecificPpd(data, size, dataProvider);
862 TestRemoveVendorPrinterFromCups(data, size, dataProvider);
863 TestOnVendorStatusUpdate(data, size, dataProvider);
864 TestQueryVendorPrinterInfo(data, size, dataProvider);
865 TestHandlePrinterStateChangeRegister(data, size, dataProvider);
866 TestHandlePrinterChangeRegister(data, size, dataProvider);
867 TestUpdateAddedPrinterInCups(data, size, dataProvider);
868 TestRenamePrinterWhenAdded(data, size, dataProvider);
869 TestQueryDiscoveredPrinterInfoById(data, size, dataProvider);
870 TestCheckUserIdInEventType(data, size, dataProvider);
871 }
872
TestNotPublicFunction(const uint8_t * data,size_t size,FuzzedDataProvider * dataProvider)873 void TestNotPublicFunction(const uint8_t *data, size_t size, FuzzedDataProvider *dataProvider)
874 {
875 TestDiscoverUsbPrinters(data, size, dataProvider);
876 TestStartNativePrintJob(data, size, dataProvider);
877 TestNotifyPrintServiceEvent(data, size, dataProvider);
878 TestUpdateQueuedJobList(data, size, dataProvider);
879 TestUpdatePrintJobOptionByPrinterId(data, size, dataProvider);
880 TestDelayStartDiscovery(data, size, dataProvider);
881 TestAdapterGetFileCallBack(data, size, dataProvider);
882 TestAddNativePrintJob(data, size, dataProvider);
883 TestIsQueuedJobListEmpty(data, size, dataProvider);
884 TestSetPrintJobCanceled(data, size, dataProvider);
885 TestCancelUserPrintJobs(data, size, dataProvider);
886 TestSendExtensionEvent(data, size, dataProvider);
887 TestNotifyAdapterJobChanged(data, size, dataProvider);
888 TestRegisterAdapterListener(data, size, dataProvider);
889 TestisEprint(data, size, dataProvider);
890 TestCheckIsDefaultPrinter(data, size, dataProvider);
891 TestCheckIsLastUsedPrinter(data, size, dataProvider);
892 TestSetLastUsedPrinter(data, size, dataProvider);
893 TestSendPrintJobEvent(data, size, dataProvider);
894 TestStartPrintJobCB(data, size, dataProvider);
895 TestCheckPrinterUriDifferent(data, size, dataProvider);
896 TestUpdatePrinterCapability(data, size, dataProvider);
897 TestReportCompletedPrint(data, size, dataProvider);
898 TestReportHisysEvent(data, size, dataProvider);
899 TestNotifyAppJobQueueChanged(data, size, dataProvider);
900 TestSendPrinterChangeEvent(data, size, dataProvider);
901 TestCheckJobQueueBlocked(data, size, dataProvider);
902 TestGetListeningState(data, size, dataProvider);
903 TestMoreFunction(data, size, dataProvider);
904 }
905
906 } // namespace Print
907 } // namespace OHOS
908
909 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)910 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
911 {
912 /* Run your code on data */
913 if (data == nullptr) {
914 return 0;
915 }
916
917 if (size < OHOS::Print::U32_AT_SIZE) {
918 }
919
920 FuzzedDataProvider dataProvider(data, size);
921 OHOS::Print::TestStartPrint(data, size, &dataProvider);
922 OHOS::Print::TestStopPrint(data, size, &dataProvider);
923 OHOS::Print::TestConnectPrinter(data, size, &dataProvider);
924 OHOS::Print::TestDisconnectPrinter(data, size, &dataProvider);
925 OHOS::Print::TestStartDiscoverPrinter(data, size, &dataProvider);
926 OHOS::Print::TestQueryAllExtension(data, size, &dataProvider);
927 OHOS::Print::TestStartPrintJob(data, size, &dataProvider);
928 OHOS::Print::TestCancelPrintJob(data, size, &dataProvider);
929 OHOS::Print::TestAddPrinters(data, size, &dataProvider);
930 OHOS::Print::TestRemovePrinters(data, size, &dataProvider);
931 OHOS::Print::TestUpdatePrinters(data, size, &dataProvider);
932 OHOS::Print::TestUpdatePrinterState(data, size, &dataProvider);
933 OHOS::Print::TestUpdatePrintJobStateOnlyForSystemApp(data, size, &dataProvider);
934 OHOS::Print::TestUpdateExtensionInfo(data, size, &dataProvider);
935 OHOS::Print::TestRequestPreview(data, size, &dataProvider);
936 OHOS::Print::TestQueryPrinterCapability(data, size, &dataProvider);
937 OHOS::Print::TestOn(data, size, &dataProvider);
938 OHOS::Print::TestOff(data, size, &dataProvider);
939 OHOS::Print::TestCallback(data, size, &dataProvider);
940 OHOS::Print::TestLoadExtSuccess(data, size, &dataProvider);
941 OHOS::Print::TestQueryAllPrintJob(data, size, &dataProvider);
942 OHOS::Print::TestQueryPrintJobById(data, size, &dataProvider);
943 OHOS::Print::TestAddPrinterToCups(data, size, &dataProvider);
944 OHOS::Print::TestQueryPrinterCapabilityByUri(data, size, &dataProvider);
945 OHOS::Print::TestPrintByAdapter(data, size, &dataProvider);
946 OHOS::Print::TestStartGetPrintFile(data, size, &dataProvider);
947 OHOS::Print::TestNotifyPrintService(data, size, &dataProvider);
948 OHOS::Print::TestQueryPrinterInfoByPrinterId(data, size, &dataProvider);
949 OHOS::Print::TestQueryAddedPrinter(data, size, &dataProvider);
950 OHOS::Print::TestQueryPrinterProperties(data, size, &dataProvider);
951 OHOS::Print::TestUpdatePrintJobState(data, size, &dataProvider);
952 OHOS::Print::TestSetPrinterPreference(data, size, &dataProvider);
953 OHOS::Print::TestSetDefaultPrinter(data, size, &dataProvider);
954 OHOS::Print::TestDeletePrinterFromCups(data, size, &dataProvider);
955 OHOS::Print::TestNotPublicFunction(data, size, &dataProvider);
956 return 0;
957 }
958