1 /*
2 * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <string>
17 #include <vector>
18 #include "device_manager_service.h"
19 #include "device_manager_service_fuzzer.h"
20
21 namespace OHOS {
22 namespace DistributedHardware {
DeviceManagerServiceFuzzTest(const uint8_t * data,size_t size)23 void DeviceManagerServiceFuzzTest(const uint8_t* data, size_t size)
24 {
25 if ((data == nullptr) || (size < sizeof(int32_t))) {
26 return;
27 }
28 int sessionId = *(reinterpret_cast<const int*>(data));
29 std::string inputStr(reinterpret_cast<const char*>(data), size);
30 std::string retStr;
31 DmPinType pinType = DmPinType::QR_CODE;
32 uint16_t subscribeId = 12;
33 int32_t publishId = 14;
34 DmDeviceInfo info;
35 PeerTargetId targetId;
36 DmSubscribeInfo subscribeInfo;
37 subscribeInfo.subscribeId = 1;
38 DmPublishInfo publishInfo;
39 std::map<std::string, std::string> parametricMap;
40
41 DeviceManagerService::GetInstance().StartDeviceDiscovery(inputStr, subscribeInfo, inputStr);
42 DeviceManagerService::GetInstance().PublishDeviceDiscovery(inputStr, publishInfo);
43 DeviceManagerService::GetInstance().RequestCredential(inputStr, inputStr);
44 DeviceManagerService::GetInstance().StopDeviceDiscovery(inputStr, subscribeId);
45 DeviceManagerService::GetInstance().UnPublishDeviceDiscovery(inputStr, publishId);
46 DeviceManagerService::GetInstance().StartDeviceDiscovery(inputStr, subscribeId, inputStr);
47 DeviceManagerService::GetInstance().GetDeviceInfo(inputStr, info);
48 DeviceManagerService::GetInstance().GetLocalDeviceInfo(info);
49 DeviceManagerService::GetInstance().GetDeviceSecurityLevel(inputStr, inputStr, publishId);
50 DeviceManagerService::GetInstance().ImportAuthCode(inputStr, inputStr);
51 DeviceManagerService::GetInstance().ExportAuthCode(inputStr);
52 DeviceManagerService::GetInstance().StartDiscovering(inputStr, parametricMap, parametricMap);
53 DeviceManagerService::GetInstance().StopDiscovering(inputStr, parametricMap);
54 DeviceManagerService::GetInstance().EnableDiscoveryListener(inputStr, parametricMap, parametricMap);
55 DeviceManagerService::GetInstance().DisableDiscoveryListener(inputStr, parametricMap);
56 DeviceManagerService::GetInstance().StartAdvertising(inputStr, parametricMap);
57 DeviceManagerService::GetInstance().StopAdvertising(inputStr, parametricMap);
58 DeviceManagerService::GetInstance().BindTarget(inputStr, targetId, parametricMap);
59 DeviceManagerService::GetInstance().UnbindTarget(inputStr, targetId, parametricMap);
60 DeviceManagerService::GetInstance().RegisterPinHolderCallback(inputStr);
61 DeviceManagerService::GetInstance().CreatePinHolder(inputStr, targetId, pinType, inputStr);
62 DeviceManagerService::GetInstance().DestroyPinHolder(inputStr, targetId, pinType, inputStr);
63 DeviceManagerService::GetInstance().OnPinHolderSessionOpened(sessionId, sessionId);
64 DeviceManagerService::GetInstance().OnPinHolderBytesReceived(sessionId, data, size);
65 DeviceManagerService::GetInstance().OnPinHolderSessionClosed(sessionId);
66 DeviceManagerService::GetInstance().ImportCredential(inputStr, inputStr);
67 DeviceManagerService::GetInstance().DeleteCredential(inputStr, inputStr);
68 DeviceManagerService::GetInstance().CheckCredential(inputStr, inputStr, inputStr);
69 DeviceManagerService::GetInstance().ImportCredential(inputStr, inputStr, inputStr);
70 DeviceManagerService::GetInstance().DeleteCredential(inputStr, inputStr, inputStr);
71 DeviceManagerService::GetInstance().DpAclAdd(inputStr);
72 }
73 }
74 }
75
76 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)77 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
78 {
79 /* Run your code on data */
80 OHOS::DistributedHardware::DeviceManagerServiceFuzzTest(data, size);
81
82 return 0;
83 }