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
16 #include "groupoperationcommon_fuzzer.h"
17
18 #include "alg_defs.h"
19 #include "common_defs.h"
20 #include "device_auth.h"
21 #include "group_operation_common.h"
22 #include "hc_dev_info.h"
23 #include "json_utils.h"
24 #include "securec.h"
25 #include "data_manager.h"
26
27 namespace OHOS {
28 static const char *NORMAL_STR = "abc";
29 static const Uint8Buff NORMAL_BUFF = { 0, 0 };
30 static QueryGroupParams g_queryGroupParams = {
31 .groupId = NORMAL_STR,
32 .groupName = NORMAL_STR,
33 .ownerName = NORMAL_STR,
34 .groupType = PEER_TO_PEER_GROUP,
35 .userId = nullptr,
36 .groupVisibility = ALL_GROUP_VISIBILITY
37 };
38
GenerateGroupParams(const CJson * jsonParams,const char * groupId,TrustedGroupEntry * groupParams)39 static int32_t GenerateGroupParams(const CJson *jsonParams, const char *groupId, TrustedGroupEntry *groupParams)
40 {
41 (void)jsonParams;
42 (void)groupId;
43 (void)groupParams;
44 return HC_SUCCESS;
45 }
46
GenerateDevParams(const CJson * jsonParams,const char * groupId,TrustedDeviceEntry * devParams)47 static int32_t GenerateDevParams(const CJson *jsonParams, const char *groupId, TrustedDeviceEntry *devParams)
48 {
49 (void)jsonParams;
50 (void)groupId;
51 (void)devParams;
52 return HC_SUCCESS;
53 }
54
GroupOperationTest01(void)55 static void GroupOperationTest01(void)
56 {
57 (void)GetGroupEntryById(DEFAULT_OS_ACCOUNT, nullptr);
58 }
59
GroupOperationTest02(void)60 static void GroupOperationTest02(void)
61 {
62 (void)IsTrustedDeviceInGroup(DEFAULT_OS_ACCOUNT, nullptr, NORMAL_STR, true);
63 }
64
GroupOperationTest03(void)65 static void GroupOperationTest03(void)
66 {
67 (void)IsTrustedDeviceInGroup(DEFAULT_OS_ACCOUNT, NORMAL_STR, nullptr, true);
68 }
69
GroupOperationTest04(void)70 static void GroupOperationTest04(void)
71 {
72 (void)IsTrustedDeviceInGroup(DEFAULT_OS_ACCOUNT, NORMAL_STR, NORMAL_STR, true);
73 }
74
GroupOperationTest05(void)75 static void GroupOperationTest05(void)
76 {
77 (void)IsGroupOwner(DEFAULT_OS_ACCOUNT, nullptr, NORMAL_STR);
78 }
79
GroupOperationTest06(void)80 static void GroupOperationTest06(void)
81 {
82 (void)IsGroupOwner(DEFAULT_OS_ACCOUNT, NORMAL_STR, nullptr);
83 }
84
GroupOperationTest07(void)85 static void GroupOperationTest07(void)
86 {
87 (void)IsGroupOwner(DEFAULT_OS_ACCOUNT, NORMAL_STR, NORMAL_STR);
88 }
89
GroupOperationTest08(void)90 static void GroupOperationTest08(void)
91 {
92 (void)IsGroupExistByGroupId(DEFAULT_OS_ACCOUNT, nullptr);
93 }
94
GroupOperationTest09(void)95 static void GroupOperationTest09(void)
96 {
97 (void)CheckGroupAccessible(DEFAULT_OS_ACCOUNT, nullptr, NORMAL_STR);
98 }
99
GroupOperationTest10(void)100 static void GroupOperationTest10(void)
101 {
102 (void)CheckGroupAccessible(DEFAULT_OS_ACCOUNT, NORMAL_STR, nullptr);
103 }
104
GroupOperationTest11(void)105 static void GroupOperationTest11(void)
106 {
107 (void)CheckGroupAccessible(DEFAULT_OS_ACCOUNT, NORMAL_STR, NORMAL_STR);
108 }
109
GroupOperationTest12(void)110 static void GroupOperationTest12(void)
111 {
112 (void)CheckGroupEditAllowed(DEFAULT_OS_ACCOUNT, nullptr, NORMAL_STR);
113 }
114
GroupOperationTest13(void)115 static void GroupOperationTest13(void)
116 {
117 (void)CheckGroupEditAllowed(DEFAULT_OS_ACCOUNT, NORMAL_STR, nullptr);
118 }
119
GroupOperationTest14(void)120 static void GroupOperationTest14(void)
121 {
122 (void)CheckGroupEditAllowed(DEFAULT_OS_ACCOUNT, NORMAL_STR, NORMAL_STR);
123 }
124
GroupOperationTest15(void)125 static void GroupOperationTest15(void)
126 {
127 (void)GetGroupInfo(DEFAULT_OS_ACCOUNT, &g_queryGroupParams, nullptr);
128 }
129
GroupOperationTest16(void)130 static void GroupOperationTest16(void)
131 {
132 (void)GetTrustedDevInfoById(DEFAULT_OS_ACCOUNT, nullptr, true, NORMAL_STR, nullptr);
133 }
134
GroupOperationTest17(void)135 static void GroupOperationTest17(void)
136 {
137 (void)GetTrustedDevInfoById(DEFAULT_OS_ACCOUNT, NORMAL_STR, true, nullptr, nullptr);
138 }
139
GroupOperationTest18(void)140 static void GroupOperationTest18(void)
141 {
142 (void)GetTrustedDevInfoById(DEFAULT_OS_ACCOUNT, NORMAL_STR, true, NORMAL_STR, nullptr);
143 }
144
GroupOperationTest19(void)145 static void GroupOperationTest19(void)
146 {
147 uint8_t *hashMessage = nullptr;
148 uint32_t messageSize = 0;
149 (void)GetHashMessage(nullptr, &NORMAL_BUFF, &hashMessage, &messageSize);
150 }
151
GroupOperationTest20(void)152 static void GroupOperationTest20(void)
153 {
154 uint8_t *hashMessage = nullptr;
155 uint32_t messageSize = 0;
156 (void)GetHashMessage(&NORMAL_BUFF, nullptr, &hashMessage, &messageSize);
157 }
158
GroupOperationTest21(void)159 static void GroupOperationTest21(void)
160 {
161 uint32_t messageSize = 0;
162 (void)GetHashMessage(&NORMAL_BUFF, &NORMAL_BUFF, nullptr, &messageSize);
163 }
164
GroupOperationTest22(void)165 static void GroupOperationTest22(void)
166 {
167 uint8_t *hashMessage = nullptr;
168 (void)GetHashMessage(&NORMAL_BUFF, &NORMAL_BUFF, &hashMessage, nullptr);
169 }
170
GroupOperationTest23(void)171 static void GroupOperationTest23(void)
172 {
173 (void)GetCurDeviceNumByGroupId(DEFAULT_OS_ACCOUNT, nullptr);
174 }
175
GroupOperationTest24(void)176 static void GroupOperationTest24(void)
177 {
178 (void)AssertPeerDeviceNotSelf(nullptr);
179 }
180
GroupOperationTest25(void)181 static void GroupOperationTest25(void)
182 {
183 char localUdid[INPUT_UDID_LEN] = { 0 };
184 (void)HcGetUdid((uint8_t *)localUdid, INPUT_UDID_LEN);
185 (void)AssertPeerDeviceNotSelf(localUdid);
186 }
187
GroupOperationTest26(void)188 static void GroupOperationTest26(void)
189 {
190 (void)CheckGroupExist(DEFAULT_OS_ACCOUNT, nullptr);
191 }
192
GroupOperationTest27(void)193 static void GroupOperationTest27(void)
194 {
195 CJson *jsonParams = CreateJson();
196 (void)AddGroupToDatabaseByJson(DEFAULT_OS_ACCOUNT, nullptr, jsonParams, NORMAL_STR);
197 FreeJson(jsonParams);
198 }
199
GroupOperationTest28(void)200 static void GroupOperationTest28(void)
201 {
202 (void)AddGroupToDatabaseByJson(DEFAULT_OS_ACCOUNT, GenerateGroupParams, nullptr, NORMAL_STR);
203 }
204
GroupOperationTest29(void)205 static void GroupOperationTest29(void)
206 {
207 CJson *jsonParams = CreateJson();
208 (void)AddGroupToDatabaseByJson(DEFAULT_OS_ACCOUNT, GenerateGroupParams, jsonParams, nullptr);
209 FreeJson(jsonParams);
210 }
211
GroupOperationTest30(void)212 static void GroupOperationTest30(void)
213 {
214 CJson *jsonParams = CreateJson();
215 (void)AddDeviceToDatabaseByJson(DEFAULT_OS_ACCOUNT, nullptr, jsonParams, NORMAL_STR);
216 FreeJson(jsonParams);
217 }
218
GroupOperationTest31(void)219 static void GroupOperationTest31(void)
220 {
221 (void)AddDeviceToDatabaseByJson(DEFAULT_OS_ACCOUNT, GenerateDevParams, nullptr, NORMAL_STR);
222 }
223
GroupOperationTest32(void)224 static void GroupOperationTest32(void)
225 {
226 CJson *jsonParams = CreateJson();
227 (void)AddDeviceToDatabaseByJson(DEFAULT_OS_ACCOUNT, GenerateDevParams, jsonParams, nullptr);
228 FreeJson(jsonParams);
229 }
230
GroupOperationTest33(void)231 static void GroupOperationTest33(void)
232 {
233 (void)DelGroupFromDb(DEFAULT_OS_ACCOUNT, nullptr);
234 }
235
GroupOperationTest34(void)236 static void GroupOperationTest34(void)
237 {
238 const char *groupId = "ABCD";
239 (void)DelGroupFromDb(DEFAULT_OS_ACCOUNT, groupId);
240 }
241
GroupOperationTest35(void)242 static void GroupOperationTest35(void)
243 {
244 char *returnJsonStr = nullptr;
245 (void)ConvertGroupIdToJsonStr(nullptr, &returnJsonStr);
246 }
247
GroupOperationTest36(void)248 static void GroupOperationTest36(void)
249 {
250 (void)ConvertGroupIdToJsonStr(NORMAL_STR, nullptr);
251 }
252
GroupOperationTest37(void)253 static void GroupOperationTest37(void)
254 {
255 char *returnJsonStr = nullptr;
256 (void)GenerateBindSuccessData(nullptr, NORMAL_STR, NORMAL_STR, &returnJsonStr);
257 }
258
GroupOperationTest38(void)259 static void GroupOperationTest38(void)
260 {
261 char *returnJsonStr = nullptr;
262 (void)GenerateBindSuccessData(NORMAL_STR, nullptr, NORMAL_STR, &returnJsonStr);
263 }
264
GroupOperationTest39(void)265 static void GroupOperationTest39(void)
266 {
267 (void)GenerateBindSuccessData(NORMAL_STR, NORMAL_STR, NORMAL_STR, nullptr);
268 }
269
GroupOperationTest40(void)270 static void GroupOperationTest40(void)
271 {
272 char *returnJsonStr = nullptr;
273 (void)GenerateUnbindSuccessData(nullptr, NORMAL_STR, &returnJsonStr);
274 }
275
GroupOperationTest41(void)276 static void GroupOperationTest41(void)
277 {
278 char *returnJsonStr = nullptr;
279 (void)GenerateUnbindSuccessData(NORMAL_STR, nullptr, &returnJsonStr);
280 }
281
GroupOperationTest42(void)282 static void GroupOperationTest42(void)
283 {
284 (void)GenerateUnbindSuccessData(NORMAL_STR, NORMAL_STR, nullptr);
285 }
286
287
GroupOperationTest43(void)288 static void GroupOperationTest43(void)
289 {
290 (void)ProcessKeyPair(DEFAULT_OS_ACCOUNT, CREATE_KEY_PAIR, nullptr, NORMAL_STR);
291 }
292
GroupOperationTest44(void)293 static void GroupOperationTest44(void)
294 {
295 CJson *jsonParams = CreateJson();
296 (void)ProcessKeyPair(DEFAULT_OS_ACCOUNT, CREATE_KEY_PAIR, jsonParams, nullptr);
297 FreeJson(jsonParams);
298 }
299
GroupOperationTest45(void)300 static void GroupOperationTest45(void)
301 {
302 uint32_t groupType;
303 (void)GetGroupTypeFromDb(DEFAULT_OS_ACCOUNT, nullptr, &groupType);
304 }
305
GroupOperationTest46(void)306 static void GroupOperationTest46(void)
307 {
308 (void)GetGroupTypeFromDb(DEFAULT_OS_ACCOUNT, NORMAL_STR, nullptr);
309 }
310
GroupOperationTest47(void)311 static void GroupOperationTest47(void)
312 {
313 uint32_t groupType;
314 (void)GetGroupTypeFromDb(DEFAULT_OS_ACCOUNT, NORMAL_STR, &groupType);
315 }
316
GroupOperationTest48(void)317 static void GroupOperationTest48(void)
318 {
319 char *userId = nullptr;
320 (void)GetUserIdFromJson(nullptr, &userId);
321 }
322
GroupOperationTest49(void)323 static void GroupOperationTest49(void)
324 {
325 CJson *jsonParams = CreateJson();
326 (void)GetUserIdFromJson(jsonParams, nullptr);
327 FreeJson(jsonParams);
328 }
329
GroupOperationTest50(void)330 static void GroupOperationTest50(void)
331 {
332 char *userId = nullptr;
333 CJson *jsonParams = CreateJson();
334 (void)GetUserIdFromJson(jsonParams, &userId);
335 FreeJson(jsonParams);
336 }
337
GroupOperationTest51(void)338 static void GroupOperationTest51(void)
339 {
340 char *sharedUserId = nullptr;
341 (void)GetSharedUserIdFromJson(nullptr, &sharedUserId);
342 }
343
GroupOperationTest52(void)344 static void GroupOperationTest52(void)
345 {
346 CJson *jsonParams = CreateJson();
347 (void)GetSharedUserIdFromJson(jsonParams, nullptr);
348 FreeJson(jsonParams);
349 }
350
GroupOperationTest53(void)351 static void GroupOperationTest53(void)
352 {
353 char *sharedUserId = nullptr;
354 CJson *jsonParams = CreateJson();
355 (void)GetSharedUserIdFromJson(jsonParams, &sharedUserId);
356 FreeJson(jsonParams);
357 }
358
GroupOperationTest54(void)359 static void GroupOperationTest54(void)
360 {
361 const char *groupId = nullptr;
362 (void)GetGroupIdFromJson(nullptr, &groupId);
363 }
364
GroupOperationTest55(void)365 static void GroupOperationTest55(void)
366 {
367 CJson *jsonParams = CreateJson();
368 (void)GetGroupIdFromJson(jsonParams, nullptr);
369 FreeJson(jsonParams);
370 }
371
GroupOperationTest56(void)372 static void GroupOperationTest56(void)
373 {
374 const char *groupId = nullptr;
375 CJson *jsonParams = CreateJson();
376 (void)GetGroupIdFromJson(jsonParams, &groupId);
377 FreeJson(jsonParams);
378 }
379
GroupOperationTest57(void)380 static void GroupOperationTest57(void)
381 {
382 const char *appId = nullptr;
383 (void)GetAppIdFromJson(nullptr, &appId);
384 }
385
GroupOperationTest58(void)386 static void GroupOperationTest58(void)
387 {
388 CJson *jsonParams = CreateJson();
389 (void)GetAppIdFromJson(jsonParams, nullptr);
390 FreeJson(jsonParams);
391 }
392
GroupOperationTest59(void)393 static void GroupOperationTest59(void)
394 {
395 const char *appId = nullptr;
396 CJson *jsonParams = CreateJson();
397 (void)GetAppIdFromJson(jsonParams, &appId);
398 FreeJson(jsonParams);
399 }
400
GroupOperationTest60(void)401 static void GroupOperationTest60(void)
402 {
403 (void)AssertGroupTypeMatch(PEER_TO_PEER_GROUP, IDENTICAL_ACCOUNT_GROUP);
404 }
405
GroupOperationTest61(void)406 static void GroupOperationTest61(void)
407 {
408 char *hash = nullptr;
409 (void)GetHashResult(nullptr, SHA256_LEN, hash, SHA256_LEN);
410 }
411
GroupOperationTest62(void)412 static void GroupOperationTest62(void)
413 {
414 const uint8_t *info;
415 (void)GetHashResult(info, SHA256_LEN, nullptr, SHA256_LEN);
416 }
417
FuzzInnerPart1(void)418 static void FuzzInnerPart1(void)
419 {
420 (void)GroupOperationTest01();
421 (void)GroupOperationTest02();
422 (void)GroupOperationTest03();
423 (void)GroupOperationTest04();
424 (void)GroupOperationTest05();
425 (void)GroupOperationTest06();
426 (void)GroupOperationTest07();
427 (void)GroupOperationTest08();
428 (void)GroupOperationTest09();
429 (void)GroupOperationTest10();
430 (void)GroupOperationTest11();
431 (void)GroupOperationTest12();
432 (void)GroupOperationTest13();
433 (void)GroupOperationTest14();
434 (void)GroupOperationTest15();
435 (void)GroupOperationTest16();
436 (void)GroupOperationTest17();
437 (void)GroupOperationTest18();
438 (void)GroupOperationTest19();
439 (void)GroupOperationTest20();
440 (void)GroupOperationTest21();
441 (void)GroupOperationTest22();
442 (void)GroupOperationTest23();
443 (void)GroupOperationTest24();
444 (void)GroupOperationTest25();
445 (void)GroupOperationTest26();
446 (void)GroupOperationTest27();
447 (void)GroupOperationTest28();
448 (void)GroupOperationTest29();
449 (void)GroupOperationTest30();
450 (void)GroupOperationTest31();
451 }
452
FuzzInnerPart2(void)453 static void FuzzInnerPart2(void)
454 {
455 (void)GroupOperationTest32();
456 (void)GroupOperationTest33();
457 (void)GroupOperationTest34();
458 (void)GroupOperationTest35();
459 (void)GroupOperationTest36();
460 (void)GroupOperationTest37();
461 (void)GroupOperationTest38();
462 (void)GroupOperationTest39();
463 (void)GroupOperationTest40();
464 (void)GroupOperationTest41();
465 (void)GroupOperationTest42();
466 (void)GroupOperationTest43();
467 (void)GroupOperationTest44();
468 (void)GroupOperationTest45();
469 (void)GroupOperationTest46();
470 (void)GroupOperationTest47();
471 (void)GroupOperationTest48();
472 (void)GroupOperationTest49();
473 (void)GroupOperationTest50();
474 (void)GroupOperationTest51();
475 (void)GroupOperationTest52();
476 (void)GroupOperationTest53();
477 (void)GroupOperationTest54();
478 (void)GroupOperationTest55();
479 (void)GroupOperationTest56();
480 (void)GroupOperationTest57();
481 (void)GroupOperationTest58();
482 (void)GroupOperationTest59();
483 (void)GroupOperationTest60();
484 (void)GroupOperationTest61();
485 (void)GroupOperationTest62();
486 }
487
FuzzDoCallback(const uint8_t * data,size_t size)488 bool FuzzDoCallback(const uint8_t* data, size_t size)
489 {
490 InitDeviceAuthService();
491 (void)data;
492 (void)size;
493 (void)FuzzInnerPart1();
494 (void)FuzzInnerPart2();
495 DestroyDeviceAuthService();
496 return true;
497 }
498 }
499 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)500 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
501 {
502 /* Run your code on data */
503 OHOS::FuzzDoCallback(data, size);
504 return 0;
505 }
506
507