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 }