• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2025 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 #include <cstddef>
16 #include <cstdint>
17 #define private public
18 #include "concurrent_task_client.h"
19 #include "concurrent_task_service_ability.h"
20 #include "concurrent_task_controller_interface.h"
21 #undef private
22 #include "concurrent_task_service.h"
23 #include "securec.h"
24 #include "qos.h"
25 #include "qos_interface.h"
26 #include "qos_policy.h"
27 #include "system_ability_definition.h"
28 #include <fuzzer/FuzzedDataProvider.h>
29 
30 using namespace OHOS::ConcurrentTask;
31 using namespace OHOS::QOS;
32 
33 namespace OHOS {
34 const int START_TIME = 20;
35 const int END_TIME = 40;
36 #define  QUADRUPLE  4
37 #define  LEN 4
38 
39 namespace {
40     constexpr int TEST_DATA_FIRST = 1;
41     constexpr int TEST_DATA_SECOND = 2;
42     constexpr int TEST_DATA_THIRD = 3;
43     constexpr int TEST_DATA_FOURTH = 4;
44     constexpr int TEST_DATA_FIFTH = 5;
45     constexpr int TEST_DATA_SIXTH = 6;
46     constexpr int TEST_DATA_SEVENTH = 7;
47     constexpr int TEST_DATA_EIGHTH = 8;
48     constexpr int TEST_DATA_TENTH = 10;
49 }
50 
FuzzConcurrentTaskServiceReportData(const uint8_t * data,size_t size)51 bool FuzzConcurrentTaskServiceReportData(const uint8_t* data, size_t size)
52 {
53     FuzzedDataProvider fdp(data, size);
54     if (size > sizeof(int) + sizeof(int)) {
55         MessageParcel data1;
56         Parcel parcel;
57         sptr<IRemoteObject> iremoteobject = IRemoteObject::Unmarshalling(parcel);
58         int intdata = fdp.ConsumeIntegral<int>();
59         void *voiddata = &intdata;
60         size_t size1 = sizeof(int);
61         data1.WriteRemoteObject(iremoteobject);
62         data1.WriteRawData(voiddata, size1);
63         data1.ReadRawData(size1);
64         MessageParcel reply;
65         MessageOption option;
66         uint32_t code = static_cast<uint32_t>(IConcurrentTaskServiceIpcCode::COMMAND_REPORT_DATA);
67         ConcurrentTaskService s = ConcurrentTaskService();
68         s.OnRemoteRequest(code, data1, reply, option);
69     }
70     return true;
71 }
72 
FuzzConcurrentTaskServiceReportSceneInfo(const uint8_t * data,size_t size)73 bool FuzzConcurrentTaskServiceReportSceneInfo(const uint8_t* data, size_t size)
74 {
75     FuzzedDataProvider fdp(data, size);
76     if (size > sizeof(int) + sizeof(int)) {
77         MessageParcel data1;
78         Parcel parcel;
79         sptr<IRemoteObject> iremoteobject = IRemoteObject::Unmarshalling(parcel);
80         int intdata = fdp.ConsumeIntegral<int>();
81         void *voiddata = &intdata;
82         size_t size1 = sizeof(int);
83         data1.WriteRemoteObject(iremoteobject);
84         data1.WriteRawData(voiddata, size1);
85         data1.ReadRawData(size1);
86         MessageParcel reply;
87         MessageOption option;
88         uint32_t code = static_cast<uint32_t>(IConcurrentTaskServiceIpcCode::COMMAND_REPORT_SCENE_INFO);
89         ConcurrentTaskService s = ConcurrentTaskService();
90         s.OnRemoteRequest(code, data1, reply, option);
91     }
92     return true;
93 }
94 
FuzzConcurrentTaskServiceQueryInterval(const uint8_t * data,size_t size)95 bool FuzzConcurrentTaskServiceQueryInterval(const uint8_t* data, size_t size)
96 {
97     FuzzedDataProvider fdp(data, size);
98     if (size > sizeof(int) + sizeof(int)) {
99         MessageParcel data1;
100         Parcel parcel;
101         sptr<IRemoteObject> iremoteobject = IRemoteObject::Unmarshalling(parcel);
102         int intdata = fdp.ConsumeIntegral<int>();
103         void *voiddata = &intdata;
104         size_t size1 = sizeof(int);
105         data1.WriteRemoteObject(iremoteobject);
106         data1.WriteRawData(voiddata, size1);
107         data1.ReadRawData(size1);
108         MessageParcel reply;
109         MessageOption option;
110         uint32_t code = static_cast<uint32_t>(IConcurrentTaskServiceIpcCode::COMMAND_QUERY_INTERVAL);
111         ConcurrentTaskService s = ConcurrentTaskService();
112         s.OnRemoteRequest(code, data1, reply, option);
113     }
114     return true;
115 }
116 
FuzzConcurrentTaskServiceQueryDeadline(const uint8_t * data,size_t size)117 bool FuzzConcurrentTaskServiceQueryDeadline(const uint8_t* data, size_t size)
118 {
119     FuzzedDataProvider fdp(data, size);
120     if (size > sizeof(int) + sizeof(int)) {
121         MessageParcel data1;
122         Parcel parcel;
123         sptr<IRemoteObject> iremoteobject = IRemoteObject::Unmarshalling(parcel);
124         int intdata = fdp.ConsumeIntegral<int>();
125         void *voiddata = &intdata;
126         size_t size1 = sizeof(int);
127         data1.WriteRemoteObject(iremoteobject);
128         data1.WriteRawData(voiddata, size1);
129         data1.ReadRawData(size1);
130         MessageParcel reply;
131         MessageOption option;
132         uint32_t code = static_cast<uint32_t>(IConcurrentTaskServiceIpcCode::COMMAND_QUERY_DEADLINE);
133         ConcurrentTaskService s = ConcurrentTaskService();
134         s.OnRemoteRequest(code, data1, reply, option);
135     }
136     return true;
137 }
138 
FuzzConcurrentTaskServiceSetAudioDeadline(const uint8_t * data,size_t size)139 bool FuzzConcurrentTaskServiceSetAudioDeadline(const uint8_t* data, size_t size)
140 {
141     FuzzedDataProvider fdp(data, size);
142     if (size > sizeof(int) + sizeof(int)) {
143         MessageParcel data1;
144         Parcel parcel;
145         sptr<IRemoteObject> iremoteobject = IRemoteObject::Unmarshalling(parcel);
146         int intdata = fdp.ConsumeIntegral<int>();
147         void *voiddata = &intdata;
148         size_t size1 = sizeof(int);
149         data1.WriteRemoteObject(iremoteobject);
150         data1.WriteRawData(voiddata, size1);
151         data1.ReadRawData(size1);
152         MessageParcel reply;
153         MessageOption option;
154         uint32_t code = static_cast<uint32_t>(IConcurrentTaskServiceIpcCode::COMMAND_SET_AUDIO_DEADLINE);
155         ConcurrentTaskService s = ConcurrentTaskService();
156         s.OnRemoteRequest(code, data1, reply, option);
157     }
158     return true;
159 }
160 
FuzzConcurrentTaskServiceRequestAuth(const uint8_t * data,size_t size)161 bool FuzzConcurrentTaskServiceRequestAuth(const uint8_t* data, size_t size)
162 {
163     FuzzedDataProvider fdp(data, size);
164     if (size > sizeof(int) + sizeof(int)) {
165         MessageParcel data1;
166         Parcel parcel;
167         sptr<IRemoteObject> iremoteobject = IRemoteObject::Unmarshalling(parcel);
168         int intdata = fdp.ConsumeIntegral<int>();
169         void *voiddata = &intdata;
170         size_t size1 = sizeof(int);
171         data1.WriteRemoteObject(iremoteobject);
172         data1.WriteRawData(voiddata, size1);
173         data1.ReadRawData(size1);
174         MessageParcel reply;
175         MessageOption option;
176         uint32_t code = static_cast<uint32_t>(IConcurrentTaskServiceIpcCode::COMMAND_REQUEST_AUTH);
177         ConcurrentTaskService s = ConcurrentTaskService();
178         s.OnRemoteRequest(code, data1, reply, option);
179     }
180     return true;
181 }
182 
FuzzConcurrentTaskServiceSetThreadQos(const uint8_t * data,size_t size)183 bool FuzzConcurrentTaskServiceSetThreadQos(const uint8_t* data, size_t size)
184 {
185     FuzzedDataProvider fdp(data, size);
186     if (size > sizeof(int) + sizeof(int)) {
187         int level = fdp.ConsumeIntegral<int>();
188         level = level % TEST_DATA_TENTH;
189         if (level == TEST_DATA_FIFTH || level == TEST_DATA_SECOND) {
190             QOS::SetThreadQos(QOS::QosLevel::QOS_BACKGROUND);
191         } else if (level == TEST_DATA_THIRD || level == TEST_DATA_FOURTH) {
192             QOS::SetThreadQos(QOS::QosLevel::QOS_UTILITY);
193         } else if (level == TEST_DATA_FIFTH || level == TEST_DATA_SIXTH) {
194             QOS::SetThreadQos(QOS::QosLevel::QOS_DEFAULT);
195         } else if (level == TEST_DATA_SEVENTH || level == TEST_DATA_EIGHTH) {
196             QOS::SetThreadQos(QOS::QosLevel::QOS_USER_INITIATED);
197         }
198     }
199     return true;
200 }
201 
FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t * data,size_t size)202 bool FuzzConcurrentTaskServiceSetQosForOtherThread(const uint8_t* data, size_t size)
203 {
204     FuzzedDataProvider fdp(data, size);
205     if (size > sizeof(int) + sizeof(int)) {
206         int level = fdp.ConsumeIntegral<int>();
207         int tid = fdp.ConsumeIntegral<int>();
208         level = level % TEST_DATA_TENTH;
209         if (level == TEST_DATA_FIRST || level == TEST_DATA_SECOND) {
210             QOS::SetQosForOtherThread(QOS::QosLevel::QOS_BACKGROUND, tid);
211         } else if (level == TEST_DATA_THIRD || level == TEST_DATA_FOURTH) {
212             QOS::SetQosForOtherThread(QOS::QosLevel::QOS_UTILITY, tid);
213         } else if (level == TEST_DATA_FIFTH || level == TEST_DATA_SIXTH) {
214             QOS::SetQosForOtherThread(QOS::QosLevel::QOS_DEFAULT, tid);
215         } else if (level == TEST_DATA_SEVENTH || level == TEST_DATA_EIGHTH) {
216             QOS::SetQosForOtherThread(QOS::QosLevel::QOS_USER_INITIATED, tid);
217         }
218     }
219     return true;
220 }
221 
FuzzConcurrentTaskServiceResetThreadQos(const uint8_t * data,size_t size)222 bool FuzzConcurrentTaskServiceResetThreadQos(const uint8_t* data, size_t size)
223 {
224     FuzzedDataProvider fdp(data, size);
225     if (size > sizeof(int) + sizeof(int)) {
226         int level = fdp.ConsumeIntegral<int>();
227         level = level % TEST_DATA_TENTH;
228         if (level == TEST_DATA_FIFTH || level == TEST_DATA_SECOND) {
229             QOS::SetThreadQos(QOS::QosLevel::QOS_BACKGROUND);
230         } else if (level == TEST_DATA_THIRD || level == TEST_DATA_FOURTH) {
231             QOS::SetThreadQos(QOS::QosLevel::QOS_UTILITY);
232         } else if (level == TEST_DATA_FIFTH || level == TEST_DATA_SIXTH) {
233             QOS::SetThreadQos(QOS::QosLevel::QOS_DEFAULT);
234         } else if (level == TEST_DATA_SEVENTH || level == TEST_DATA_EIGHTH) {
235             QOS::SetThreadQos(QOS::QosLevel::QOS_USER_INITIATED);
236         }
237         QOS::ResetThreadQos();
238     }
239     return true;
240 }
241 
FuzzConcurrentTaskServiceResetQosForOtherThread(const uint8_t * data,size_t size)242 bool FuzzConcurrentTaskServiceResetQosForOtherThread(const uint8_t* data, size_t size)
243 {
244     FuzzedDataProvider fdp(data, size);
245     if (size > sizeof(int) + sizeof(int)) {
246         int tid = fdp.ConsumeIntegral<int>();
247         QOS::ResetQosForOtherThread(tid);
248     }
249     return true;
250 }
251 
FuzzQosPolicyInit(const uint8_t * data,size_t size)252 void FuzzQosPolicyInit(const uint8_t* data, size_t size)
253 {
254     FuzzedDataProvider fdp(data, size);
255     if (size > sizeof(int)) {
256         QosPolicy qosPolicy;
257         qosPolicy.Init();
258     }
259     return;
260 }
261 
FuzzQosInterfaceEnableRtg(const uint8_t * data,size_t size)262 bool FuzzQosInterfaceEnableRtg(const uint8_t* data, size_t size)
263 {
264     FuzzedDataProvider fdp(data, size);
265     if (size > sizeof(int) + sizeof(int)) {
266         bool flag = fdp.ConsumeIntegral<bool>();
267         EnableRtg(flag);
268     }
269     return true;
270 }
271 
FuzzQosInterfaceQosLeave(const uint8_t * data,size_t size)272 bool FuzzQosInterfaceQosLeave(const uint8_t* data, size_t size)
273 {
274     FuzzedDataProvider fdp(data, size);
275     if (size > sizeof(int) + sizeof(int)) {
276         int level = fdp.ConsumeIntegral<int>();
277         level = level % TEST_DATA_TENTH;
278         if (level == TEST_DATA_FIFTH || level == TEST_DATA_SECOND) {
279             QOS::SetThreadQos(QOS::QosLevel::QOS_BACKGROUND);
280         } else if (level == TEST_DATA_THIRD || level == TEST_DATA_FOURTH) {
281             QOS::SetThreadQos(QOS::QosLevel::QOS_UTILITY);
282         } else if (level == TEST_DATA_FIFTH || level == TEST_DATA_SIXTH) {
283             QOS::SetThreadQos(QOS::QosLevel::QOS_DEFAULT);
284         } else if (level == TEST_DATA_SEVENTH || level == TEST_DATA_EIGHTH) {
285             QOS::SetThreadQos(QOS::QosLevel::QOS_USER_INITIATED);
286         }
287         QosLeave();
288     }
289     return true;
290 }
291 
FuzzConcurrentTaskServiceAbilityOnStart(const uint8_t * data,size_t size)292 bool FuzzConcurrentTaskServiceAbilityOnStart(const uint8_t* data, size_t size)
293 {
294     FuzzedDataProvider fdp(data, size);
295     if (size > sizeof(int32_t) + sizeof(int32_t)) {
296         int32_t sysAbilityId = fdp.ConsumeIntegral<int32_t>();
297         if ((sysAbilityId > ASSET_SERVICE_ID) && (sysAbilityId < VENDOR_SYS_ABILITY_ID_BEGIN)) {
298             bool runOnCreate = true;
299             ConcurrentTaskServiceAbility concurrenttaskserviceability =
300                 ConcurrentTaskServiceAbility(sysAbilityId, runOnCreate);
301             concurrenttaskserviceability.OnStart();
302         }
303     }
304     return true;
305 }
306 
FuzzConcurrentTaskServiceAbilityOnAddSystemAbility(const uint8_t * data,size_t size)307 bool FuzzConcurrentTaskServiceAbilityOnAddSystemAbility(const uint8_t* data, size_t size)
308 {
309     FuzzedDataProvider fdp(data, size);
310     if (size > sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t)) {
311         int32_t sysAbilityId = fdp.ConsumeIntegral<int32_t>();
312         int32_t taskServiceId = fdp.ConsumeIntegral<int32_t>();
313         std::string deviceId = std::to_string(fdp.ConsumeIntegral<int32_t>());
314         if ((sysAbilityId > ASSET_SERVICE_ID && sysAbilityId < VENDOR_SYS_ABILITY_ID_BEGIN) &&
315             (taskServiceId > ASSET_SERVICE_ID && taskServiceId < VENDOR_SYS_ABILITY_ID_BEGIN)) {
316             bool runOnCreate = true;
317             ConcurrentTaskServiceAbility concurrenttaskserviceability =
318                 ConcurrentTaskServiceAbility(taskServiceId, runOnCreate);
319             concurrenttaskserviceability.OnAddSystemAbility(sysAbilityId, deviceId);
320         }
321     }
322     return true;
323 }
324 
FuzzConcurrentTaskServiceAbilityOnRemoveSystemAbility(const uint8_t * data,size_t size)325 bool FuzzConcurrentTaskServiceAbilityOnRemoveSystemAbility(const uint8_t* data, size_t size)
326 {
327     FuzzedDataProvider fdp(data, size);
328     if (size > sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t)) {
329         int32_t sysAbilityId = fdp.ConsumeIntegral<int32_t>();
330         int32_t taskServiceId = fdp.ConsumeIntegral<int32_t>();
331         std::string deviceId = std::to_string(fdp.ConsumeIntegral<int32_t>());
332         if ((sysAbilityId > ASSET_SERVICE_ID && sysAbilityId < VENDOR_SYS_ABILITY_ID_BEGIN) &&
333             (taskServiceId > ASSET_SERVICE_ID && taskServiceId < VENDOR_SYS_ABILITY_ID_BEGIN)) {
334             bool runOnCreate = true;
335             ConcurrentTaskServiceAbility concurrenttaskserviceability =
336                 ConcurrentTaskServiceAbility(taskServiceId, runOnCreate);
337             concurrenttaskserviceability.OnRemoveSystemAbility(sysAbilityId, deviceId);
338         }
339     }
340     return true;
341 }
342 
FuzzConcurrentTaskClientReportData(const uint8_t * data,size_t size)343 bool FuzzConcurrentTaskClientReportData(const uint8_t* data, size_t size)
344 {
345     FuzzedDataProvider fdp(data, size);
346     if (size > sizeof(int) + sizeof(pid_t) + sizeof(uint32_t)) {
347         uint32_t resType = fdp.ConsumeIntegral<uint32_t>();
348         int64_t value = fdp.ConsumeIntegral<int64_t>();
349         std::unordered_map<std::string, std::string> mapPayload;
350         mapPayload["218211"] = std::to_string(fdp.ConsumeIntegral<int32_t>());
351         ConcurrentTaskClient::GetInstance().ReportData(resType, value, mapPayload);
352     }
353     return true;
354 }
355 
FuzzConcurrentTaskClientReportSceneInfo(const uint8_t * data,size_t size)356 bool FuzzConcurrentTaskClientReportSceneInfo(const uint8_t* data, size_t size)
357 {
358     FuzzedDataProvider fdp(data, size);
359     if (size > sizeof(int) + sizeof(pid_t) + sizeof(uint32_t)) {
360         uint32_t type = fdp.ConsumeIntegral<uint32_t>();
361         std::unordered_map<std::string, std::string> mapPayload;
362         mapPayload["218222"] = std::to_string(fdp.ConsumeIntegral<int32_t>());
363         ConcurrentTaskClient::GetInstance().ReportSceneInfo(type, mapPayload);
364     }
365     return true;
366 }
367 
FuzzConcurrentTaskClientQueryInterval(const uint8_t * data,size_t size)368 bool FuzzConcurrentTaskClientQueryInterval(const uint8_t* data, size_t size)
369 {
370     FuzzedDataProvider fdp(data, size);
371     if (size > sizeof(int) + sizeof(int)) {
372         int queryItem = fdp.ConsumeIntegral<int>();
373         queryItem = queryItem % (QURRY_TYPE_MAX + 1);
374         IntervalReply queryRs;
375         ConcurrentTaskClient::GetInstance().QueryInterval(queryItem, queryRs);
376     }
377     return true;
378 }
379 
FuzzConcurrentTaskClientQueryDeadline(const uint8_t * data,size_t size)380 bool FuzzConcurrentTaskClientQueryDeadline(const uint8_t* data, size_t size)
381 {
382     FuzzedDataProvider fdp(data, size);
383     if (size > sizeof(int) + sizeof(pid_t) + sizeof(uint32_t)) {
384         int queryItem = fdp.ConsumeIntegral<int>();
385         queryItem = queryItem % (QURRY_TYPE_MAX + 1);
386         DeadlineReply ddlReply;
387         pid_t pid = fdp.ConsumeIntegral<pid_t>();
388         uint32_t qos = fdp.ConsumeIntegral<uint32_t>();
389         std::unordered_map<pid_t, uint32_t> mapPayload;
390         mapPayload.insert(std::pair<pid_t, uint32_t>(pid, qos));
391         ConcurrentTaskClient::GetInstance().QueryDeadline(queryItem, ddlReply, mapPayload);
392     }
393     return true;
394 }
395 
FuzzConcurrentTaskClientSetAudioDeadline(const uint8_t * data,size_t size)396 bool FuzzConcurrentTaskClientSetAudioDeadline(const uint8_t* data, size_t size)
397 {
398     FuzzedDataProvider fdp(data, size);
399     if (size > sizeof(int) + sizeof(int)) {
400         int queryItem = fdp.ConsumeIntegral<int>();
401         queryItem = queryItem % (AUDIO_DDL_REMOVE_THREAD + 1);
402         IntervalReply queryRs;
403         ConcurrentTaskClient::GetInstance().SetAudioDeadline(queryItem, START_TIME, END_TIME, queryRs);
404     }
405     return true;
406 }
407 
FuzzConcurrentTaskClinetRequestAuth(const uint8_t * data,size_t size)408 bool FuzzConcurrentTaskClinetRequestAuth(const uint8_t* data, size_t size)
409 {
410     FuzzedDataProvider fdp(data, size);
411     if (size > sizeof(int32_t)) {
412         MessageParcel data1;
413         std::unordered_map<std::string, std::string> mapPayload;
414         mapPayload["2182"] = std::to_string(fdp.ConsumeIntegral<int32_t>());
415         ConcurrentTaskClient::GetInstance().RequestAuth(mapPayload);
416     }
417     return true;
418 }
419 
FuzzConcurrentTaskClientStopRemoteObject(const uint8_t * data,size_t size)420 bool FuzzConcurrentTaskClientStopRemoteObject(const uint8_t* data, size_t size)
421 {
422     FuzzedDataProvider fdp(data, size);
423     if (size > sizeof(int)) {
424         ConcurrentTaskClient::GetInstance().StopRemoteObject();
425     }
426     return true;
427 }
428 
FuzzConcurrentTaskControllerInterfaceReportData(const uint8_t * data,size_t size)429 bool FuzzConcurrentTaskControllerInterfaceReportData(const uint8_t* data, size_t size)
430 {
431     FuzzedDataProvider fdp(data, size);
432     if (size > sizeof(uint32_t) + sizeof(int64_t) + sizeof(uint32_t) + sizeof(uint32_t)) {
433         uint32_t resType = fdp.ConsumeIntegral<uint32_t>();
434         int64_t value = fdp.ConsumeIntegral<int64_t>();
435         std::unordered_map<std::string, std::string> payload;
436         payload["1111"] = std::to_string(fdp.ConsumeIntegral<uint32_t>());
437         payload["2222"] = std::to_string(fdp.ConsumeIntegral<uint32_t>());
438         TaskControllerInterface::GetInstance().ReportData(resType, value, payload);
439     }
440     return true;
441 }
442 
FuzzConcurrentTaskControllerInterfaceReportSceneInfo(const uint8_t * data,size_t size)443 bool FuzzConcurrentTaskControllerInterfaceReportSceneInfo(const uint8_t* data, size_t size)
444 {
445     FuzzedDataProvider fdp(data, size);
446     if (size > sizeof(uint32_t) + sizeof(uint32_t) + sizeof(uint32_t)) {
447         uint32_t resType = fdp.ConsumeIntegral<uint32_t>();
448         std::unordered_map<std::string, std::string> payload;
449         payload["1111"] = std::to_string(fdp.ConsumeIntegral<uint32_t>());
450         payload["2222"] = std::to_string(fdp.ConsumeIntegral<uint32_t>());
451         TaskControllerInterface::GetInstance().ReportSceneInfo(resType, payload);
452     }
453     return true;
454 }
455 
FuzzConcurrentTaskControllerInterfaceQueryInterval(const uint8_t * data,size_t size)456 bool FuzzConcurrentTaskControllerInterfaceQueryInterval(const uint8_t* data, size_t size)
457 {
458     FuzzedDataProvider fdp(data, size);
459     if (size > sizeof(int) + sizeof(int)) {
460         ConcurrentTaskService s = ConcurrentTaskService();
461         int queryItem = fdp.ConsumeIntegral<int>();
462         queryItem = queryItem % (QURRY_TYPE_MAX + 1);
463         IntervalReply queryRs;
464         TaskControllerInterface::GetInstance().QueryInterval(queryItem, queryRs);
465     }
466     return true;
467 }
468 
FuzzConcurrentTaskControllerInterfaceQueryDeadline(const uint8_t * data,size_t size)469 bool FuzzConcurrentTaskControllerInterfaceQueryDeadline(const uint8_t* data, size_t size)
470 {
471     FuzzedDataProvider fdp(data, size);
472     if (size > sizeof(int) + sizeof(int) + sizeof(int)) {
473         int deadlineType = fdp.ConsumeIntegral<int>();
474         deadlineType = deadlineType % (MSG_GAME + 1);
475         DeadlineReply queryRs;
476         std::unordered_map<std::string, std::string> payload;
477         payload["2123"] = std::to_string(fdp.ConsumeIntegral<int>());
478         payload["2333"] = std::to_string(fdp.ConsumeIntegral<int>());
479         ConcurrentTaskService s = ConcurrentTaskService();
480         TaskControllerInterface::GetInstance().QueryDeadline(deadlineType, queryRs, payload);
481     }
482     return true;
483 }
484 
FuzzConcurrentTaskControllerInterfaceSetAudioDeadline(const uint8_t * data,size_t size)485 bool FuzzConcurrentTaskControllerInterfaceSetAudioDeadline(const uint8_t* data, size_t size)
486 {
487     FuzzedDataProvider fdp(data, size);
488     if (size > sizeof(int) + sizeof(int)) {
489         ConcurrentTaskService s = ConcurrentTaskService();
490         int queryItem = fdp.ConsumeIntegral<int>();
491         queryItem = queryItem % (AUDIO_DDL_REMOVE_THREAD + 1);
492         IntervalReply queryRs;
493         TaskControllerInterface::GetInstance().SetAudioDeadline(queryItem, START_TIME, END_TIME, queryRs);
494     }
495     return true;
496 }
497 
FuzzConcurrentTaskControllerInterfaceRequestAuth(const uint8_t * data,size_t size)498 bool FuzzConcurrentTaskControllerInterfaceRequestAuth(const uint8_t* data, size_t size)
499 {
500     FuzzedDataProvider fdp(data, size);
501     if (size > sizeof(int) + sizeof(int)) {
502         std::unordered_map<std::string, std::string> payload;
503         payload["2187"] = std::to_string(fdp.ConsumeIntegral<int>());
504         payload["2376"] = std::to_string(fdp.ConsumeIntegral<int>());
505         ConcurrentTaskService s = ConcurrentTaskService();
506         TaskControllerInterface::GetInstance().RequestAuth(payload);
507     }
508     return true;
509 }
510 
FuzzConcurrentTaskControllerInterfaceInit(const uint8_t * data,size_t size)511 bool FuzzConcurrentTaskControllerInterfaceInit(const uint8_t* data, size_t size)
512 {
513     TaskControllerInterface::GetInstance().Init();
514     return true;
515 }
516 
FuzzConcurrentTaskControllerInterfaceRelease(const uint8_t * data,size_t size)517 bool FuzzConcurrentTaskControllerInterfaceRelease(const uint8_t* data, size_t size)
518 {
519     TaskControllerInterface::GetInstance().Release();
520     return true;
521 }
522 
FuzzQosControllerGetThreadQosForOtherThread(const uint8_t * data,size_t size)523 bool FuzzQosControllerGetThreadQosForOtherThread(const uint8_t* data, size_t size)
524 {
525     FuzzedDataProvider fdp(data, size);
526     if (size > sizeof(int)) {
527         enum QosLevel level;
528         int tid = fdp.ConsumeIntegral<int>();
529         QosController::GetInstance().GetThreadQosForOtherThread(level, tid);
530     }
531     return true;
532 }
533 } // namespace OHOS
534 
TaskControllerFuzzTestSuit(const uint8_t * data,size_t size)535 static void TaskControllerFuzzTestSuit(const uint8_t *data, size_t size)
536 {
537     OHOS::FuzzQosControllerGetThreadQosForOtherThread(data, size);
538 }
539 
540 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)541 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
542 {
543     /* Run your code on data */
544     OHOS::FuzzConcurrentTaskServiceReportData(data, size);
545     OHOS::FuzzConcurrentTaskServiceReportSceneInfo(data, size);
546     OHOS::FuzzConcurrentTaskServiceQueryDeadline(data, size);
547     OHOS::FuzzConcurrentTaskServiceQueryInterval(data, size);
548     OHOS::FuzzConcurrentTaskServiceSetAudioDeadline(data, size);
549     OHOS::FuzzConcurrentTaskServiceRequestAuth(data, size);
550 
551     OHOS::FuzzConcurrentTaskServiceSetThreadQos(data, size);
552     OHOS::FuzzConcurrentTaskServiceSetQosForOtherThread(data, size);
553     OHOS::FuzzConcurrentTaskServiceResetThreadQos(data, size);
554     OHOS::FuzzConcurrentTaskServiceResetQosForOtherThread(data, size);
555 
556     OHOS::FuzzQosPolicyInit(data, size);
557     OHOS::FuzzQosInterfaceEnableRtg(data, size);
558     OHOS::FuzzQosInterfaceQosLeave(data, size);
559 
560     OHOS::FuzzConcurrentTaskServiceAbilityOnStart(data, size);
561     OHOS::FuzzConcurrentTaskServiceAbilityOnAddSystemAbility(data, size);
562     OHOS::FuzzConcurrentTaskServiceAbilityOnRemoveSystemAbility(data, size);
563 
564     OHOS::FuzzConcurrentTaskClientReportData(data, size);
565     OHOS::FuzzConcurrentTaskClientReportSceneInfo(data, size);
566     OHOS::FuzzConcurrentTaskClientQueryDeadline(data, size);
567     OHOS::FuzzConcurrentTaskClientQueryInterval(data, size);
568     OHOS::FuzzConcurrentTaskClientSetAudioDeadline(data, size);
569     OHOS::FuzzConcurrentTaskClinetRequestAuth(data, size);
570     OHOS::FuzzConcurrentTaskClientStopRemoteObject(data, size);
571 
572     TaskControllerFuzzTestSuit(data, size);
573     return 0;
574 }
575