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> ¬ifyData) 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