• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #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