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 "stubunsubscribeswitchevent_fuzzer.h" 17 18#include "mmi_log.h" 19#include "mmi_service.h" 20#include "multimodal_input_connect_stub.h" 21 22#undef MMI_LOG_TAG 23#define MMI_LOG_TAG "StubUnsubscribeSwitchEventFuzzTest" 24 25namespace OHOS { 26namespace MMI { 27namespace OHOS { 28bool StubUnsubscribeSwitchEventFuzzTest(const uint8_t* data, size_t size) 29{ 30 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 31 MessageParcel datas; 32 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 33 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 34 return false; 35 } 36 MessageParcel reply; 37 MessageOption option; 38 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 39 MMIService::GetInstance()->OnRemoteRequest( 40 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::UNSUBSCRIBE_SWITCH_EVENT), datas, reply, option); 41 return true; 42} 43 44bool StubSetTouchpadRotateSwitchFuzzTest(const uint8_t* data, size_t size) 45{ 46 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 47 MessageParcel datas; 48 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 49 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 50 return false; 51 } 52 MessageParcel reply; 53 MessageOption option; 54 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 55 MMIService::GetInstance()->OnRemoteRequest( 56 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::SET_TP_ROTATE_SWITCH), datas, reply, option); 57 return true; 58} 59 60bool StubGetTouchpadRotateSwitchFuzzTest(const uint8_t* data, size_t size) 61{ 62 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 63 MessageParcel datas; 64 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 65 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 66 return false; 67 } 68 MessageParcel reply; 69 MessageOption option; 70 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 71 MMIService::GetInstance()->OnRemoteRequest( 72 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::GET_TP_ROTATE_SWITCH), datas, reply, option); 73 return true; 74} 75 76bool StubGetKeyStateFuzzTest(const uint8_t* data, size_t size) 77{ 78 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 79 MessageParcel datas; 80 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 81 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 82 return false; 83 } 84 MessageParcel reply; 85 MessageOption option; 86 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 87 MMIService::GetInstance()->OnRemoteRequest( 88 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::GET_KEY_STATE), datas, reply, option); 89 return true; 90} 91 92bool StubAuthorizeFuzzTest(const uint8_t* data, size_t size) 93{ 94 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 95 MessageParcel datas; 96 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 97 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 98 return false; 99 } 100 MessageParcel reply; 101 MessageOption option; 102 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 103 MMIService::GetInstance()->OnRemoteRequest( 104 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::NATIVE_AUTHORIZE), datas, reply, option); 105 return true; 106} 107 108bool StubCancelInjectionFuzzTest(const uint8_t* data, size_t size) 109{ 110 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 111 MessageParcel datas; 112 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 113 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 114 return false; 115 } 116 MessageParcel reply; 117 MessageOption option; 118 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 119 MMIService::GetInstance()->OnRemoteRequest( 120 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_INJECTION), datas, reply, option); 121 return true; 122} 123 124bool StubHasIrEmitterFuzzTest(const uint8_t* data, size_t size) 125{ 126 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 127 MessageParcel datas; 128 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 129 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 130 return false; 131 } 132 MessageParcel reply; 133 MessageOption option; 134 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 135 MMIService::GetInstance()->OnRemoteRequest( 136 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_OWN), datas, reply, option); 137 return true; 138} 139 140bool StubGetInfraredFrequenciesFuzzTest(const uint8_t* data, size_t size) 141{ 142 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 143 MessageParcel datas; 144 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 145 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 146 return false; 147 } 148 MessageParcel reply; 149 MessageOption option; 150 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 151 MMIService::GetInstance()->OnRemoteRequest( 152 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::NATIVE_INFRARED_FREQUENCY), datas, reply, option); 153 return true; 154} 155 156bool StubTransmitInfraredFuzzTest(const uint8_t* data, size_t size) 157{ 158 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 159 MessageParcel datas; 160 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 161 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 162 return false; 163 } 164 MessageParcel reply; 165 MessageOption option; 166 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 167 MMIService::GetInstance()->OnRemoteRequest( 168 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::NATIVE_CANCEL_TRANSMIT), datas, reply, option); 169 return true; 170} 171 172bool StubSetPixelMapDataFuzzTest(const uint8_t* data, size_t size) 173{ 174 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 175 MessageParcel datas; 176 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 177 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 178 return false; 179 } 180 MessageParcel reply; 181 MessageOption option; 182 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 183 MMIService::GetInstance()->OnRemoteRequest( 184 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::SET_PIXEL_MAP_DATA), datas, reply, option); 185 return true; 186} 187 188bool StubSetCurrentUserFuzzTest(const uint8_t* data, size_t size) 189{ 190 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 191 MessageParcel datas; 192 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 193 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 194 return false; 195 } 196 MessageParcel reply; 197 MessageOption option; 198 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 199 MMIService::GetInstance()->OnRemoteRequest( 200 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::SET_CURRENT_USERID), datas, reply, option); 201 return true; 202} 203 204bool StubEnableHardwareCursorStatsFuzzTest(const uint8_t* data, size_t size) 205{ 206 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 207 MessageParcel datas; 208 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 209 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 210 return false; 211 } 212 MessageParcel reply; 213 MessageOption option; 214 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 215 MMIService::GetInstance()->OnRemoteRequest( 216 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::ENABLE_HARDWARE_CURSOR_STATS), 217 datas, reply, option); 218 return true; 219} 220 221bool StubGetHardwareCursorStatsFuzzTest(const uint8_t* data, size_t size) 222{ 223 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 224 MessageParcel datas; 225 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 226 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 227 return false; 228 } 229 MessageParcel reply; 230 MessageOption option; 231 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 232 MMIService::GetInstance()->OnRemoteRequest( 233 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::GET_HARDWARE_CURSOR_STATS), datas, reply, option); 234 return true; 235} 236 237bool StubAddVirtualInputDeviceFuzzTest(const uint8_t* data, size_t size) 238{ 239 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 240 MessageParcel datas; 241 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 242 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 243 return false; 244 } 245 MessageParcel reply; 246 MessageOption option; 247 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 248 MMIService::GetInstance()->OnRemoteRequest( 249 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::ADD_VIRTUAL_INPUT_DEVICE), datas, reply, option); 250 return true; 251} 252 253bool StubRemoveVirtualInputDeviceFuzzTest(const uint8_t* data, size_t size) 254{ 255 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 256 MessageParcel datas; 257 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 258 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 259 return false; 260 } 261 MessageParcel reply; 262 MessageOption option; 263 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 264 MMIService::GetInstance()->OnRemoteRequest( 265 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::REMOVE_VIRTUAL_INPUT_DEVICE), datas, reply, option); 266 return true; 267} 268 269bool StubTransferBinderClientServiceFuzzTest(const uint8_t* data, size_t size) 270{ 271 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 272 MessageParcel datas; 273 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 274 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 275 return false; 276 } 277 MessageParcel reply; 278 MessageOption option; 279 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 280 MMIService::GetInstance()->OnRemoteRequest( 281 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::TRANSFER_BINDER_CLIENT_SERVICE), 282 datas, reply, option); 283 return true; 284} 285 286#ifdef OHOS_BUILD_ENABLE_MAGICCURSOR 287bool StubGetPointerSnapshotFuzzTest(const uint8_t* data, size_t size) 288{ 289 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 290 MessageParcel datas; 291 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 292 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 293 return false; 294 } 295 MessageParcel reply; 296 MessageOption option; 297 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 298 MMIService::GetInstance()->OnRemoteRequest( 299 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::GET_POINTER_SNAPSHOT), datas, reply, option); 300 return true; 301} 302#endif // OHOS_BUILD_ENABLE_MAGICCURSOR 303 304bool StubSkipPointerLayerFuzzTest(const uint8_t* data, size_t size) 305{ 306 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 307 MessageParcel datas; 308 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 309 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 310 return false; 311 } 312 MessageParcel reply; 313 MessageOption option; 314 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 315 MMIService::GetInstance()->OnRemoteRequest( 316 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::SKIP_POINTER_LAYER), datas, reply, option); 317 return true; 318} 319 320bool StubMarkEventConsumedFuzzTest(const uint8_t* data, size_t size) 321{ 322 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 323 MessageParcel datas; 324 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 325 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 326 return false; 327 } 328 MessageParcel reply; 329 MessageOption option; 330 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 331 MMIService::GetInstance()->OnRemoteRequest( 332 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::MARK_EVENT_CONSUMED), datas, reply, option); 333 return true; 334} 335 336bool StubGetDeviceFuzzTest(const uint8_t* data, size_t size) 337{ 338 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 339 MessageParcel datas; 340 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 341 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 342 return false; 343 } 344 MessageParcel reply; 345 MessageOption option; 346 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 347 MMIService::GetInstance()->OnRemoteRequest( 348 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::GET_DEVICE), datas, reply, option); 349 return true; 350} 351 352bool StubSetTouchpadThreeFingersTapSwitchFuzzTest(const uint8_t* data, size_t size) 353{ 354 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 355 MessageParcel datas; 356 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 357 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 358 return false; 359 } 360 MessageParcel reply; 361 MessageOption option; 362 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 363 MMIService::GetInstance()->OnRemoteRequest( 364 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::SET_THREE_GINGERS_TAPSWITCH), datas, reply, option); 365 return true; 366} 367 368bool StubGetTouchpadThreeFingersTapSwitchFuzzTest(const uint8_t* data, size_t size) 369{ 370 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 371 MessageParcel datas; 372 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 373 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 374 return false; 375 } 376 MessageParcel reply; 377 MessageOption option; 378 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 379 MMIService::GetInstance()->OnRemoteRequest( 380 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::GET_THREE_GINGERS_TAPSWITCH), datas, reply, option); 381 return true; 382} 383 384#ifdef OHOS_BUILD_ENABLE_ANCO 385bool StubAncoAddChannelFuzzTest(const uint8_t* data, size_t size) 386{ 387 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 388 MessageParcel datas; 389 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 390 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 391 return false; 392 } 393 MessageParcel reply; 394 MessageOption option; 395 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 396 MMIService::GetInstance()->OnRemoteRequest( 397 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::ADD_ANCO_CHANNEL), datas, reply, option); 398 return true; 399} 400 401bool StubAncoRemoveChannelFuzzTest(const uint8_t* data, size_t size) 402{ 403 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 404 MessageParcel datas; 405 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 406 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 407 return false; 408 } 409 MessageParcel reply; 410 MessageOption option; 411 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 412 MMIService::GetInstance()->OnRemoteRequest( 413 static_cast<uint32_t>(MultimodalinputConnectInterfaceCode::REMOVE_ANCO_CHANNEL), datas, reply, option); 414 return true; 415} 416#endif // OHOS_BUILD_ENABLE_ANCO 417 418bool switchDefaultFuzzTest(const uint8_t* data, size_t size) 419{ 420 const std::u16string FORMMGR_INTERFACE_TOKEN { u"ohos.multimodalinput.IConnectManager" }; 421 MessageParcel datas; 422 if (!datas.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN) || 423 !datas.WriteBuffer(data, size) || !datas.RewindRead(0)) { 424 return false; 425 } 426 MessageParcel reply; 427 MessageOption option; 428 MMIService::GetInstance()->state_ = ServiceRunningState::STATE_RUNNING; 429 uint32_t code = 1000; 430 MMIService::GetInstance()->OnRemoteRequest(code, datas, reply, option); 431 return true; 432} 433} // namespace OHOS 434 435extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) 436{ 437 /* Run your code on data */ 438 if (data == nullptr) { 439 return 0; 440 } 441 442 OHOS::StubUnsubscribeSwitchEventFuzzTest(data, size); 443 OHOS::StubSetTouchpadRotateSwitchFuzzTest(data, size); 444 OHOS::StubGetTouchpadRotateSwitchFuzzTest(data, size); 445 OHOS::StubGetKeyStateFuzzTest(data, size); 446 OHOS::StubAuthorizeFuzzTest(data, size); 447 OHOS::StubCancelInjectionFuzzTest(data, size); 448 OHOS::StubHasIrEmitterFuzzTest(data, size); 449 OHOS::StubGetInfraredFrequenciesFuzzTest(data, size); 450 OHOS::StubTransmitInfraredFuzzTest(data, size); 451 OHOS::StubSetPixelMapDataFuzzTest(data, size); 452 OHOS::StubSetCurrentUserFuzzTest(data, size); 453 OHOS::StubEnableHardwareCursorStatsFuzzTest(data, size); 454 OHOS::StubGetHardwareCursorStatsFuzzTest(data, size); 455 OHOS::StubAddVirtualInputDeviceFuzzTest(data, size); 456 OHOS::StubRemoveVirtualInputDeviceFuzzTest(data, size); 457 OHOS::StubTransferBinderClientServiceFuzzTest(data, size); 458#ifdef OHOS_BUILD_ENABLE_MAGICCURSOR 459 OHOS::StubGetPointerSnapshotFuzzTest(data, size); 460#endif // OHOS_BUILD_ENABLE_MAGICCURSOR 461 OHOS::StubSkipPointerLayerFuzzTest(data, size); 462 OHOS::StubMarkEventConsumedFuzzTest(data, size); 463 OHOS::StubGetDeviceFuzzTest(data, size); 464 OHOS::StubSetTouchpadThreeFingersTapSwitchFuzzTest(data, size); 465 OHOS::StubGetTouchpadThreeFingersTapSwitchFuzzTest(data, size); 466#ifdef OHOS_BUILD_ENABLE_ANCO 467 OHOS::StubAncoAddChannelFuzzTest(data, size); 468 OHOS::StubAncoRemoveChannelFuzzTest(data, size); 469#endif // OHOS_BUILD_ENABLE_ANCO 470 OHOS::switchDefaultFuzzTest(data, size); 471 return 0; 472} 473} // namespace MMI 474} // namespace OHOS