1e1c44949Sopenharmony_ci/* 2e1c44949Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3e1c44949Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e1c44949Sopenharmony_ci * you may not use this file except in compliance with the License. 5e1c44949Sopenharmony_ci * You may obtain a copy of the License at 6e1c44949Sopenharmony_ci * 7e1c44949Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e1c44949Sopenharmony_ci * 9e1c44949Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e1c44949Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e1c44949Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e1c44949Sopenharmony_ci * See the License for the specific language governing permissions and 13e1c44949Sopenharmony_ci * limitations under the License. 14e1c44949Sopenharmony_ci */ 15e1c44949Sopenharmony_ci 16e1c44949Sopenharmony_ci#include "callabilitycallback_fuzzer.h" 17e1c44949Sopenharmony_ci 18e1c44949Sopenharmony_ci#include <cstddef> 19e1c44949Sopenharmony_ci#include <cstdint> 20e1c44949Sopenharmony_ci#define private public 21e1c44949Sopenharmony_ci#include "addcalltoken_fuzzer.h" 22e1c44949Sopenharmony_ci#include "call_ability_callback.h" 23e1c44949Sopenharmony_ci#include "call_ability_callback_proxy.h" 24e1c44949Sopenharmony_ci#include "call_manager_callback.h" 25e1c44949Sopenharmony_ci 26e1c44949Sopenharmony_ciusing namespace OHOS::Telephony; 27e1c44949Sopenharmony_cinamespace OHOS { 28e1c44949Sopenharmony_ciconstexpr int32_t ACCOUNT_ID_NUM = 10; 29e1c44949Sopenharmony_ciconstexpr int32_t BOOL_NUM = 2; 30e1c44949Sopenharmony_ciconstexpr int32_t CALL_ID_NUM = 10; 31e1c44949Sopenharmony_ciconstexpr int32_t REPORT_ID_NUM = 23; 32e1c44949Sopenharmony_ciconstexpr int32_t RESULT_ID_NUM = 50; 33e1c44949Sopenharmony_ciconstexpr int32_t OTT_ID_NUM = 11; 34e1c44949Sopenharmony_ciconstexpr int32_t VEDIO_STATE_NUM = 2; 35e1c44949Sopenharmony_ciconstexpr int32_t IMS_CALL_MODE_NUM = 5; 36e1c44949Sopenharmony_ciconstexpr int32_t CALL_SESSION_EVENT_ID_NUM = 4; 37e1c44949Sopenharmony_ciconstexpr int32_t VIDEO_REQUEST_RESULT_TYPE_NUM = 102; 38e1c44949Sopenharmony_cisptr<CallAbilityCallback> callAbilityCallbackPtr_ = nullptr; 39e1c44949Sopenharmony_ci 40e1c44949Sopenharmony_cibool ServiceInited() 41e1c44949Sopenharmony_ci{ 42e1c44949Sopenharmony_ci if (!IsServiceInited()) { 43e1c44949Sopenharmony_ci return false; 44e1c44949Sopenharmony_ci } 45e1c44949Sopenharmony_ci callAbilityCallbackPtr_ = new (std::nothrow) CallAbilityCallback(); 46e1c44949Sopenharmony_ci if (callAbilityCallbackPtr_ == nullptr) { 47e1c44949Sopenharmony_ci return false; 48e1c44949Sopenharmony_ci } 49e1c44949Sopenharmony_ci return true; 50e1c44949Sopenharmony_ci} 51e1c44949Sopenharmony_ci 52e1c44949Sopenharmony_ciint32_t OnRemoteRequest(const uint8_t *data, size_t size) 53e1c44949Sopenharmony_ci{ 54e1c44949Sopenharmony_ci if (!ServiceInited()) { 55e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 56e1c44949Sopenharmony_ci } 57e1c44949Sopenharmony_ci MessageParcel dataMessageParcel; 58e1c44949Sopenharmony_ci if (!dataMessageParcel.WriteInterfaceToken(CallAbilityCallbackStub::GetDescriptor())) { 59e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 60e1c44949Sopenharmony_ci } 61e1c44949Sopenharmony_ci dataMessageParcel.RewindRead(0); 62e1c44949Sopenharmony_ci uint32_t code = static_cast<uint32_t>(size); 63e1c44949Sopenharmony_ci MessageParcel reply; 64e1c44949Sopenharmony_ci MessageOption option; 65e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnRemoteRequest(code, dataMessageParcel, reply, option); 66e1c44949Sopenharmony_ci} 67e1c44949Sopenharmony_ci 68e1c44949Sopenharmony_ciint32_t UpdateCallStateInfo(const uint8_t *data, size_t size) 69e1c44949Sopenharmony_ci{ 70e1c44949Sopenharmony_ci if (!ServiceInited()) { 71e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 72e1c44949Sopenharmony_ci } 73e1c44949Sopenharmony_ci CallAttributeInfo info; 74e1c44949Sopenharmony_ci std::string msg(reinterpret_cast<const char *>(data), size); 75e1c44949Sopenharmony_ci int32_t accountLength = msg.length() > kMaxNumberLen ? kMaxNumberLen : msg.length(); 76e1c44949Sopenharmony_ci int32_t bundleLength = msg.length() > kMaxBundleNameLen ? kMaxBundleNameLen : msg.length(); 77e1c44949Sopenharmony_ci memcpy_s(info.accountNumber, kMaxNumberLen, msg.c_str(), accountLength); 78e1c44949Sopenharmony_ci memcpy_s(info.bundleName, kMaxBundleNameLen, msg.c_str(), bundleLength); 79e1c44949Sopenharmony_ci info.accountId = static_cast<int32_t>(size % ACCOUNT_ID_NUM); 80e1c44949Sopenharmony_ci info.startTime = static_cast<uint32_t>(size); 81e1c44949Sopenharmony_ci info.callId = static_cast<int32_t>(size % CALL_ID_NUM); 82e1c44949Sopenharmony_ci info.callBeginTime = static_cast<time_t>(size); 83e1c44949Sopenharmony_ci info.callEndTime = static_cast<time_t>(size); 84e1c44949Sopenharmony_ci info.ringBeginTime = static_cast<time_t>(size); 85e1c44949Sopenharmony_ci info.ringEndTime = static_cast<time_t>(size); 86e1c44949Sopenharmony_ci MessageParcel dataMessageParcel; 87e1c44949Sopenharmony_ci dataMessageParcel.WriteCString(info.accountNumber); 88e1c44949Sopenharmony_ci dataMessageParcel.WriteCString(info.bundleName); 89e1c44949Sopenharmony_ci dataMessageParcel.WriteBool(info.speakerphoneOn); 90e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(info.accountId); 91e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(static_cast<int32_t>(info.videoState)); 92e1c44949Sopenharmony_ci dataMessageParcel.WriteInt64(info.startTime); 93e1c44949Sopenharmony_ci dataMessageParcel.WriteBool(info.isEcc); 94e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(static_cast<int32_t>(info.callType)); 95e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(info.callId); 96e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(static_cast<int32_t>(info.callState)); 97e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(static_cast<int32_t>(info.conferenceState)); 98e1c44949Sopenharmony_ci dataMessageParcel.WriteInt64(info.callBeginTime); 99e1c44949Sopenharmony_ci dataMessageParcel.WriteInt64(info.callEndTime); 100e1c44949Sopenharmony_ci dataMessageParcel.WriteInt64(info.ringBeginTime); 101e1c44949Sopenharmony_ci dataMessageParcel.WriteInt64(info.ringEndTime); 102e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(static_cast<int32_t>(info.callDirection)); 103e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(static_cast<int32_t>(info.answerType)); 104e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(info.index); 105e1c44949Sopenharmony_ci dataMessageParcel.WriteString(info.voipCallInfo.voipCallId); 106e1c44949Sopenharmony_ci dataMessageParcel.WriteString(info.voipCallInfo.userName); 107e1c44949Sopenharmony_ci dataMessageParcel.WriteString(info.voipCallInfo.abilityName); 108e1c44949Sopenharmony_ci dataMessageParcel.WriteString(info.voipCallInfo.extensionId); 109e1c44949Sopenharmony_ci dataMessageParcel.WriteString(info.voipCallInfo.voipBundleName); 110e1c44949Sopenharmony_ci dataMessageParcel.WriteUInt8Vector(info.voipCallInfo.userProfile); 111e1c44949Sopenharmony_ci dataMessageParcel.RewindRead(0); 112e1c44949Sopenharmony_ci MessageParcel reply; 113e1c44949Sopenharmony_ci MessageOption option; 114e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateCallStateInfo(dataMessageParcel, reply); 115e1c44949Sopenharmony_ci} 116e1c44949Sopenharmony_ci 117e1c44949Sopenharmony_ciint32_t UpdateCallEvent(const uint8_t *data, size_t size) 118e1c44949Sopenharmony_ci{ 119e1c44949Sopenharmony_ci if (!ServiceInited()) { 120e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 121e1c44949Sopenharmony_ci } 122e1c44949Sopenharmony_ci CallEventInfo info; 123e1c44949Sopenharmony_ci std::string msg(reinterpret_cast<const char *>(data), size); 124e1c44949Sopenharmony_ci int32_t phoneLength = msg.length() > kMaxNumberLen ? kMaxNumberLen : msg.length(); 125e1c44949Sopenharmony_ci int32_t bundleLength = msg.length() > kMaxBundleNameLen ? kMaxBundleNameLen : msg.length(); 126e1c44949Sopenharmony_ci memcpy_s(info.phoneNum, kMaxNumberLen, msg.c_str(), phoneLength); 127e1c44949Sopenharmony_ci memcpy_s(info.bundleName, kMaxBundleNameLen, msg.c_str(), bundleLength); 128e1c44949Sopenharmony_ci int32_t length = sizeof(CallEventInfo); 129e1c44949Sopenharmony_ci MessageParcel dataMessageParcel; 130e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(length); 131e1c44949Sopenharmony_ci dataMessageParcel.WriteRawData((const void *)&info, length); 132e1c44949Sopenharmony_ci dataMessageParcel.RewindRead(0); 133e1c44949Sopenharmony_ci MessageParcel reply; 134e1c44949Sopenharmony_ci MessageOption option; 135e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateCallEvent(dataMessageParcel, reply); 136e1c44949Sopenharmony_ci} 137e1c44949Sopenharmony_ci 138e1c44949Sopenharmony_ciint32_t UpdateCallDisconnectedCause(const uint8_t *data, size_t size) 139e1c44949Sopenharmony_ci{ 140e1c44949Sopenharmony_ci if (!ServiceInited()) { 141e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 142e1c44949Sopenharmony_ci } 143e1c44949Sopenharmony_ci int32_t reason = static_cast<uint32_t>(size); 144e1c44949Sopenharmony_ci std::string message(reinterpret_cast<const char *>(data), size); 145e1c44949Sopenharmony_ci MessageParcel dataMessageParcel; 146e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(reason); 147e1c44949Sopenharmony_ci dataMessageParcel.WriteString(message); 148e1c44949Sopenharmony_ci dataMessageParcel.RewindRead(0); 149e1c44949Sopenharmony_ci MessageParcel reply; 150e1c44949Sopenharmony_ci MessageOption option; 151e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateCallDisconnectedCause(dataMessageParcel, reply); 152e1c44949Sopenharmony_ci} 153e1c44949Sopenharmony_ci 154e1c44949Sopenharmony_ciint32_t UpdateAysncResults(const uint8_t *data, size_t size) 155e1c44949Sopenharmony_ci{ 156e1c44949Sopenharmony_ci if (!ServiceInited()) { 157e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 158e1c44949Sopenharmony_ci } 159e1c44949Sopenharmony_ci int32_t reportId = static_cast<uint32_t>(size % REPORT_ID_NUM); 160e1c44949Sopenharmony_ci int32_t resultId = static_cast<uint32_t>(size % RESULT_ID_NUM); 161e1c44949Sopenharmony_ci MessageParcel dataMessageParcel; 162e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(reportId); 163e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(resultId); 164e1c44949Sopenharmony_ci dataMessageParcel.RewindRead(0); 165e1c44949Sopenharmony_ci MessageParcel reply; 166e1c44949Sopenharmony_ci MessageOption option; 167e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateAysncResults(dataMessageParcel, reply); 168e1c44949Sopenharmony_ci} 169e1c44949Sopenharmony_ci 170e1c44949Sopenharmony_ciint32_t UpdateOttCallRequest(const uint8_t *data, size_t size) 171e1c44949Sopenharmony_ci{ 172e1c44949Sopenharmony_ci if (!ServiceInited()) { 173e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 174e1c44949Sopenharmony_ci } 175e1c44949Sopenharmony_ci int32_t requestId = static_cast<uint32_t>(size % OTT_ID_NUM); 176e1c44949Sopenharmony_ci int32_t videoState = static_cast<uint32_t>(size % VEDIO_STATE_NUM); 177e1c44949Sopenharmony_ci std::string phoneNumber(reinterpret_cast<const char *>(data), size); 178e1c44949Sopenharmony_ci std::string bundleName(reinterpret_cast<const char *>(data), size); 179e1c44949Sopenharmony_ci MessageParcel dataMessageParcel; 180e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(requestId); 181e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(videoState); 182e1c44949Sopenharmony_ci dataMessageParcel.WriteString(phoneNumber); 183e1c44949Sopenharmony_ci dataMessageParcel.WriteString(bundleName); 184e1c44949Sopenharmony_ci dataMessageParcel.RewindRead(0); 185e1c44949Sopenharmony_ci MessageParcel reply; 186e1c44949Sopenharmony_ci MessageOption option; 187e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateOttCallRequest(dataMessageParcel, reply); 188e1c44949Sopenharmony_ci} 189e1c44949Sopenharmony_ci 190e1c44949Sopenharmony_ciint32_t UpdateMmiCodeResults(const uint8_t *data, size_t size) 191e1c44949Sopenharmony_ci{ 192e1c44949Sopenharmony_ci if (!ServiceInited()) { 193e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 194e1c44949Sopenharmony_ci } 195e1c44949Sopenharmony_ci MmiCodeInfo info; 196e1c44949Sopenharmony_ci int32_t length = sizeof(MmiCodeInfo); 197e1c44949Sopenharmony_ci info.result = static_cast<uint32_t>(size); 198e1c44949Sopenharmony_ci std::string msg(reinterpret_cast<const char *>(data), size); 199e1c44949Sopenharmony_ci int32_t msgLength = msg.length() > kMaxNumberLen ? kMaxNumberLen : msg.length(); 200e1c44949Sopenharmony_ci memcpy_s(info.message, kMaxNumberLen, msg.c_str(), msgLength); 201e1c44949Sopenharmony_ci MessageParcel dataMessageParcel; 202e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(length); 203e1c44949Sopenharmony_ci dataMessageParcel.WriteRawData((const void *)&info, length); 204e1c44949Sopenharmony_ci dataMessageParcel.RewindRead(0); 205e1c44949Sopenharmony_ci MessageParcel reply; 206e1c44949Sopenharmony_ci MessageOption option; 207e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateMmiCodeResults(dataMessageParcel, reply); 208e1c44949Sopenharmony_ci} 209e1c44949Sopenharmony_ci 210e1c44949Sopenharmony_ciint32_t UpdateAudioDeviceChange(const uint8_t *data, size_t size) 211e1c44949Sopenharmony_ci{ 212e1c44949Sopenharmony_ci if (!ServiceInited()) { 213e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 214e1c44949Sopenharmony_ci } 215e1c44949Sopenharmony_ci MessageParcel dataMessageParcel; 216e1c44949Sopenharmony_ci if (!dataMessageParcel.WriteInterfaceToken(CallAbilityCallbackProxy::GetDescriptor())) { 217e1c44949Sopenharmony_ci TELEPHONY_LOGE("write descriptor fail"); 218e1c44949Sopenharmony_ci return TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL; 219e1c44949Sopenharmony_ci } 220e1c44949Sopenharmony_ci AudioDevice device; 221e1c44949Sopenharmony_ci device.deviceType = AudioDeviceType::DEVICE_UNKNOWN; 222e1c44949Sopenharmony_ci std::string msg(reinterpret_cast<const char *>(data), size); 223e1c44949Sopenharmony_ci int32_t length = msg.length() > kMaxAddressLen ? kMaxAddressLen : msg.length(); 224e1c44949Sopenharmony_ci memcpy_s(device.address, kMaxAddressLen, msg.c_str(), length); 225e1c44949Sopenharmony_ci int32_t dataSize = static_cast<uint32_t>(size); 226e1c44949Sopenharmony_ci dataMessageParcel.WriteInt32(dataSize); 227e1c44949Sopenharmony_ci dataMessageParcel.WriteRawData((const void *)&device, sizeof(AudioDevice)); 228e1c44949Sopenharmony_ci dataMessageParcel.WriteRawData((const void *)&device, sizeof(AudioDevice)); 229e1c44949Sopenharmony_ci dataMessageParcel.WriteBool(static_cast<uint32_t>(size % BOOL_NUM)); 230e1c44949Sopenharmony_ci dataMessageParcel.RewindRead(0); 231e1c44949Sopenharmony_ci MessageParcel reply; 232e1c44949Sopenharmony_ci MessageOption option; 233e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateAudioDeviceChange(dataMessageParcel, reply); 234e1c44949Sopenharmony_ci} 235e1c44949Sopenharmony_ci 236e1c44949Sopenharmony_ciint32_t UpdateImsCallModeChange(const uint8_t *data, size_t size) 237e1c44949Sopenharmony_ci{ 238e1c44949Sopenharmony_ci if (!ServiceInited()) { 239e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 240e1c44949Sopenharmony_ci } 241e1c44949Sopenharmony_ci MessageParcel dataParcel; 242e1c44949Sopenharmony_ci MessageParcel replyParcel; 243e1c44949Sopenharmony_ci if (!dataParcel.WriteInterfaceToken(CallAbilityCallbackProxy::GetDescriptor())) { 244e1c44949Sopenharmony_ci TELEPHONY_LOGE("write descriptor fail"); 245e1c44949Sopenharmony_ci return TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL; 246e1c44949Sopenharmony_ci } 247e1c44949Sopenharmony_ci int32_t length = sizeof(CallMediaModeInfo); 248e1c44949Sopenharmony_ci dataParcel.WriteInt32(length); 249e1c44949Sopenharmony_ci CallMediaModeInfo callMediaModeInfo; 250e1c44949Sopenharmony_ci callMediaModeInfo.callId = static_cast<int32_t>(size); 251e1c44949Sopenharmony_ci callMediaModeInfo.isRequestInfo = static_cast<bool>(size % BOOL_NUM); 252e1c44949Sopenharmony_ci callMediaModeInfo.result = static_cast<VideoRequestResultType>(size % VIDEO_REQUEST_RESULT_TYPE_NUM); 253e1c44949Sopenharmony_ci callMediaModeInfo.callMode = static_cast<ImsCallMode>(size % IMS_CALL_MODE_NUM); 254e1c44949Sopenharmony_ci dataParcel.WriteRawData((const void *)&callMediaModeInfo, length); 255e1c44949Sopenharmony_ci dataParcel.RewindRead(0); 256e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateImsCallModeChange(dataParcel, replyParcel); 257e1c44949Sopenharmony_ci} 258e1c44949Sopenharmony_ci 259e1c44949Sopenharmony_ciint32_t UpdateCallSessionEventChange(const uint8_t *data, size_t size) 260e1c44949Sopenharmony_ci{ 261e1c44949Sopenharmony_ci if (!ServiceInited()) { 262e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 263e1c44949Sopenharmony_ci } 264e1c44949Sopenharmony_ci MessageParcel dataParcel; 265e1c44949Sopenharmony_ci MessageParcel replyParcel; 266e1c44949Sopenharmony_ci if (!dataParcel.WriteInterfaceToken(CallAbilityCallbackProxy::GetDescriptor())) { 267e1c44949Sopenharmony_ci TELEPHONY_LOGE("write descriptor fail"); 268e1c44949Sopenharmony_ci return TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL; 269e1c44949Sopenharmony_ci } 270e1c44949Sopenharmony_ci int32_t length = sizeof(CallSessionEvent); 271e1c44949Sopenharmony_ci dataParcel.WriteInt32(length); 272e1c44949Sopenharmony_ci CallSessionEvent callSessionInfo; 273e1c44949Sopenharmony_ci callSessionInfo.callId = static_cast<int32_t>(size); 274e1c44949Sopenharmony_ci callSessionInfo.eventId = static_cast<CallSessionEventId>(size % CALL_SESSION_EVENT_ID_NUM); 275e1c44949Sopenharmony_ci dataParcel.WriteRawData((const void *)&callSessionInfo, length); 276e1c44949Sopenharmony_ci dataParcel.RewindRead(0); 277e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateCallSessionEventChange(dataParcel, replyParcel); 278e1c44949Sopenharmony_ci} 279e1c44949Sopenharmony_ci 280e1c44949Sopenharmony_ciint32_t UpdatePeerDimensionsChange(const uint8_t *data, size_t size) 281e1c44949Sopenharmony_ci{ 282e1c44949Sopenharmony_ci if (!ServiceInited()) { 283e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 284e1c44949Sopenharmony_ci } 285e1c44949Sopenharmony_ci MessageParcel dataParcel; 286e1c44949Sopenharmony_ci MessageParcel replyParcel; 287e1c44949Sopenharmony_ci if (!dataParcel.WriteInterfaceToken(CallAbilityCallbackProxy::GetDescriptor())) { 288e1c44949Sopenharmony_ci TELEPHONY_LOGE("write descriptor fail"); 289e1c44949Sopenharmony_ci return TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL; 290e1c44949Sopenharmony_ci } 291e1c44949Sopenharmony_ci int32_t length = sizeof(PeerDimensionsDetail); 292e1c44949Sopenharmony_ci dataParcel.WriteInt32(length); 293e1c44949Sopenharmony_ci PeerDimensionsDetail peerDimensionsInfo; 294e1c44949Sopenharmony_ci peerDimensionsInfo.callId = static_cast<int32_t>(size); 295e1c44949Sopenharmony_ci peerDimensionsInfo.width = static_cast<int32_t>(size); 296e1c44949Sopenharmony_ci peerDimensionsInfo.height = static_cast<int32_t>(size); 297e1c44949Sopenharmony_ci dataParcel.RewindRead(0); 298e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdatePeerDimensionsChange(dataParcel, replyParcel); 299e1c44949Sopenharmony_ci} 300e1c44949Sopenharmony_ci 301e1c44949Sopenharmony_ciint32_t UpdateCallDataUsageChange(const uint8_t *data, size_t size) 302e1c44949Sopenharmony_ci{ 303e1c44949Sopenharmony_ci if (!ServiceInited()) { 304e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 305e1c44949Sopenharmony_ci } 306e1c44949Sopenharmony_ci MessageParcel dataParcel; 307e1c44949Sopenharmony_ci MessageParcel replyParcel; 308e1c44949Sopenharmony_ci if (!dataParcel.WriteInterfaceToken(CallAbilityCallbackProxy::GetDescriptor())) { 309e1c44949Sopenharmony_ci TELEPHONY_LOGE("write descriptor fail"); 310e1c44949Sopenharmony_ci return TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL; 311e1c44949Sopenharmony_ci } 312e1c44949Sopenharmony_ci int64_t dataUsage = static_cast<int64_t>(size); 313e1c44949Sopenharmony_ci dataParcel.WriteInt64(dataUsage); 314e1c44949Sopenharmony_ci dataParcel.RewindRead(0); 315e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateCallDataUsageChange(dataParcel, replyParcel); 316e1c44949Sopenharmony_ci} 317e1c44949Sopenharmony_ci 318e1c44949Sopenharmony_ciint32_t UpdateCameraCapabilities(const uint8_t *data, size_t size) 319e1c44949Sopenharmony_ci{ 320e1c44949Sopenharmony_ci if (!ServiceInited()) { 321e1c44949Sopenharmony_ci return TELEPHONY_ERROR; 322e1c44949Sopenharmony_ci } 323e1c44949Sopenharmony_ci MessageParcel dataParcel; 324e1c44949Sopenharmony_ci MessageParcel replyParcel; 325e1c44949Sopenharmony_ci if (!dataParcel.WriteInterfaceToken(CallAbilityCallbackProxy::GetDescriptor())) { 326e1c44949Sopenharmony_ci TELEPHONY_LOGE("write descriptor fail"); 327e1c44949Sopenharmony_ci return TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL; 328e1c44949Sopenharmony_ci } 329e1c44949Sopenharmony_ci int32_t length = sizeof(CameraCapabilities); 330e1c44949Sopenharmony_ci dataParcel.WriteInt32(length); 331e1c44949Sopenharmony_ci CameraCapabilities cameraCapabilitiesInfo; 332e1c44949Sopenharmony_ci cameraCapabilitiesInfo.callId = static_cast<int32_t>(size); 333e1c44949Sopenharmony_ci cameraCapabilitiesInfo.width = static_cast<int32_t>(size); 334e1c44949Sopenharmony_ci cameraCapabilitiesInfo.height = static_cast<int32_t>(size); 335e1c44949Sopenharmony_ci dataParcel.RewindRead(0); 336e1c44949Sopenharmony_ci return callAbilityCallbackPtr_->OnUpdateCameraCapabilities(dataParcel, replyParcel); 337e1c44949Sopenharmony_ci} 338e1c44949Sopenharmony_ci 339e1c44949Sopenharmony_civoid DoSomethingInterestingWithMyAPI(const uint8_t *data, size_t size) 340e1c44949Sopenharmony_ci{ 341e1c44949Sopenharmony_ci if (data == nullptr || size == 0) { 342e1c44949Sopenharmony_ci return; 343e1c44949Sopenharmony_ci } 344e1c44949Sopenharmony_ci OnRemoteRequest(data, size); 345e1c44949Sopenharmony_ci UpdateCallStateInfo(data, size); 346e1c44949Sopenharmony_ci UpdateCallEvent(data, size); 347e1c44949Sopenharmony_ci UpdateCallDisconnectedCause(data, size); 348e1c44949Sopenharmony_ci UpdateAysncResults(data, size); 349e1c44949Sopenharmony_ci UpdateOttCallRequest(data, size); 350e1c44949Sopenharmony_ci UpdateMmiCodeResults(data, size); 351e1c44949Sopenharmony_ci UpdateAudioDeviceChange(data, size); 352e1c44949Sopenharmony_ci UpdateImsCallModeChange(data, size); 353e1c44949Sopenharmony_ci UpdateCallSessionEventChange(data, size); 354e1c44949Sopenharmony_ci UpdatePeerDimensionsChange(data, size); 355e1c44949Sopenharmony_ci UpdateCallDataUsageChange(data, size); 356e1c44949Sopenharmony_ci UpdateCameraCapabilities(data, size); 357e1c44949Sopenharmony_ci} 358e1c44949Sopenharmony_ci} // namespace OHOS 359e1c44949Sopenharmony_ci 360e1c44949Sopenharmony_ci/* Fuzzer entry point */ 361e1c44949Sopenharmony_ciextern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) 362e1c44949Sopenharmony_ci{ 363e1c44949Sopenharmony_ci OHOS::AddCallTokenFuzzer token; 364e1c44949Sopenharmony_ci /* Run your code on data */ 365e1c44949Sopenharmony_ci OHOS::DoSomethingInterestingWithMyAPI(data, size); 366e1c44949Sopenharmony_ci return 0; 367e1c44949Sopenharmony_ci} 368