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