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