1d95e75fdSopenharmony_ci/*
2d95e75fdSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3d95e75fdSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4d95e75fdSopenharmony_ci * you may not use this file except in compliance with the License.
5d95e75fdSopenharmony_ci * You may obtain a copy of the License at
6d95e75fdSopenharmony_ci *
7d95e75fdSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8d95e75fdSopenharmony_ci *
9d95e75fdSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10d95e75fdSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11d95e75fdSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12d95e75fdSopenharmony_ci * See the License for the specific language governing permissions and
13d95e75fdSopenharmony_ci * limitations under the License.
14d95e75fdSopenharmony_ci */
15d95e75fdSopenharmony_ci
16d95e75fdSopenharmony_ci#include "setimsfeaturevalue_fuzzer.h"
17d95e75fdSopenharmony_ci
18d95e75fdSopenharmony_ci#include <cstddef>
19d95e75fdSopenharmony_ci#include <cstdint>
20d95e75fdSopenharmony_ci#define private public
21d95e75fdSopenharmony_ci#include "addcellularcalltoken_fuzzer.h"
22d95e75fdSopenharmony_ci#include "cellular_call_service.h"
23d95e75fdSopenharmony_ci#include "securec.h"
24d95e75fdSopenharmony_ci#include "system_ability_definition.h"
25d95e75fdSopenharmony_ci
26d95e75fdSopenharmony_ciusing namespace OHOS::Telephony;
27d95e75fdSopenharmony_cinamespace OHOS {
28d95e75fdSopenharmony_cistatic bool g_isInited = false;
29d95e75fdSopenharmony_ciconstexpr int32_t BOOL_NUM = 2;
30d95e75fdSopenharmony_ciconstexpr int32_t INT_NUM = 2;
31d95e75fdSopenharmony_ciconstexpr int32_t VEDIO_STATE_NUM = 2;
32d95e75fdSopenharmony_ciconstexpr int32_t OFFSET_SIZE = 11;
33d95e75fdSopenharmony_ciconstexpr size_t MAX_NUMBER_LEN = 99;
34d95e75fdSopenharmony_ciconstexpr int32_t IMS_CONFIG_ITEM_NUM = 2;
35d95e75fdSopenharmony_ciconstexpr int32_t FEATURE_TYPE_NUM = 3;
36d95e75fdSopenharmony_ciconstexpr int32_t MAX_SIZE = 10;
37d95e75fdSopenharmony_ci
38d95e75fdSopenharmony_cibool IsServiceInited()
39d95e75fdSopenharmony_ci{
40d95e75fdSopenharmony_ci    if (!g_isInited) {
41d95e75fdSopenharmony_ci        DelayedSingleton<CellularCallService>::GetInstance()->OnStart();
42d95e75fdSopenharmony_ci    }
43d95e75fdSopenharmony_ci    if (!g_isInited && (static_cast<int32_t>(DelayedSingleton<CellularCallService>::GetInstance()->state_) ==
44d95e75fdSopenharmony_ci                           static_cast<int32_t>(ServiceRunningState::STATE_RUNNING))) {
45d95e75fdSopenharmony_ci        g_isInited = true;
46d95e75fdSopenharmony_ci    }
47d95e75fdSopenharmony_ci    return g_isInited;
48d95e75fdSopenharmony_ci}
49d95e75fdSopenharmony_ci
50d95e75fdSopenharmony_civoid OnRemoteRequest(const uint8_t *data, size_t size)
51d95e75fdSopenharmony_ci{
52d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
53d95e75fdSopenharmony_ci        return;
54d95e75fdSopenharmony_ci    }
55d95e75fdSopenharmony_ci
56d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
57d95e75fdSopenharmony_ci    if (!dataMessageParcel.WriteInterfaceToken(CellularCallStub::GetDescriptor())) {
58d95e75fdSopenharmony_ci        return;
59d95e75fdSopenharmony_ci    }
60d95e75fdSopenharmony_ci    int32_t maxSize = static_cast<int32_t>(size) + OFFSET_SIZE;
61d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(maxSize);
62d95e75fdSopenharmony_ci    dataMessageParcel.WriteBuffer(data, size);
63d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
64d95e75fdSopenharmony_ci    uint32_t code = static_cast<uint32_t>(size);
65d95e75fdSopenharmony_ci    MessageParcel reply;
66d95e75fdSopenharmony_ci    MessageOption option;
67d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnRemoteRequest(code, dataMessageParcel, reply, option);
68d95e75fdSopenharmony_ci}
69d95e75fdSopenharmony_ci
70d95e75fdSopenharmony_civoid SetDomainPreferenceMode(const uint8_t *data, size_t size)
71d95e75fdSopenharmony_ci{
72d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
73d95e75fdSopenharmony_ci        return;
74d95e75fdSopenharmony_ci    }
75d95e75fdSopenharmony_ci
76d95e75fdSopenharmony_ci    int32_t mode = static_cast<int32_t>(size);
77d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
78d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(mode);
79d95e75fdSopenharmony_ci    dataMessageParcel.WriteBuffer(data, size);
80d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
81d95e75fdSopenharmony_ci    MessageParcel reply;
82d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnSetDomainPreferenceModeInner(dataMessageParcel, reply);
83d95e75fdSopenharmony_ci}
84d95e75fdSopenharmony_ci
85d95e75fdSopenharmony_civoid GetDomainPreferenceMode(const uint8_t *data, size_t size)
86d95e75fdSopenharmony_ci{
87d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
88d95e75fdSopenharmony_ci        return;
89d95e75fdSopenharmony_ci    }
90d95e75fdSopenharmony_ci
91d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
92d95e75fdSopenharmony_ci    dataMessageParcel.WriteBuffer(data, size);
93d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
94d95e75fdSopenharmony_ci    MessageParcel reply;
95d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnSetDomainPreferenceModeInner(dataMessageParcel, reply);
96d95e75fdSopenharmony_ci}
97d95e75fdSopenharmony_ci
98d95e75fdSopenharmony_civoid SetImsSwitchStatus(const uint8_t *data, size_t size)
99d95e75fdSopenharmony_ci{
100d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
101d95e75fdSopenharmony_ci        return;
102d95e75fdSopenharmony_ci    }
103d95e75fdSopenharmony_ci
104d95e75fdSopenharmony_ci    int32_t activate = static_cast<int32_t>(size % BOOL_NUM);
105d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
106d95e75fdSopenharmony_ci    dataMessageParcel.WriteBool(activate);
107d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
108d95e75fdSopenharmony_ci    MessageParcel reply;
109d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnSetImsSwitchStatusInner(dataMessageParcel, reply);
110d95e75fdSopenharmony_ci}
111d95e75fdSopenharmony_ci
112d95e75fdSopenharmony_civoid GetImsSwitchStatus(const uint8_t *data, size_t size)
113d95e75fdSopenharmony_ci{
114d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
115d95e75fdSopenharmony_ci        return;
116d95e75fdSopenharmony_ci    }
117d95e75fdSopenharmony_ci
118d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
119d95e75fdSopenharmony_ci    dataMessageParcel.WriteBuffer(data, size);
120d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
121d95e75fdSopenharmony_ci    MessageParcel reply;
122d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnGetImsSwitchStatusInner(dataMessageParcel, reply);
123d95e75fdSopenharmony_ci}
124d95e75fdSopenharmony_ci
125d95e75fdSopenharmony_civoid SetVoNRSwitchStatus(const uint8_t *data, size_t size)
126d95e75fdSopenharmony_ci{
127d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
128d95e75fdSopenharmony_ci        return;
129d95e75fdSopenharmony_ci    }
130d95e75fdSopenharmony_ci
131d95e75fdSopenharmony_ci    int32_t state = static_cast<int32_t>(size % INT_NUM);
132d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
133d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(state);
134d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
135d95e75fdSopenharmony_ci    MessageParcel reply;
136d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnSetVoNRStateInner(dataMessageParcel, reply);
137d95e75fdSopenharmony_ci}
138d95e75fdSopenharmony_ci
139d95e75fdSopenharmony_civoid GetVoNRSwitchStatus(const uint8_t *data, size_t size)
140d95e75fdSopenharmony_ci{
141d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
142d95e75fdSopenharmony_ci        return;
143d95e75fdSopenharmony_ci    }
144d95e75fdSopenharmony_ci
145d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
146d95e75fdSopenharmony_ci    dataMessageParcel.WriteBuffer(data, size);
147d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
148d95e75fdSopenharmony_ci    MessageParcel reply;
149d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnGetVoNRStateInner(dataMessageParcel, reply);
150d95e75fdSopenharmony_ci}
151d95e75fdSopenharmony_ci
152d95e75fdSopenharmony_civoid GetImsConfig(const uint8_t *data, size_t size)
153d95e75fdSopenharmony_ci{
154d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
155d95e75fdSopenharmony_ci        return;
156d95e75fdSopenharmony_ci    }
157d95e75fdSopenharmony_ci
158d95e75fdSopenharmony_ci    int32_t slotId = static_cast<int32_t>(size % BOOL_NUM);
159d95e75fdSopenharmony_ci    int32_t item = static_cast<int32_t>(size % IMS_CONFIG_ITEM_NUM);
160d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
161d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(MAX_SIZE);
162d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(slotId);
163d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(item);
164d95e75fdSopenharmony_ci    dataMessageParcel.WriteBuffer(data, size);
165d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
166d95e75fdSopenharmony_ci    MessageParcel reply;
167d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnGetImsConfigInner(dataMessageParcel, reply);
168d95e75fdSopenharmony_ci}
169d95e75fdSopenharmony_ci
170d95e75fdSopenharmony_civoid SetImsConfig(const uint8_t *data, size_t size)
171d95e75fdSopenharmony_ci{
172d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
173d95e75fdSopenharmony_ci        return;
174d95e75fdSopenharmony_ci    }
175d95e75fdSopenharmony_ci
176d95e75fdSopenharmony_ci    int32_t slotId = static_cast<int32_t>(size % BOOL_NUM);
177d95e75fdSopenharmony_ci    int32_t item = static_cast<int32_t>(size % IMS_CONFIG_ITEM_NUM);
178d95e75fdSopenharmony_ci    std::string value(reinterpret_cast<const char *>(data), size);
179d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
180d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(MAX_SIZE);
181d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(slotId);
182d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(item);
183d95e75fdSopenharmony_ci    dataMessageParcel.WriteString(value);
184d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
185d95e75fdSopenharmony_ci    MessageParcel reply;
186d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnSetImsConfigStringInner(dataMessageParcel, reply);
187d95e75fdSopenharmony_ci}
188d95e75fdSopenharmony_ci
189d95e75fdSopenharmony_civoid GetImsFeatureValue(const uint8_t *data, size_t size)
190d95e75fdSopenharmony_ci{
191d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
192d95e75fdSopenharmony_ci        return;
193d95e75fdSopenharmony_ci    }
194d95e75fdSopenharmony_ci
195d95e75fdSopenharmony_ci    int32_t slotId = static_cast<int32_t>(size % BOOL_NUM);
196d95e75fdSopenharmony_ci    int32_t type = static_cast<int32_t>(size % FEATURE_TYPE_NUM);
197d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
198d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(MAX_SIZE);
199d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(slotId);
200d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(type);
201d95e75fdSopenharmony_ci    dataMessageParcel.WriteBuffer(data, size);
202d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
203d95e75fdSopenharmony_ci    MessageParcel reply;
204d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnGetImsFeatureValueInner(dataMessageParcel, reply);
205d95e75fdSopenharmony_ci}
206d95e75fdSopenharmony_ci
207d95e75fdSopenharmony_civoid SetImsFeatureValue(const uint8_t *data, size_t size)
208d95e75fdSopenharmony_ci{
209d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
210d95e75fdSopenharmony_ci        return;
211d95e75fdSopenharmony_ci    }
212d95e75fdSopenharmony_ci
213d95e75fdSopenharmony_ci    int32_t slotId = static_cast<int32_t>(size % BOOL_NUM);
214d95e75fdSopenharmony_ci    int32_t type = static_cast<int32_t>(size % FEATURE_TYPE_NUM);
215d95e75fdSopenharmony_ci    int32_t value = static_cast<int32_t>(size);
216d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
217d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(MAX_SIZE);
218d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(slotId);
219d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(type);
220d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(value);
221d95e75fdSopenharmony_ci    dataMessageParcel.WriteBuffer(data, size);
222d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
223d95e75fdSopenharmony_ci    MessageParcel reply;
224d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnSetImsFeatureValueInner(dataMessageParcel, reply);
225d95e75fdSopenharmony_ci}
226d95e75fdSopenharmony_ci
227d95e75fdSopenharmony_civoid Reject(const uint8_t *data, size_t size)
228d95e75fdSopenharmony_ci{
229d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
230d95e75fdSopenharmony_ci        return;
231d95e75fdSopenharmony_ci    }
232d95e75fdSopenharmony_ci
233d95e75fdSopenharmony_ci    int32_t maxSize = static_cast<int32_t>(size);
234d95e75fdSopenharmony_ci    int32_t slotId = static_cast<int32_t>(size % BOOL_NUM);
235d95e75fdSopenharmony_ci    int32_t callId = static_cast<int32_t>(size);
236d95e75fdSopenharmony_ci    int32_t accountId = static_cast<int32_t>(size);
237d95e75fdSopenharmony_ci    int32_t videoState = static_cast<int32_t>(size % VEDIO_STATE_NUM);
238d95e75fdSopenharmony_ci    int32_t index = static_cast<int32_t>(size);
239d95e75fdSopenharmony_ci    std::string telNum = "000000000";
240d95e75fdSopenharmony_ci    std::string tempNum(reinterpret_cast<const char *>(data), size);
241d95e75fdSopenharmony_ci    if (strlen(tempNum.c_str()) <= MAX_NUMBER_LEN) {
242d95e75fdSopenharmony_ci        telNum = tempNum;
243d95e75fdSopenharmony_ci    }
244d95e75fdSopenharmony_ci    size_t length = strlen(telNum.c_str()) + 1;
245d95e75fdSopenharmony_ci    CellularCallInfo callInfo;
246d95e75fdSopenharmony_ci    callInfo.slotId = slotId;
247d95e75fdSopenharmony_ci    callInfo.callId = callId;
248d95e75fdSopenharmony_ci    callInfo.accountId = accountId;
249d95e75fdSopenharmony_ci    callInfo.videoState = videoState;
250d95e75fdSopenharmony_ci    callInfo.index = index;
251d95e75fdSopenharmony_ci    if (strcpy_s(callInfo.phoneNum, length, telNum.c_str()) != EOK) {
252d95e75fdSopenharmony_ci        return;
253d95e75fdSopenharmony_ci    }
254d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
255d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(maxSize);
256d95e75fdSopenharmony_ci    dataMessageParcel.WriteRawData(static_cast<const void *>(&callInfo), sizeof(CellularCallInfo));
257d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
258d95e75fdSopenharmony_ci    MessageParcel reply;
259d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnRejectInner(dataMessageParcel, reply);
260d95e75fdSopenharmony_ci}
261d95e75fdSopenharmony_ci
262d95e75fdSopenharmony_civoid HangUp(const uint8_t *data, size_t size)
263d95e75fdSopenharmony_ci{
264d95e75fdSopenharmony_ci    if (!IsServiceInited()) {
265d95e75fdSopenharmony_ci        return;
266d95e75fdSopenharmony_ci    }
267d95e75fdSopenharmony_ci
268d95e75fdSopenharmony_ci    int32_t maxSize = static_cast<int32_t>(size);
269d95e75fdSopenharmony_ci    int32_t type = static_cast<int32_t>(size);
270d95e75fdSopenharmony_ci    int32_t slotId = static_cast<int32_t>(size % BOOL_NUM);
271d95e75fdSopenharmony_ci    int32_t callId = static_cast<int32_t>(size);
272d95e75fdSopenharmony_ci    int32_t accountId = static_cast<int32_t>(size);
273d95e75fdSopenharmony_ci    int32_t videoState = static_cast<int32_t>(size % VEDIO_STATE_NUM);
274d95e75fdSopenharmony_ci    int32_t index = static_cast<int32_t>(size);
275d95e75fdSopenharmony_ci    std::string telNum = "000000000";
276d95e75fdSopenharmony_ci    std::string tempNum(reinterpret_cast<const char *>(data), size);
277d95e75fdSopenharmony_ci    if (strlen(tempNum.c_str()) <= MAX_NUMBER_LEN) {
278d95e75fdSopenharmony_ci        telNum = tempNum;
279d95e75fdSopenharmony_ci    }
280d95e75fdSopenharmony_ci    size_t length = strlen(telNum.c_str()) + 1;
281d95e75fdSopenharmony_ci    CellularCallInfo callInfo;
282d95e75fdSopenharmony_ci    callInfo.slotId = slotId;
283d95e75fdSopenharmony_ci    callInfo.callId = callId;
284d95e75fdSopenharmony_ci    callInfo.accountId = accountId;
285d95e75fdSopenharmony_ci    callInfo.videoState = videoState;
286d95e75fdSopenharmony_ci    callInfo.index = index;
287d95e75fdSopenharmony_ci    if (strcpy_s(callInfo.phoneNum, length, telNum.c_str()) != EOK) {
288d95e75fdSopenharmony_ci        return;
289d95e75fdSopenharmony_ci    }
290d95e75fdSopenharmony_ci    MessageParcel dataMessageParcel;
291d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(maxSize);
292d95e75fdSopenharmony_ci    dataMessageParcel.WriteInt32(type);
293d95e75fdSopenharmony_ci    dataMessageParcel.WriteRawData(static_cast<const void *>(&callInfo), sizeof(CellularCallInfo));
294d95e75fdSopenharmony_ci    dataMessageParcel.RewindRead(0);
295d95e75fdSopenharmony_ci    MessageParcel reply;
296d95e75fdSopenharmony_ci    DelayedSingleton<CellularCallService>::GetInstance()->OnHangUpInner(dataMessageParcel, reply);
297d95e75fdSopenharmony_ci}
298d95e75fdSopenharmony_ci
299d95e75fdSopenharmony_civoid DoSomethingInterestingWithMyAPI(const uint8_t *data, size_t size)
300d95e75fdSopenharmony_ci{
301d95e75fdSopenharmony_ci    if (data == nullptr || size == 0) {
302d95e75fdSopenharmony_ci        return;
303d95e75fdSopenharmony_ci    }
304d95e75fdSopenharmony_ci
305d95e75fdSopenharmony_ci    OnRemoteRequest(data, size);
306d95e75fdSopenharmony_ci    SetDomainPreferenceMode(data, size);
307d95e75fdSopenharmony_ci    GetDomainPreferenceMode(data, size);
308d95e75fdSopenharmony_ci    SetImsSwitchStatus(data, size);
309d95e75fdSopenharmony_ci    GetImsSwitchStatus(data, size);
310d95e75fdSopenharmony_ci    GetImsConfig(data, size);
311d95e75fdSopenharmony_ci    SetImsConfig(data, size);
312d95e75fdSopenharmony_ci    GetImsFeatureValue(data, size);
313d95e75fdSopenharmony_ci    SetImsFeatureValue(data, size);
314d95e75fdSopenharmony_ci    Reject(data, size);
315d95e75fdSopenharmony_ci    HangUp(data, size);
316d95e75fdSopenharmony_ci    SetVoNRSwitchStatus(data, size);
317d95e75fdSopenharmony_ci    GetVoNRSwitchStatus(data, size);
318d95e75fdSopenharmony_ci    return;
319d95e75fdSopenharmony_ci}
320d95e75fdSopenharmony_ci} // namespace OHOS
321d95e75fdSopenharmony_ci
322d95e75fdSopenharmony_ci/* Fuzzer entry point */
323d95e75fdSopenharmony_ciextern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
324d95e75fdSopenharmony_ci{
325d95e75fdSopenharmony_ci    OHOS::AddCellularCallTokenFuzzer token;
326d95e75fdSopenharmony_ci    /* Run your code on data */
327d95e75fdSopenharmony_ci    OHOS::DoSomethingInterestingWithMyAPI(data, size);
328d95e75fdSopenharmony_ci    return 0;
329d95e75fdSopenharmony_ci}
330