• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 "setmousescrollrows_fuzzer.h"
17 
18 #include "securec.h"
19 
20 #include "input_manager.h"
21 #include "mmi_log.h"
22 
23 namespace OHOS {
24 namespace MMI {
25 namespace {
26 constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, MMI_LOG_DOMAIN, "SetMouseScrollRowsFuzzTest" };
27 } // namespace
28 
29 template<class T>
GetObject(T & object,const uint8_t * data,size_t size)30 size_t GetObject(T &object, const uint8_t *data, size_t size)
31 {
32     size_t objectSize = sizeof(object);
33     if (objectSize > size) {
34         return 0;
35     }
36     errno_t ret = memcpy_s(&object, objectSize, data, objectSize);
37     if (ret != EOK) {
38         return 0;
39     }
40     return objectSize;
41 }
42 
SetMouseScrollRowsFuzzTest(const uint8_t * data,size_t size)43 void SetMouseScrollRowsFuzzTest(const uint8_t* data, size_t size)
44 {
45     size_t startPos = 0;
46     int32_t rowsBefore;
47     int32_t rowsAfter;
48     startPos += GetObject<int32_t>(rowsBefore, data + startPos, size - startPos);
49     MMI_HILOGD("SetMouseScrollRows start");
50     InputManager::GetInstance()->SetMouseScrollRows(rowsBefore);
51     InputManager::GetInstance()->GetMouseScrollRows(rowsAfter);
52 }
53 
SetPointerSizeFuzzTest(const uint8_t * data,size_t size)54 void SetPointerSizeFuzzTest(const uint8_t* data, size_t size)
55 {
56     size_t startPos = 0;
57     int32_t pointerSizeBefore;
58     int32_t pointerSizeAfter;
59     startPos += GetObject<int32_t>(pointerSizeBefore, data + startPos, size - startPos);
60     InputManager::GetInstance()->SetPointerSize(pointerSizeBefore);
61     InputManager::GetInstance()->GetPointerSize(pointerSizeAfter);
62 }
63 
GetAllMmiSubscribedEventsFuzzTest(const uint8_t * data,size_t size)64 void GetAllMmiSubscribedEventsFuzzTest(const uint8_t* data, size_t size)
65 {
66     std::map<std::tuple<int32_t, int32_t, std::string>, int32_t> map;
67     MMI_HILOGD("GetAllMmiSubscribedEventsFuzzTest start");
68     InputManager::GetInstance()->GetAllMmiSubscribedEvents(map);
69 }
70 
SetNapStatusFuzzTest(const uint8_t * data,size_t size)71 void SetNapStatusFuzzTest(const uint8_t* data, size_t size)
72 {
73     int32_t pid = 10;
74     int32_t uid = 20;
75     std::string bundleName = "name";
76     int32_t state = 2;
77     InputManager::GetInstance()->SetNapStatus(pid, uid, bundleName, state);
78 }
79 
SetHoverScrollStateFuzzTest(const uint8_t * data,size_t size)80 void SetHoverScrollStateFuzzTest(const uint8_t* data, size_t size)
81 {
82     bool isHoverState = true;
83     InputManager::GetInstance()->SetHoverScrollState(isHoverState);
84     bool notHoverState = false;
85     InputManager::GetInstance()->SetHoverScrollState(notHoverState);
86     bool getHoverState = true;
87     InputManager::GetInstance()->GetHoverScrollState(getHoverState);
88 }
89 
PointerColorFuzzTest(const uint8_t * data,size_t size)90 void PointerColorFuzzTest(const uint8_t* data, size_t size)
91 {
92     int32_t firstColor = 0xA946F1;
93     InputManager::GetInstance()->SetPointerColor(firstColor);
94     int32_t getColor = 3;
95     InputManager::GetInstance()->GetPointerColor(getColor);
96 }
97 
ClearWindowPointerStyleFuzzTest(const uint8_t * data,size_t size)98 void ClearWindowPointerStyleFuzzTest(const uint8_t* data, size_t size)
99 {
100     int32_t pid = 0;
101     int32_t uid = 0;
102     InputManager::GetInstance()->ClearWindowPointerStyle(pid, uid);
103 }
104 
SetKeyboardRepeatDelayFuzzTest(const uint8_t * data,size_t size)105 void SetKeyboardRepeatDelayFuzzTest(const uint8_t* data, size_t size)
106 {
107     int32_t delayTime = 10;
108     InputManager::GetInstance()->SetKeyboardRepeatDelay(delayTime);
109 }
110 } // MMI
111 } // OHOS
112 
113 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)114 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
115 {
116     /* Run your code on data */
117     OHOS::MMI::SetMouseScrollRowsFuzzTest(data, size);
118     OHOS::MMI::SetPointerSizeFuzzTest(data, size);
119     OHOS::MMI::GetAllMmiSubscribedEventsFuzzTest(data, size);
120     OHOS::MMI::SetNapStatusFuzzTest(data, size);
121     OHOS::MMI::SetHoverScrollStateFuzzTest(data, size);
122     OHOS::MMI::PointerColorFuzzTest(data, size);
123     OHOS::MMI::ClearWindowPointerStyleFuzzTest(data, size);
124     OHOS::MMI::SetKeyboardRepeatDelayFuzzTest(data, size);
125     return 0;
126 }
127 
128