1 /*
2 * Copyright (c) 2022-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 "dcameraenabledcameradevice_fuzzer.h"
17
18 #include <cstddef>
19 #include <cstdint>
20
21 #include "dcamera_provider.h"
22 #include "v1_1/id_camera_provider_callback.h"
23
24 namespace OHOS {
25 namespace DistributedHardware {
26
27 class MockDCameraProviderCallbackImpl : public IDCameraProviderCallback {
28 public:
MockDCameraProviderCallbackImpl(const std::string & devId,const std::string & dhId)29 MockDCameraProviderCallbackImpl(const std::string& devId, const std::string& dhId) : devId_(devId), dhId_(dhId)
30 {
31 }
32 ~MockDCameraProviderCallbackImpl() = default;
33
OpenSession(const DHBase & dhBase)34 int32_t OpenSession(const DHBase& dhBase)
35 {
36 return DCamRetCode::SUCCESS;
37 }
CloseSession(const DHBase & dhBase)38 int32_t CloseSession(const DHBase& dhBase)
39 {
40 return DCamRetCode::SUCCESS;
41 }
ConfigureStreams(const DHBase & dhBase,const std::vector<DCStreamInfo> & streamInfos)42 int32_t ConfigureStreams(const DHBase& dhBase, const std::vector<DCStreamInfo>& streamInfos)
43 {
44 return DCamRetCode::SUCCESS;
45 }
ReleaseStreams(const DHBase & dhBase,const std::vector<int> & streamIds)46 int32_t ReleaseStreams(const DHBase& dhBase, const std::vector<int>& streamIds)
47 {
48 return DCamRetCode::SUCCESS;
49 }
StartCapture(const DHBase & dhBase,const std::vector<DCCaptureInfo> & captureInfos)50 int32_t StartCapture(const DHBase& dhBase, const std::vector<DCCaptureInfo>& captureInfos)
51 {
52 return DCamRetCode::SUCCESS;
53 }
StopCapture(const DHBase & dhBase,const std::vector<int> & streamIds)54 int32_t StopCapture(const DHBase& dhBase, const std::vector<int>& streamIds)
55 {
56 return DCamRetCode::SUCCESS;
57 }
UpdateSettings(const DHBase & dhBase,const std::vector<DCameraSettings> & settings)58 int32_t UpdateSettings(const DHBase& dhBase, const std::vector<DCameraSettings>& settings)
59 {
60 return DCamRetCode::SUCCESS;
61 }
NotifyEvent(const DHBase & dhBase,const DCameraHDFEvent & event)62 int32_t NotifyEvent(const DHBase& dhBase, const DCameraHDFEvent& event)
63 {
64 return DCamRetCode::SUCCESS;
65 }
66
67 private:
68 std::string devId_;
69 std::string dhId_;
70 };
71
DcameraEnableDCameraDeviceFuzzTest(const uint8_t * data,size_t size)72 void DcameraEnableDCameraDeviceFuzzTest(const uint8_t* data, size_t size)
73 {
74 if ((data == nullptr) || (size == 0)) {
75 return;
76 }
77 std::string deviceId = "1";
78 std::string dhId = "2";
79 std::string abilityInfo(reinterpret_cast<const char*>(data), size);
80 DHBase dhBase;
81 dhBase.deviceId_ = deviceId;
82 dhBase.dhId_ = dhId;
83
84 sptr<IDCameraProviderCallback> callback(new MockDCameraProviderCallbackImpl(deviceId, dhId));
85
86 DCameraProvider::GetInstance()->EnableDCameraDevice(dhBase, abilityInfo, callback);
87 }
88 }
89 }
90
91 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)92 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
93 {
94 /* Run your code on data */
95 OHOS::DistributedHardware::DcameraEnableDCameraDeviceFuzzTest(data, size);
96 return 0;
97 }
98
99