1 /*
2 * Copyright (c) 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 "stubhandleallocsocketfd_fuzzer.h"
17
18 #include "mmi_service.h"
19 #include "multimodal_input_connect_stub.h"
20
21 #undef MMI_LOG_TAG
22 #define MMI_LOG_TAG "StubHandleAllocSocketFdFuzzTest"
23
24 class UDSSession;
25 using SessionPtr = std::shared_ptr<UDSSession>;
26
27 namespace OHOS {
28 namespace MMI {
29 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" };
30 EpollEventType event_type = EPOLL_EVENT_SIGNAL;
31 InputHandlerType handlerType = NONE;
32 HandleEventType eventType = HANDLE_EVENT_TYPE_NONE;
33 int32_t tmpfd = 1;
34 uint32_t tmp32 = 1;
35 int32_t type = 1;
36 int64_t number = 1;
37 int32_t infoId = 1;
38 int32_t userId = 1;
39 int32_t deviceId = 1;
40 uint32_t frameCount = 1;
41 uint32_t vsyncCount = 1;
42 int64_t infraredFrequency = 1;
43 std::vector<int32_t> vecInt = {1, 2, 3};
44 std::vector<bool> vecBool = {1};
45 std::vector<std::u16string> argString = {u"hello", u"worid"};
46 std::vector<int64_t> patternInt = {1, 2, 3};
47 std::map<int32_t, int32_t> mpInt = {{1, 2}, {2, 2}, {3, 2}};
48 std::vector<InfraredFrequency> requencysInf = {{1, 2}, {2, 2}};
49 int32_t g_tmpDate = 1;
50 void* g_pixelMapPtr = &g_tmpDate;
51 bool g_isAuthorize = true;
52 bool g_isNativeInject = true;
53 bool g_switchFlag = true;
54 bool g_enableFlag = true;
55 bool g_rotateSwitchFlag = true;
56 bool g_stateFlag = true;
57 std::string message = "hello";
58 std::string businessId = "hello";
59 std::string flag = "hello";
60 std::shared_ptr<InputDevice> inputDevice;
61 std::shared_ptr<InputDevice> device;
62 std::shared_ptr<PointerEvent> pointerEvent;
63 std::shared_ptr<KeyOption> p_option;
64 std::shared_ptr<KeyEvent> keyEvent;
65
StubHandleAllocSocketFdFuzzTest(const uint8_t * data,size_t size)66 bool StubHandleAllocSocketFdFuzzTest(const uint8_t *data, size_t size)
67 {
68 MessageParcel datas;
69 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) ||
70 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) {
71 return false;
72 }
73 MessageParcel reply;
74 MessageOption option;
75 MMIService::GetInstance()->AddEpoll(event_type, tmpfd);
76 MMIService::GetInstance()->DelEpoll(event_type, tmpfd);
77 MMIService::GetInstance()->InitLibinputService();
78 MMIService::GetInstance()->InitDelegateTasks();
79 MMIService::GetInstance()->AddAppDebugListener();
80 MMIService::GetInstance()->SetMouseScrollRows(tmpfd);
81 MMIService::GetInstance()->SetMouseIcon(tmpfd, g_pixelMapPtr);
82 MMIService::GetInstance()->ReadMouseScrollRows(tmpfd);
83 MMIService::GetInstance()->MarkProcessed(tmpfd, tmpfd);
84 MMIService::GetInstance()->ReadPointerColor(tmpfd);
85 MMIService::GetInstance()->OnSupportKeys(tmpfd, vecInt, vecBool);
86 MMIService::GetInstance()->OnGetDeviceIds(vecInt);
87 MMIService::GetInstance()->OnGetDevice(tmpfd, inputDevice);
88 MMIService::GetInstance()->OnGetKeyboardType(tmpfd, tmpfd);
89 MMIService::GetInstance()->SetKeyboardRepeatDelay(tmpfd);
90 MMIService::GetInstance()->CheckRemoveInput(tmpfd, handlerType, eventType, tmpfd, tmp32);
91 MMIService::GetInstance()->RemoveInputHandler(handlerType, eventType, tmpfd, tmp32);
92 MMIService::GetInstance()->MarkEventConsumed(tmpfd);
93 MMIService::GetInstance()->MoveMouseEvent(tmpfd, tmpfd);
94 MMIService::GetInstance()->InjectKeyEvent(keyEvent, g_isNativeInject);
95 MMIService::GetInstance()->CheckInjectKeyEvent(keyEvent, tmpfd, g_isNativeInject);
96 MMIService::GetInstance()->OnGetKeyState(vecInt, mpInt);
97 MMIService::GetInstance()->InjectPointerEvent(pointerEvent, g_isNativeInject);
98 MMIService::GetInstance()->OnAddSystemAbility(tmpfd, "deviceId");
99 MMIService::GetInstance()->SubscribeKeyEvent(tmpfd, p_option);
100 MMIService::GetInstance()->UnsubscribeKeyEvent(tmpfd);
101 MMIService::GetInstance()->SubscribeSwitchEvent(tmpfd, tmpfd);
102 MMIService::GetInstance()->SetDisplayBind(tmpfd, tmpfd, message);
103 MMIService::GetInstance()->SetFunctionKeyState(tmpfd, g_enableFlag);
104 MMIService::GetInstance()->SetPointerLocation(tmpfd, tmpfd);
105 MMIService::GetInstance()->AddReloadDeviceTimer();
106 MMIService::GetInstance()->Dump(tmpfd, argString);
107 MMIService::GetInstance()->OnGetWindowPid(tmpfd, tmpfd);
108 MMIService::GetInstance()->GetWindowPid(tmpfd);
109 MMIService::GetInstance()->SetKeyDownDuration(businessId, tmpfd);
110 MMIService::GetInstance()->ReadTouchpadScrollSwich(g_switchFlag);
111 MMIService::GetInstance()->ReadTouchpadScrollDirection(g_switchFlag);
112 MMIService::GetInstance()->ReadTouchpadTapSwitch(g_switchFlag);
113 MMIService::GetInstance()->ReadTouchpadPointerSpeed(tmpfd);
114 MMIService::GetInstance()->ReadTouchpadPinchSwitch(g_switchFlag);
115 MMIService::GetInstance()->ReadTouchpadSwipeSwitch(g_switchFlag);
116 MMIService::GetInstance()->ReadTouchpadRightMenuType(tmpfd);
117 MMIService::GetInstance()->ReadTouchpadRotateSwitch(g_rotateSwitchFlag);
118 MMIService::GetInstance()->SetTouchpadScrollSwitch(g_switchFlag);
119 MMIService::GetInstance()->GetTouchpadScrollSwitch(g_switchFlag);
120 MMIService::GetInstance()->SetTouchpadScrollDirection(g_stateFlag);
121 MMIService::GetInstance()->GetTouchpadScrollDirection(g_stateFlag);
122 MMIService::GetInstance()->SetTouchpadTapSwitch(g_switchFlag);
123 MMIService::GetInstance()->GetTouchpadTapSwitch(g_switchFlag);
124 MMIService::GetInstance()->SetTouchpadPointerSpeed(tmpfd);
125 MMIService::GetInstance()->GetTouchpadPointerSpeed(tmpfd);
126 MMIService::GetInstance()->SetTouchpadPinchSwitch(g_switchFlag);
127 MMIService::GetInstance()->GetTouchpadPinchSwitch(g_switchFlag);
128 MMIService::GetInstance()->SetTouchpadSwipeSwitch(g_switchFlag);
129 MMIService::GetInstance()->GetTouchpadSwipeSwitch(g_switchFlag);
130 MMIService::GetInstance()->SetTouchpadRightClickType(type);
131 MMIService::GetInstance()->SetTouchpadRotateSwitch(g_rotateSwitchFlag);
132 MMIService::GetInstance()->GetTouchpadRotateSwitch(g_rotateSwitchFlag);
133 MMIService::GetInstance()->GetKeyState(vecInt, mpInt);
134 MMIService::GetInstance()->Authorize(g_isAuthorize);
135 MMIService::GetInstance()->OnAuthorize(g_isAuthorize);
136 MMIService::GetInstance()->CancelInjection();
137 MMIService::GetInstance()->OnCancelInjection();
138 MMIService::GetInstance()->GetInfraredFrequencies(requencysInf);
139 MMIService::GetInstance()->TransmitInfrared(number, patternInt);
140 MMIService::GetInstance()->OnGetInfraredFrequencies(requencysInf);
141 MMIService::GetInstance()->OnTransmitInfrared(infraredFrequency, patternInt);
142 MMIService::GetInstance()->SetPixelMapData(infoId, g_pixelMapPtr);
143 MMIService::GetInstance()->SetCurrentUser(userId);
144 MMIService::GetInstance()->AddVirtualInputDevice(device, deviceId);
145 MMIService::GetInstance()->RemoveVirtualInputDevice(tmpfd);
146 MMIService::GetInstance()->EnableHardwareCursorStats(g_enableFlag);
147 MMIService::GetInstance()->GetHardwareCursorStats(frameCount, vsyncCount);
148 #ifdef OHOS_BUILD_ENABLE_MAGICCURSOR
149 MMIService::GetInstance()->GetPointerSnapshot(g_pixelMapPtr);
150 #endif // OHOS_BUILD_ENABLE_MAGICCURSOR
151 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING;
152 MMIService::GetInstance()->OnRemoteRequest(
153 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::ALLOC_SOCKET_FD), datas, reply, option);
154 return true;
155 }
156 } // MMI
157 } // OHOS
158
159 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)160 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
161 {
162 /* Run your code on data */
163 if (data == nullptr) {
164 return 0;
165 }
166
167 OHOS::MMI::StubHandleAllocSocketFdFuzzTest(data, size);
168 return 0;
169 }
170