• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 
18 #include "downloaduploadmanager_fuzzer.h"
19 
20 #include <securec.h>
21 
22 #include <cstddef>
23 #include <cstdint>
24 
25 #include "accesstoken_kit.h"
26 #include "js_common.h"
27 #include "message_parcel.h"
28 #include "nativetoken_kit.h"
29 #include "request.h"
30 #include "request_manager.h"
31 #include "request_manager_impl.h"
32 #include "request_running_task_count.h"
33 #include "request_service_interface.h"
34 #include "runcount_notify_stub.h"
35 #include "running_task_count.h"
36 #include "system_ability_definition.h"
37 #include "token_setproc.h"
38 
39 using namespace OHOS::Request;
40 using namespace OHOS::Security::AccessToken;
41 
42 #undef private
43 #undef protected
44 
45 namespace OHOS {
46 
ConvertToUint32(const uint8_t * ptr,size_t size)47 uint32_t ConvertToUint32(const uint8_t *ptr, size_t size)
48 {
49     if (ptr == nullptr || (size < sizeof(uint32_t))) {
50         return 0;
51     }
52     return *(reinterpret_cast<const uint32_t *>(ptr));
53 }
54 
GrantNativePermission()55 void GrantNativePermission()
56 {
57     const char **perms = new const char *[1];
58     perms[0] = "ohos.permission.INTERNET";
59     TokenInfoParams infoInstance = {
60         .dcapsNum = 0,
61         .permsNum = 1,
62         .aclsNum = 0,
63         .dcaps = nullptr,
64         .perms = perms,
65         .acls = nullptr,
66         .processName = "request_service",
67         .aplStr = "system_core",
68     };
69     uint64_t tokenId = GetAccessTokenId(&infoInstance);
70     SetSelfTokenID(tokenId);
71     AccessTokenKit::ReloadNativeTokenInfo();
72     delete[] perms;
73 }
74 
CreateRequestFuzzTest(const uint8_t * data,size_t size)75 void CreateRequestFuzzTest(const uint8_t *data, size_t size)
76 {
77     Config config;
78     auto tid = std::to_string(size);
79 
80     GrantNativePermission();
81     int32_t seq = RequestManager::GetInstance()->GetNextSeq();
82     RequestManager::GetInstance()->Create(config, seq, tid);
83 }
84 
StartRequestFuzzTest(const uint8_t * data,size_t size)85 void StartRequestFuzzTest(const uint8_t *data, size_t size)
86 {
87     std::string tid(reinterpret_cast<const char *>(data), size);
88     GrantNativePermission();
89     RequestManager::GetInstance()->Start(tid);
90 }
91 
StopRequestFuzzTest(const uint8_t * data,size_t size)92 void StopRequestFuzzTest(const uint8_t *data, size_t size)
93 {
94     std::string tid(reinterpret_cast<const char *>(data), size);
95     GrantNativePermission();
96     RequestManager::GetInstance()->Stop(tid);
97 }
98 
ShowRequestFuzzTest(const uint8_t * data,size_t size)99 void ShowRequestFuzzTest(const uint8_t *data, size_t size)
100 {
101     TaskInfo info;
102     std::string tid(reinterpret_cast<const char *>(data), size);
103     GrantNativePermission();
104     RequestManager::GetInstance()->Show(tid, info);
105 }
106 
TouchRequestFuzzTest(const uint8_t * data,size_t size)107 void TouchRequestFuzzTest(const uint8_t *data, size_t size)
108 {
109     TaskInfo info;
110     std::string tid(reinterpret_cast<const char *>(data), size);
111     std::string token(data, data + size);
112     GrantNativePermission();
113     RequestManager::GetInstance()->Touch(tid, token, info);
114 }
115 
SearchRequestFuzzTest(const uint8_t * data,size_t size)116 void SearchRequestFuzzTest(const uint8_t *data, size_t size)
117 {
118     Filter filter;
119     std::vector<std::string> tids;
120     std::string str(reinterpret_cast<const char *>(data), size);
121     tids.push_back(str);
122     GrantNativePermission();
123     RequestManager::GetInstance()->Search(filter, tids);
124 }
125 
PauseRequestFuzzTest(const uint8_t * data,size_t size)126 void PauseRequestFuzzTest(const uint8_t *data, size_t size)
127 {
128     Version version = static_cast<Version>(ConvertToUint32(data, size));
129     std::string tid(reinterpret_cast<const char *>(data), size);
130     GrantNativePermission();
131     RequestManager::GetInstance()->Pause(tid, version);
132 }
133 
QueryMimeTypeRequestFuzzTest(const uint8_t * data,size_t size)134 void QueryMimeTypeRequestFuzzTest(const uint8_t *data, size_t size)
135 {
136     std::string tid(reinterpret_cast<const char *>(data), size);
137     std::string mimeType(data, data + size);
138     GrantNativePermission();
139     RequestManager::GetInstance()->QueryMimeType(tid, mimeType);
140 }
141 
RemoveRequestFuzzTest(const uint8_t * data,size_t size)142 void RemoveRequestFuzzTest(const uint8_t *data, size_t size)
143 {
144     Version version = static_cast<Version>(ConvertToUint32(data, size));
145     std::string tid(reinterpret_cast<const char *>(data), size);
146     GrantNativePermission();
147     RequestManager::GetInstance()->Remove(tid, version);
148 }
149 
ResumeRequestFuzzTest(const uint8_t * data,size_t size)150 void ResumeRequestFuzzTest(const uint8_t *data, size_t size)
151 {
152     std::string tid(reinterpret_cast<const char *>(data), size);
153     GrantNativePermission();
154     RequestManager::GetInstance()->Resume(tid);
155 }
156 
GetTaskRequestFuzzTest(const uint8_t * data,size_t size)157 void GetTaskRequestFuzzTest(const uint8_t *data, size_t size)
158 {
159     Config config;
160     std::string tid(reinterpret_cast<const char *>(data), size);
161     std::string token(reinterpret_cast<const char *>(data), size);
162     GrantNativePermission();
163     RequestManager::GetInstance()->GetTask(tid, token, config);
164 }
165 
SubscribeRequestFuzzTest(const uint8_t * data,size_t size)166 void SubscribeRequestFuzzTest(const uint8_t *data, size_t size)
167 {
168     std::string tid(reinterpret_cast<const char *>(data), size);
169     GrantNativePermission();
170     RequestManager::GetInstance()->Subscribe(tid);
171 }
172 
UnsubscribeRequestFuzzTest(const uint8_t * data,size_t size)173 void UnsubscribeRequestFuzzTest(const uint8_t *data, size_t size)
174 {
175     std::string tid(reinterpret_cast<const char *>(data), size);
176     GrantNativePermission();
177     RequestManager::GetInstance()->Unsubscribe(tid);
178 }
179 
IsSaReadyRequestFuzzTest(const uint8_t * data,size_t size)180 void IsSaReadyRequestFuzzTest(const uint8_t *data, size_t size)
181 {
182     GrantNativePermission();
183     RequestManager::GetInstance()->IsSaReady();
184 }
185 
ReopenChannelRequestFuzzTest(const uint8_t * data,size_t size)186 void ReopenChannelRequestFuzzTest(const uint8_t *data, size_t size)
187 {
188     GrantNativePermission();
189     RequestManager::GetInstance()->ReopenChannel();
190 }
191 
SubscribeSARequestFuzzTest(const uint8_t * data,size_t size)192 void SubscribeSARequestFuzzTest(const uint8_t *data, size_t size)
193 {
194     GrantNativePermission();
195     RequestManager::GetInstance()->SubscribeSA();
196     RequestManager::GetInstance()->UnsubscribeSA();
197 }
198 
199 class FuzzResponseListenerImpl : public IResponseListener {
200 public:
~FuzzResponseListenerImpl()201     ~FuzzResponseListenerImpl(){};
OnResponseReceive(const std::shared_ptr<Response> & response)202     void OnResponseReceive(const std::shared_ptr<Response> &response) override
203     {
204         (void)response;
205         return;
206     }
207 };
208 
209 class FuzzNotifyDataListenerImpl : public INotifyDataListener {
210 public:
~FuzzNotifyDataListenerImpl()211     ~FuzzNotifyDataListenerImpl(){};
OnNotifyDataReceive(const std::shared_ptr<NotifyData> & notifyData)212     void OnNotifyDataReceive(const std::shared_ptr<NotifyData> &notifyData) override
213     {
214         (void)notifyData;
215         return;
216     }
217 };
218 
AddAndRemoveListenerRequestFuzzTest(const uint8_t * data,size_t size)219 void AddAndRemoveListenerRequestFuzzTest(const uint8_t *data, size_t size)
220 {
221     std::string taskId(reinterpret_cast<const char *>(data), size);
222     GrantNativePermission();
223     SubscribeType type = SubscribeType::RESPONSE;
224     std::shared_ptr<FuzzResponseListenerImpl> listener = std::make_shared<FuzzResponseListenerImpl>();
225     RequestManager::GetInstance()->AddListener(taskId, type, listener);
226     RequestManager::GetInstance()->RemoveListener(taskId, type, listener);
227     type = SubscribeType::COMPLETED;
228     std::shared_ptr<FuzzNotifyDataListenerImpl> listener2 = std::make_shared<FuzzNotifyDataListenerImpl>();
229     RequestManager::GetInstance()->AddListener(taskId, type, listener2);
230     RequestManager::GetInstance()->RemoveListener(taskId, type, listener2);
231 }
232 
RemoveAllListenersRequestFuzzTest(const uint8_t * data,size_t size)233 void RemoveAllListenersRequestFuzzTest(const uint8_t *data, size_t size)
234 {
235     std::string taskId(reinterpret_cast<const char *>(data), size);
236     GrantNativePermission();
237     SubscribeType type = SubscribeType::RESPONSE;
238     std::shared_ptr<FuzzResponseListenerImpl> listener = std::make_shared<FuzzResponseListenerImpl>();
239     RequestManager::GetInstance()->AddListener(taskId, type, listener);
240     type = SubscribeType::COMPLETED;
241     std::shared_ptr<FuzzNotifyDataListenerImpl> listener2 = std::make_shared<FuzzNotifyDataListenerImpl>();
242     RequestManager::GetInstance()->AddListener(taskId, type, listener2);
243     RequestManager::GetInstance()->RemoveAllListeners(taskId);
244     RequestManager::GetInstance()->RestoreListener(nullptr);
245 }
246 
TestFunc(void)247 void TestFunc(void)
248 {
249     return;
250 }
251 
RestoreListenerRequestFuzzTest(const uint8_t * data,size_t size)252 void RestoreListenerRequestFuzzTest(const uint8_t *data, size_t size)
253 {
254     GrantNativePermission();
255     RequestManager::GetInstance()->RestoreListener(TestFunc);
256 }
257 
QueryRequestFuzzTest(const uint8_t * data,size_t size)258 void QueryRequestFuzzTest(const uint8_t *data, size_t size)
259 {
260     std::string tid(reinterpret_cast<const char *>(data), size);
261     TaskInfo taskinfo;
262     GrantNativePermission();
263     RequestManager::GetInstance()->Query(tid, taskinfo);
264 }
265 
RequestFuzzTestGetId(const uint8_t * data,size_t size)266 void RequestFuzzTestGetId(const uint8_t *data, size_t size)
267 {
268     std::string tid(reinterpret_cast<const char *>(data), size);
269     GrantNativePermission();
270     auto request = OHOS::Request::Request(tid);
271     request.getId();
272 }
273 
RequestFuzzTestHasListener(const uint8_t * data,size_t size)274 void RequestFuzzTestHasListener(const uint8_t *data, size_t size)
275 {
276     std::string tid(reinterpret_cast<const char *>(data), size);
277     SubscribeType type = SubscribeType::RESPONSE;
278     auto request = OHOS::Request::Request(tid);
279     std::shared_ptr<FuzzResponseListenerImpl> listenerPtr = std::make_shared<FuzzResponseListenerImpl>();
280     GrantNativePermission();
281     request.AddListener(type, listenerPtr);
282     request.HasListener();
283     request.RemoveListener(type, listenerPtr);
284 }
285 
RequestFuzzTestOnNotifyDataReceive(const uint8_t * data,size_t size)286 void RequestFuzzTestOnNotifyDataReceive(const uint8_t *data, size_t size)
287 {
288     std::string tid(reinterpret_cast<const char *>(data), size);
289     SubscribeType type = SubscribeType::COMPLETED;
290     auto request = OHOS::Request::Request(tid);
291     std::shared_ptr<NotifyData> notifyData = std::make_shared<NotifyData>();
292     notifyData->type = type;
293     notifyData->version = Version::API9;
294     GrantNativePermission();
295     request.OnNotifyDataReceive(notifyData);
296     std::shared_ptr<FuzzNotifyDataListenerImpl> listenerPtr = std::make_shared<FuzzNotifyDataListenerImpl>();
297     request.AddListener(type, listenerPtr);
298     request.OnNotifyDataReceive(notifyData);
299 }
300 
RequestFuzzTestAddAndRemoveListener(const uint8_t * data,size_t size)301 void RequestFuzzTestAddAndRemoveListener(const uint8_t *data, size_t size)
302 {
303     std::string tid(reinterpret_cast<const char *>(data), size);
304     SubscribeType type = SubscribeType::COMPLETED;
305     GrantNativePermission();
306     auto request = OHOS::Request::Request(tid);
307     std::shared_ptr<NotifyData> notifyData = std::make_shared<NotifyData>();
308     notifyData->type = type;
309     notifyData->version = Version::API9;
310 
311     request.OnNotifyDataReceive(notifyData);
312     std::shared_ptr<FuzzNotifyDataListenerImpl> listenerPtr = std::make_shared<FuzzNotifyDataListenerImpl>();
313     request.AddListener(type, listenerPtr);
314     request.RemoveListener(type, listenerPtr);
315 }
316 
RequestFuzzTestOnResponseReceive(const uint8_t * data,size_t size)317 void RequestFuzzTestOnResponseReceive(const uint8_t *data, size_t size)
318 {
319     std::string tid(reinterpret_cast<const char *>(data), size);
320     SubscribeType type = SubscribeType::RESPONSE;
321     std::shared_ptr<Response> response = std::make_shared<Response>();
322     GrantNativePermission();
323     auto request = OHOS::Request::Request(tid);
324     request.OnResponseReceive(response);
325     std::shared_ptr<FuzzResponseListenerImpl> listenerPtr = std::make_shared<FuzzResponseListenerImpl>();
326     request.AddListener(type, listenerPtr);
327     request.OnResponseReceive(response);
328 }
329 
330 class FuzzFwkTestOberver : public IRunningTaskObserver {
331 public:
332     void OnRunningTaskCountUpdate(int count) override;
333     ~FuzzFwkTestOberver() = default;
334     FuzzFwkTestOberver() = default;
335 };
336 
OnRunningTaskCountUpdate(int count)337 void FuzzFwkTestOberver::OnRunningTaskCountUpdate(int count)
338 {
339 }
340 
RunningTaskCountFuzzTestSubscribeRunningTaskCount(const uint8_t * data,size_t size)341 void RunningTaskCountFuzzTestSubscribeRunningTaskCount(const uint8_t *data, size_t size)
342 {
343     GrantNativePermission();
344     auto proxy = RequestManagerImpl::GetInstance()->GetRequestServiceProxy(true);
345     if (proxy == nullptr) {
346         std::shared_ptr<IRunningTaskObserver> ob = std::make_shared<FuzzFwkTestOberver>();
347         SubscribeRunningTaskCount(ob);
348         UnsubscribeRunningTaskCount(ob);
349     }
350     std::shared_ptr<IRunningTaskObserver> ob1 = std::make_shared<FuzzFwkTestOberver>();
351     SubscribeRunningTaskCount(ob1);
352     std::shared_ptr<IRunningTaskObserver> ob2 = std::make_shared<FuzzFwkTestOberver>();
353     FwkRunningTaskCountManager::GetInstance()->AttachObserver(ob2);
354     SubscribeRunningTaskCount(ob2);
355     FwkRunningTaskCountManager::GetInstance()->DetachObserver(ob1);
356     FwkRunningTaskCountManager::GetInstance()->DetachObserver(ob2);
357 }
358 
RunningTaskCountFuzzTestUnubscribeRunning(const uint8_t * data,size_t size)359 void RunningTaskCountFuzzTestUnubscribeRunning(const uint8_t *data, size_t size)
360 {
361     GrantNativePermission();
362     std::shared_ptr<IRunningTaskObserver> ob1 = std::make_shared<FuzzFwkTestOberver>();
363     FwkRunningTaskCountManager::GetInstance()->AttachObserver(ob1);
364 
365     std::shared_ptr<IRunningTaskObserver> ob2 = std::make_shared<FuzzFwkTestOberver>();
366     UnsubscribeRunningTaskCount(ob2);
367     UnsubscribeRunningTaskCount(ob1);
368 }
369 
RunningTaskCountFuzzTestGetAndSetCount(const uint8_t * data,size_t size)370 void RunningTaskCountFuzzTestGetAndSetCount(const uint8_t *data, size_t size)
371 {
372     GrantNativePermission();
373     int old = FwkRunningTaskCountManager::GetInstance()->GetCount();
374     int except = 1; // 10 is except count num
375     FwkRunningTaskCountManager::GetInstance()->SetCount(except);
376     FwkRunningTaskCountManager::GetInstance()->GetCount();
377     FwkRunningTaskCountManager::GetInstance()->SetCount(old);
378     FwkRunningTaskCountManager::GetInstance()->GetCount();
379 }
380 
RunningTaskCountFuzzTestUpdateRunningTaskCount(const uint8_t * data,size_t size)381 void RunningTaskCountFuzzTestUpdateRunningTaskCount(const uint8_t *data, size_t size)
382 {
383     GrantNativePermission();
384     std::shared_ptr<IRunningTaskObserver> ob = std::make_shared<FuzzFwkTestOberver>();
385     FwkIRunningTaskObserver runningOb = FwkIRunningTaskObserver(ob);
386     runningOb.UpdateRunningTaskCount();
387 }
388 
RunningTaskCountFuzzTestNotifyAllObservers(const uint8_t * data,size_t size)389 void RunningTaskCountFuzzTestNotifyAllObservers(const uint8_t *data, size_t size)
390 {
391     GrantNativePermission();
392     std::shared_ptr<IRunningTaskObserver> ob1 = std::make_shared<FuzzFwkTestOberver>();
393     FwkRunningTaskCountManager::GetInstance()->AttachObserver(ob1);
394     FwkRunningTaskCountManager::GetInstance()->NotifyAllObservers();
395     FwkRunningTaskCountManager::GetInstance()->DetachObserver(ob1);
396 }
397 
RunCountNotifyStubFuzzTestGetInstance(const uint8_t * data,size_t size)398 void RunCountNotifyStubFuzzTestGetInstance(const uint8_t *data, size_t size)
399 {
400     GrantNativePermission();
401     RunCountNotifyStub::GetInstance();
402 }
403 
RunCountNotifyStubFuzzTestCallBack(const uint8_t * data,size_t size)404 void RunCountNotifyStubFuzzTestCallBack(const uint8_t *data, size_t size)
405 {
406     Notify notify;
407     GrantNativePermission();
408     RunCountNotifyStub::GetInstance()->CallBack(notify);
409 }
410 
RunCountNotifyStubFuzzTestDone(const uint8_t * data,size_t size)411 void RunCountNotifyStubFuzzTestDone(const uint8_t *data, size_t size)
412 {
413     TaskInfo taskInfo;
414     GrantNativePermission();
415     RunCountNotifyStub::GetInstance()->Done(taskInfo);
416 }
417 
RunCountNotifyStubFuzzTestOnCallBack(const uint8_t * data,size_t size)418 void RunCountNotifyStubFuzzTestOnCallBack(const uint8_t *data, size_t size)
419 {
420     int64_t except = 10; // 10 is except value
421     int old = FwkRunningTaskCountManager::GetInstance()->GetCount();
422     OHOS::MessageParcel parcel;
423     parcel.WriteInt64(except);
424     GrantNativePermission();
425     RunCountNotifyStub::GetInstance()->OnCallBack(parcel);
426     FwkRunningTaskCountManager::GetInstance()->GetCount();
427     FwkRunningTaskCountManager::GetInstance()->SetCount(old);
428     FwkRunningTaskCountManager::GetInstance()->GetCount();
429 }
430 
431 static constexpr int32_t ARRAY_LEN = 256; // 128 is array length
432 static constexpr int32_t INT64_SIZE = 8;  // 8 is int64 and uint64 num length
433 static constexpr int32_t INT32_SIZE = 4;  // 4 is int32 and uint32 num length
434 static constexpr int32_t INT16_SIZE = 2;  // 2 is int16 and uint16 num length
435 
ResponseMessageFuzzTestInt64FromParcel(const uint8_t * data,size_t size)436 void ResponseMessageFuzzTestInt64FromParcel(const uint8_t *data, size_t size)
437 {
438     int64_t except = 123456; // 123456 is except num
439     char *parcel = reinterpret_cast<char *>(&except);
440     int64_t num;
441     int testSize = INT32_SIZE;
442     ResponseMessageReceiver::Int64FromParcel(num, parcel, testSize);
443     testSize = INT64_SIZE;
444     ResponseMessageReceiver::Int64FromParcel(num, parcel, testSize);
445 }
446 
ResponseMessageFuzzTestUint64FromParcel(const uint8_t * data,size_t size)447 void ResponseMessageFuzzTestUint64FromParcel(const uint8_t *data, size_t size)
448 {
449     uint64_t except = 123456; // 123456 is except num
450     char *parcel = reinterpret_cast<char *>(&except);
451     uint64_t num;
452     int testSize = INT32_SIZE;
453     ResponseMessageReceiver::Uint64FromParcel(num, parcel, testSize);
454     testSize = INT64_SIZE;
455     ResponseMessageReceiver::Uint64FromParcel(num, parcel, testSize);
456 }
457 
ResponseMessageFuzzTestInt32FromParcel(const uint8_t * data,size_t size)458 void ResponseMessageFuzzTestInt32FromParcel(const uint8_t *data, size_t size)
459 {
460     int32_t except = 123456; // 123456 is except num
461     char *parcel = reinterpret_cast<char *>(&except);
462     int32_t num;
463     int testSize = INT16_SIZE;
464     ResponseMessageReceiver::Int32FromParcel(num, parcel, testSize);
465     testSize = INT32_SIZE;
466     ResponseMessageReceiver::Int32FromParcel(num, parcel, testSize);
467 }
468 
ResponseMessageFuzzTestUint32FromParcel(const uint8_t * data,size_t size)469 void ResponseMessageFuzzTestUint32FromParcel(const uint8_t *data, size_t size)
470 {
471     uint32_t except = 123456; // 123456 is except num
472     char *parcel = reinterpret_cast<char *>(&except);
473     uint32_t num;
474     int testSize = INT16_SIZE;
475     ResponseMessageReceiver::Uint32FromParcel(num, parcel, testSize);
476     testSize = INT32_SIZE;
477     ResponseMessageReceiver::Uint32FromParcel(num, parcel, testSize);
478 }
479 
ResponseMessageFuzzTestInt16FromParcel(const uint8_t * data,size_t size)480 void ResponseMessageFuzzTestInt16FromParcel(const uint8_t *data, size_t size)
481 {
482     int16_t except = 123; // 123 is except num
483     char *parcel = reinterpret_cast<char *>(&except);
484     int16_t num;
485     int testSize = 0;
486     ResponseMessageReceiver::Int16FromParcel(num, parcel, testSize);
487     testSize = INT16_SIZE;
488     ResponseMessageReceiver::Int16FromParcel(num, parcel, testSize);
489 }
490 
ResponseMessageFuzzTestStateFromParcel(const uint8_t * data,size_t size)491 void ResponseMessageFuzzTestStateFromParcel(const uint8_t *data, size_t size)
492 {
493     State state;
494     uint32_t except = static_cast<uint32_t>(State::ANY) + 1;
495     char *parcel = reinterpret_cast<char *>(&except);
496     int testSize = INT32_SIZE;
497     ResponseMessageReceiver::StateFromParcel(state, parcel, testSize);
498     except = static_cast<uint32_t>(State::ANY);
499     parcel = reinterpret_cast<char *>(&except);
500     testSize = INT32_SIZE;
501     ResponseMessageReceiver::StateFromParcel(state, parcel, testSize);
502 }
503 
ResponseMessageFuzzTestActionFromParcel(const uint8_t * data,size_t size)504 void ResponseMessageFuzzTestActionFromParcel(const uint8_t *data, size_t size)
505 {
506     Action action;
507     uint32_t except = static_cast<uint32_t>(Action::ANY) + 1;
508     char *parcel = reinterpret_cast<char *>(&except);
509     int testSize = INT32_SIZE;
510     ResponseMessageReceiver::ActionFromParcel(action, parcel, testSize);
511     except = static_cast<uint32_t>(Action::ANY);
512     parcel = reinterpret_cast<char *>(&except);
513     testSize = INT32_SIZE;
514     ResponseMessageReceiver::ActionFromParcel(action, parcel, testSize);
515 }
516 
ResponseMessageFuzzTestVersionFromParcel(const uint8_t * data,size_t size)517 void ResponseMessageFuzzTestVersionFromParcel(const uint8_t *data, size_t size)
518 {
519     Version version;
520     uint32_t except = static_cast<uint32_t>(Version::API10) + 1;
521     char *parcel = reinterpret_cast<char *>(&except);
522     int testSize = INT32_SIZE;
523     ResponseMessageReceiver::VersionFromParcel(version, parcel, testSize);
524     except = static_cast<uint32_t>(Version::API10);
525     parcel = reinterpret_cast<char *>(&except);
526     testSize = INT32_SIZE;
527     ResponseMessageReceiver::VersionFromParcel(version, parcel, testSize);
528 }
529 
ResponseMessageFuzzTestSubscribeTypeFromParcel(const uint8_t * data,size_t size)530 void ResponseMessageFuzzTestSubscribeTypeFromParcel(const uint8_t *data, size_t size)
531 {
532     SubscribeType type;
533     uint32_t except = static_cast<uint32_t>(SubscribeType::BUTT) + 1;
534     char *parcel = reinterpret_cast<char *>(&except);
535     int testSize = INT32_SIZE;
536     ResponseMessageReceiver::SubscribeTypeFromParcel(type, parcel, testSize);
537     except = static_cast<uint32_t>(SubscribeType::BUTT);
538     parcel = reinterpret_cast<char *>(&except);
539     testSize = INT32_SIZE;
540     ResponseMessageReceiver::SubscribeTypeFromParcel(type, parcel, testSize);
541 }
542 
ResponseMessageFuzzTestStringFromParcel(const uint8_t * data,size_t size)543 void ResponseMessageFuzzTestStringFromParcel(const uint8_t *data, size_t size)
544 {
545     std::string str;
546     std::string except = "except string";
547     char *parcel = const_cast<char *>(except.c_str());
548     int testSize = except.size() - 1;
549     ResponseMessageReceiver::StringFromParcel(str, parcel, testSize);
550     testSize = except.size() + 1;
551     ResponseMessageReceiver::StringFromParcel(str, parcel, testSize);
552 }
553 
ResponseMessageFuzzTestResponseHeaderFromParcel(const uint8_t * data,size_t size)554 void ResponseMessageFuzzTestResponseHeaderFromParcel(const uint8_t *data, size_t size)
555 {
556     std::map<std::string, std::vector<std::string>> headers;
557     std::string except = "header:aaa,bbb,ccc\n";
558     char *parcel = const_cast<char *>(except.c_str());
559     int testSize = except.size();
560     ResponseMessageReceiver::ResponseHeaderFromParcel(headers, parcel, testSize);
561 }
562 
ResponseMessageFuzzTestProgressExtrasFromParcel(const uint8_t * data,size_t size)563 void ResponseMessageFuzzTestProgressExtrasFromParcel(const uint8_t *data, size_t size)
564 {
565     int arraySize = 64; // 64 is char array length
566     char except[arraySize];
567     uint32_t length = 1;
568     int ret = memcpy_s(except, static_cast<size_t>(arraySize), reinterpret_cast<void *>(&length), sizeof(length));
569     if (ret != 0) {
570         return;
571     }
572     char keyValue[] = "key\0value\0";
573     ret = memcpy_s(except + sizeof(length), static_cast<size_t>(arraySize - sizeof(length)), keyValue,
574         9); // 9 is keyValue length
575     if (ret != 0) {
576         return;
577     }
578     std::map<std::string, std::string> extras;
579     char *parcel = except;
580     int testSize = INT16_SIZE;
581     ResponseMessageReceiver::ProgressExtrasFromParcel(extras, parcel, testSize);
582     parcel = except;
583     testSize = sizeof(length) + 1;
584     ResponseMessageReceiver::ProgressExtrasFromParcel(extras, parcel, testSize);
585     parcel = except;
586     testSize = sizeof(length) + 6; // 6 make except testSize between the keyValue
587     ResponseMessageReceiver::ProgressExtrasFromParcel(extras, parcel, testSize);
588     parcel = except;
589     testSize = arraySize;
590     ResponseMessageReceiver::ProgressExtrasFromParcel(extras, parcel, testSize);
591 }
592 
ResponseMessageFuzzTestVecInt64FromParcel(const uint8_t * data,size_t size)593 void ResponseMessageFuzzTestVecInt64FromParcel(const uint8_t *data, size_t size)
594 {
595     int arraySize = INT32_SIZE + INT64_SIZE;
596     char except[arraySize];
597     uint32_t length = 1;
598     int ret = memcpy_s(except, static_cast<size_t>(arraySize), reinterpret_cast<void *>(&length), sizeof(length));
599     if (ret != 0) {
600         return;
601     }
602     int64_t value = 123456; // 123456 is except num
603     ret = memcpy_s(except + sizeof(length), static_cast<size_t>(arraySize - sizeof(length)),
604         reinterpret_cast<void *>(&value), sizeof(value));
605     if (ret != 0) {
606         return;
607     }
608     std::vector<int64_t> vec;
609     char *parcel = except;
610     int testSize = INT16_SIZE;
611     ResponseMessageReceiver::VecInt64FromParcel(vec, parcel, testSize);
612     parcel = except;
613     testSize = INT64_SIZE;
614     ResponseMessageReceiver::VecInt64FromParcel(vec, parcel, testSize);
615     parcel = except;
616     testSize = arraySize; // 6 make except testSize between the keyValue
617     ResponseMessageReceiver::VecInt64FromParcel(vec, parcel, testSize);
618 }
619 
ResponseMessageFuzzTestResponseMessageReceiver(const uint8_t * data,size_t size)620 void ResponseMessageFuzzTestResponseMessageReceiver(const uint8_t *data, size_t size)
621 {
622     IResponseMessageHandler *handler = nullptr;
623     int32_t sockFd = -1;
624     ResponseMessageReceiver receiver = ResponseMessageReceiver(handler, sockFd);
625 }
626 
ResponseMessageFuzzTestMsgHeaderParcel(const uint8_t * data,size_t size)627 void ResponseMessageFuzzTestMsgHeaderParcel(const uint8_t *data, size_t size)
628 {
629     uint32_t magicNum = ResponseMessageReceiver::RESPONSE_MAGIC_NUM - 1;
630     int pos = 0;
631     int arraySize = INT32_SIZE + INT64_SIZE;
632     char except[arraySize];
633     int ret = memcpy_s(except, static_cast<size_t>(arraySize), reinterpret_cast<void *>(&magicNum), sizeof(magicNum));
634     if (ret != 0) {
635         return;
636     }
637     pos += sizeof(magicNum);
638     int32_t msgId = 123456; // 123456 is except num
639     ret = memcpy_s(except + pos, static_cast<size_t>(arraySize - pos), reinterpret_cast<void *>(&msgId), sizeof(msgId));
640     if (ret != 0) {
641         return;
642     }
643     pos += sizeof(msgId);
644     int16_t msgType = 123; // 123 is except num
645     ret = memcpy_s(
646         except + pos, static_cast<size_t>(arraySize - pos), reinterpret_cast<void *>(&msgType), sizeof(msgType));
647     if (ret != 0) {
648         return;
649     }
650     pos += sizeof(msgType);
651     int16_t bodySize = 456; // 456 is except num
652     ret = memcpy_s(
653         except + pos, static_cast<size_t>(arraySize - pos), reinterpret_cast<void *>(&bodySize), sizeof(bodySize));
654     if (ret != 0) {
655         return;
656     }
657     pos += sizeof(bodySize);
658     msgId = 0;
659     msgType = 0;
660     bodySize = 0;
661     char *parcel = except;
662     int testSize = INT16_SIZE;
663     ResponseMessageReceiver::MsgHeaderParcel(msgId, msgType, bodySize, parcel, testSize);
664     parcel = except;
665     testSize = INT32_SIZE;
666     ResponseMessageReceiver::MsgHeaderParcel(msgId, msgType, bodySize, parcel, testSize);
667     parcel = except;
668     testSize = INT32_SIZE;
669     magicNum = ResponseMessageReceiver::RESPONSE_MAGIC_NUM;
670     ret = memcpy_s(except, static_cast<size_t>(arraySize), reinterpret_cast<void *>(&magicNum), sizeof(magicNum));
671     if (ret != 0) {
672         return;
673     }
674     ResponseMessageReceiver::MsgHeaderParcel(msgId, msgType, bodySize, parcel, testSize);
675     parcel = except;
676     testSize = INT32_SIZE + INT16_SIZE;
677     ResponseMessageReceiver::MsgHeaderParcel(msgId, msgType, bodySize, parcel, testSize);
678     parcel = except;
679     testSize = INT64_SIZE;
680     ResponseMessageReceiver::MsgHeaderParcel(msgId, msgType, bodySize, parcel, testSize); // 123456 is except num
681     parcel = except;
682     testSize = INT64_SIZE + INT16_SIZE;
683     ResponseMessageReceiver::MsgHeaderParcel(msgId, msgType, bodySize, parcel, testSize);
684     parcel = except;
685     testSize = arraySize;
686     ResponseMessageReceiver::MsgHeaderParcel(msgId, msgType, bodySize, parcel, testSize);
687 }
688 
ResponseMessageFuzzTestResponseFromParcel(const uint8_t * data,size_t size)689 void ResponseMessageFuzzTestResponseFromParcel(const uint8_t *data, size_t size)
690 {
691     std::shared_ptr<Response> response = std::make_shared<Response>();
692     int pos = 0;
693     int32_t tid = 123; // 123 is except tid
694     std::string version = "version";
695     int32_t statusCode = 456; // 456 is except statusCode
696     std::string reason = "reason";
697     std::string headers = "header:aaa,bbb,ccc\n";
698     char except[ARRAY_LEN];
699     int ret = memcpy_s(except, static_cast<size_t>(ARRAY_LEN), reinterpret_cast<void *>(&tid), sizeof(tid));
700     if (ret != 0) {
701         return;
702     }
703     pos += sizeof(tid);
704     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), version.c_str(), version.size() + 1);
705     if (ret != 0) {
706         return;
707     }
708     pos += (version.size() + 1);
709     ret = memcpy_s(
710         except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&statusCode), sizeof(statusCode));
711     if (ret != 0) {
712         return;
713     }
714     pos += sizeof(statusCode);
715     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), reason.c_str(), reason.size() + 1);
716     if (ret != 0) {
717         return;
718     }
719     pos += (reason.size() + 1);
720     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), headers.c_str(), headers.size() + 1);
721     if (ret != 0) {
722         return;
723     }
724     pos += (headers.size() + 1);
725     char *parcel = except;
726     int testSize = INT16_SIZE;
727     ResponseMessageReceiver::ResponseFromParcel(response, parcel, testSize);
728     parcel = except;
729     testSize = INT32_SIZE;
730     ResponseMessageReceiver::ResponseFromParcel(response, parcel, testSize);
731     parcel = except;
732     testSize = INT32_SIZE + version.size() + 1;
733     ResponseMessageReceiver::ResponseFromParcel(response, parcel, testSize);
734     parcel = except;
735     testSize = INT64_SIZE + version.size() + 1;
736     ResponseMessageReceiver::ResponseFromParcel(response, parcel, testSize);
737     parcel = except;
738     testSize = ARRAY_LEN;
739     ResponseMessageReceiver::ResponseFromParcel(response, parcel, testSize);
740 }
741 
ResponseMessageFuzzTestTaskStatesFromParcel(const uint8_t * data,size_t size)742 void ResponseMessageFuzzTestTaskStatesFromParcel(const uint8_t *data, size_t size)
743 {
744     std::vector<TaskState> taskStates;
745     int pos = 0;
746     int32_t length = 1;
747     std::string path = "path";
748     int32_t responseCode = NETWORK_OFFLINE;
749     std::string message = "message";
750     char except[ARRAY_LEN];
751     int ret = memcpy_s(except, static_cast<size_t>(ARRAY_LEN), reinterpret_cast<void *>(&length), sizeof(length));
752     if (ret != 0) {
753         return;
754     }
755     pos += sizeof(length);
756     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), path.c_str(), path.size() + 1);
757     if (ret != 0) {
758         return;
759     }
760     pos += (path.size() + 1);
761     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&responseCode),
762         sizeof(responseCode));
763     if (ret != 0) {
764         return;
765     }
766     pos += sizeof(responseCode);
767     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), message.c_str(), message.size() + 1);
768     if (ret != 0) {
769         return;
770     }
771     pos += (message.size() + 1);
772     char *parcel = except;
773     int testSize = INT16_SIZE;
774     ResponseMessageReceiver::TaskStatesFromParcel(taskStates, parcel, testSize);
775     parcel = except;
776     testSize = INT32_SIZE;
777     ResponseMessageReceiver::TaskStatesFromParcel(taskStates, parcel, testSize);
778     parcel = except;
779     testSize = INT32_SIZE + path.size() + 1;
780     ResponseMessageReceiver::TaskStatesFromParcel(taskStates, parcel, testSize);
781     parcel = except;
782     testSize = INT64_SIZE + path.size() + 1;
783     ResponseMessageReceiver::TaskStatesFromParcel(taskStates, parcel, testSize);
784     parcel = except;
785     testSize = ARRAY_LEN;
786     ResponseMessageReceiver::TaskStatesFromParcel(taskStates, parcel, testSize);
787 }
788 
ResponseMessageFuzzTestNotifyDataFromParcel(const uint8_t * data,size_t size)789 void ResponseMessageFuzzTestNotifyDataFromParcel(const uint8_t *data, size_t size)
790 {
791     std::shared_ptr<NotifyData> notifyData = std::make_shared<NotifyData>();
792     int pos = 0;
793     int32_t length = 1;
794     SubscribeType type = SubscribeType::BUTT;
795     uint32_t taskId = 123; // 123 is except tid
796     State state = State::ANY;
797     uint32_t index = 456;             // 456 is except index
798     uint64_t processed = 123456;      // 123456 is except processed
799     uint64_t totalProcessed = 111222; // 111222 is except totalProcessed
800     int64_t value = 333444;           // 333444 is except num
801     int ketValueLen = 10;             //9 is keyValue length
802     char keyValue[] = "key\0value\0";
803     Action action = Action::UPLOAD;
804     Version version = Version::API10;
805     std::string path = "path";
806     int32_t responseCode = NETWORK_OFFLINE;
807     std::string message = "message";
808     char except[ARRAY_LEN];
809     int ret = memcpy_s(except, static_cast<size_t>(ARRAY_LEN), reinterpret_cast<void *>(&type), sizeof(type));
810     if (ret != 0) {
811         return;
812     }
813     pos += sizeof(type);
814     ret = memcpy_s(
815         except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&taskId), sizeof(taskId));
816     if (ret != 0) {
817         return;
818     }
819     pos += sizeof(taskId);
820     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&state), sizeof(state));
821     if (ret != 0) {
822         return;
823     }
824     pos += sizeof(state);
825     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&index), sizeof(index));
826     if (ret != 0) {
827         return;
828     }
829     pos += sizeof(index);
830     ret = memcpy_s(
831         except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&processed), sizeof(processed));
832     if (ret != 0) {
833         return;
834     }
835     pos += sizeof(processed);
836     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&totalProcessed),
837         sizeof(totalProcessed));
838     if (ret != 0) {
839         return;
840     }
841     pos += sizeof(totalProcessed);
842     ret = memcpy_s(
843         except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&length), sizeof(length));
844     if (ret != 0) {
845         return;
846     }
847     pos += sizeof(length);
848     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&value), sizeof(value));
849     if (ret != 0) {
850         return;
851     }
852     pos += sizeof(value);
853     ret = memcpy_s(
854         except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&length), sizeof(length));
855     if (ret != 0) {
856         return;
857     }
858     pos += sizeof(length);
859     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), keyValue, ketValueLen);
860     if (ret != 0) {
861         return;
862     }
863     pos += ketValueLen;
864     ret = memcpy_s(
865         except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&action), sizeof(action));
866     if (ret != 0) {
867         return;
868     }
869     pos += sizeof(action);
870     ret = memcpy_s(
871         except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&version), sizeof(version));
872     if (ret != 0) {
873         return;
874     }
875     pos += sizeof(version);
876     ret = memcpy_s(
877         except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&length), sizeof(length));
878     if (ret != 0) {
879         return;
880     }
881     pos += sizeof(length);
882     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), path.c_str(), path.size() + 1);
883     if (ret != 0) {
884         return;
885     }
886     pos += (path.size() + 1);
887     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), reinterpret_cast<void *>(&responseCode),
888         sizeof(responseCode));
889     if (ret != 0) {
890         return;
891     }
892     pos += sizeof(responseCode);
893     ret = memcpy_s(except + pos, static_cast<size_t>(ARRAY_LEN - pos), message.c_str(), message.size() + 1);
894     if (ret != 0) {
895         return;
896     }
897     pos += (message.size() + 1);
898     char *parcel = except;
899     int testSize = INT16_SIZE;
900     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
901     parcel = except;
902     testSize = INT32_SIZE;
903     int maxLen = testSize;
904     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
905     parcel = except;
906     maxLen += INT32_SIZE;
907     testSize = maxLen;
908     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
909     parcel = except;
910     maxLen += INT32_SIZE;
911     testSize = maxLen;
912     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
913     parcel = except;
914     maxLen += INT32_SIZE;
915     testSize = maxLen;
916     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
917     parcel = except;
918     maxLen += INT64_SIZE;
919     testSize = maxLen;
920     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
921     parcel = except;
922     maxLen += INT64_SIZE;
923     testSize = maxLen;
924     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
925     parcel = except;
926     maxLen += (sizeof(length) + sizeof(value));
927     testSize = maxLen;
928     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
929     parcel = except;
930     maxLen += (sizeof(length) + ketValueLen);
931     testSize = maxLen;
932     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
933     parcel = except;
934     maxLen += INT32_SIZE;
935     testSize = maxLen;
936     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
937     parcel = except;
938     maxLen += INT32_SIZE;
939     testSize = maxLen;
940     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
941     parcel = except;
942     testSize = ARRAY_LEN;
943     ResponseMessageReceiver::NotifyDataFromParcel(notifyData, parcel, testSize);
944 }
945 
946 class FuzzRemoteObjectImpl : public OHOS::IRemoteObject {};
947 
948 } // namespace OHOS
949 
950 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)951 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
952 {
953     /* Run your code on data */
954     OHOS::CreateRequestFuzzTest(data, size);
955     OHOS::StartRequestFuzzTest(data, size);
956     OHOS::StopRequestFuzzTest(data, size);
957     OHOS::ShowRequestFuzzTest(data, size);
958     OHOS::TouchRequestFuzzTest(data, size);
959     OHOS::SearchRequestFuzzTest(data, size);
960     OHOS::PauseRequestFuzzTest(data, size);
961     OHOS::QueryMimeTypeRequestFuzzTest(data, size);
962     OHOS::RemoveRequestFuzzTest(data, size);
963     OHOS::ResumeRequestFuzzTest(data, size);
964     OHOS::GetTaskRequestFuzzTest(data, size);
965     OHOS::SubscribeRequestFuzzTest(data, size);
966     OHOS::UnsubscribeRequestFuzzTest(data, size);
967     OHOS::RestoreListenerRequestFuzzTest(data, size);
968     OHOS::IsSaReadyRequestFuzzTest(data, size);
969     OHOS::ReopenChannelRequestFuzzTest(data, size);
970     OHOS::SubscribeSARequestFuzzTest(data, size);
971     OHOS::AddAndRemoveListenerRequestFuzzTest(data, size);
972     OHOS::RemoveAllListenersRequestFuzzTest(data, size);
973     OHOS::QueryRequestFuzzTest(data, size);
974     OHOS::RequestFuzzTestGetId(data, size);
975     OHOS::RequestFuzzTestHasListener(data, size);
976     OHOS::RequestFuzzTestOnNotifyDataReceive(data, size);
977     OHOS::RequestFuzzTestAddAndRemoveListener(data, size);
978     OHOS::RequestFuzzTestOnResponseReceive(data, size);
979     OHOS::RunningTaskCountFuzzTestSubscribeRunningTaskCount(data, size);
980     OHOS::RunningTaskCountFuzzTestUnubscribeRunning(data, size);
981     OHOS::RunningTaskCountFuzzTestGetAndSetCount(data, size);
982     OHOS::RunningTaskCountFuzzTestUpdateRunningTaskCount(data, size);
983     OHOS::RunningTaskCountFuzzTestNotifyAllObservers(data, size);
984     OHOS::RunCountNotifyStubFuzzTestGetInstance(data, size);
985     OHOS::RunCountNotifyStubFuzzTestCallBack(data, size);
986     OHOS::RunCountNotifyStubFuzzTestDone(data, size);
987     OHOS::RunCountNotifyStubFuzzTestOnCallBack(data, size);
988     OHOS::ResponseMessageFuzzTestInt64FromParcel(data, size);
989     OHOS::ResponseMessageFuzzTestUint64FromParcel(data, size);
990     OHOS::ResponseMessageFuzzTestInt32FromParcel(data, size);
991     OHOS::ResponseMessageFuzzTestUint32FromParcel(data, size);
992     OHOS::ResponseMessageFuzzTestInt16FromParcel(data, size);
993     OHOS::ResponseMessageFuzzTestStateFromParcel(data, size);
994     OHOS::ResponseMessageFuzzTestActionFromParcel(data, size);
995     OHOS::ResponseMessageFuzzTestVersionFromParcel(data, size);
996     OHOS::ResponseMessageFuzzTestSubscribeTypeFromParcel(data, size);
997     OHOS::ResponseMessageFuzzTestStringFromParcel(data, size);
998     OHOS::ResponseMessageFuzzTestResponseHeaderFromParcel(data, size);
999     OHOS::ResponseMessageFuzzTestProgressExtrasFromParcel(data, size);
1000     OHOS::ResponseMessageFuzzTestVecInt64FromParcel(data, size);
1001     OHOS::ResponseMessageFuzzTestResponseMessageReceiver(data, size);
1002     OHOS::ResponseMessageFuzzTestMsgHeaderParcel(data, size);
1003     OHOS::ResponseMessageFuzzTestResponseFromParcel(data, size);
1004     OHOS::ResponseMessageFuzzTestTaskStatesFromParcel(data, size);
1005     OHOS::ResponseMessageFuzzTestNotifyDataFromParcel(data, size);
1006     return 0;
1007 }
1008