1e5d0e473Sopenharmony_ci/* 2e5d0e473Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3e5d0e473Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e5d0e473Sopenharmony_ci * you may not use this file except in compliance with the License. 5e5d0e473Sopenharmony_ci * You may obtain a copy of the License at 6e5d0e473Sopenharmony_ci * 7e5d0e473Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e5d0e473Sopenharmony_ci * 9e5d0e473Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e5d0e473Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e5d0e473Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e5d0e473Sopenharmony_ci * See the License for the specific language governing permissions and 13e5d0e473Sopenharmony_ci * limitations under the License. 14e5d0e473Sopenharmony_ci */ 15e5d0e473Sopenharmony_ci 16e5d0e473Sopenharmony_ci#include "cdmasmsdecode_fuzzer.h" 17e5d0e473Sopenharmony_ci 18e5d0e473Sopenharmony_ci#include <sstream> 19e5d0e473Sopenharmony_ci 20e5d0e473Sopenharmony_ci#include "addsmstoken_fuzzer.h" 21e5d0e473Sopenharmony_ci#include "cdma_sms_sub_parameter.h" 22e5d0e473Sopenharmony_ci#include "cdma_sms_transport_message.h" 23e5d0e473Sopenharmony_ci#include "securec.h" 24e5d0e473Sopenharmony_ci 25e5d0e473Sopenharmony_ciusing namespace OHOS::Telephony; 26e5d0e473Sopenharmony_cinamespace OHOS { 27e5d0e473Sopenharmony_cistatic constexpr uint16_t PDU_BUFFER_MAX_SIZE = 0xFF; 28e5d0e473Sopenharmony_cibool g_flag = false; 29e5d0e473Sopenharmony_ci 30e5d0e473Sopenharmony_civoid TeleserviceIdDecode(const uint8_t *data, size_t size) 31e5d0e473Sopenharmony_ci{ 32e5d0e473Sopenharmony_ci uint16_t value; 33e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsTeleserviceId>(value); 34e5d0e473Sopenharmony_ci if (parameter == nullptr) { 35e5d0e473Sopenharmony_ci return; 36e5d0e473Sopenharmony_ci } 37e5d0e473Sopenharmony_ci 38e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 39e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 40e5d0e473Sopenharmony_ci parameter->Decode(pdu); 41e5d0e473Sopenharmony_ci 42e5d0e473Sopenharmony_ci std::stringstream ss1; 43e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsParameterRecord::TELESERVICE_ID); 44e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 45e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 46e5d0e473Sopenharmony_ci ss1 << data[i]; 47e5d0e473Sopenharmony_ci } 48e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 49e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 50e5d0e473Sopenharmony_ci} 51e5d0e473Sopenharmony_ci 52e5d0e473Sopenharmony_civoid ServiceCategoryDecode(const uint8_t *data, size_t size) 53e5d0e473Sopenharmony_ci{ 54e5d0e473Sopenharmony_ci uint16_t value; 55e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsServiceCategory>(value); 56e5d0e473Sopenharmony_ci if (parameter == nullptr) { 57e5d0e473Sopenharmony_ci return; 58e5d0e473Sopenharmony_ci } 59e5d0e473Sopenharmony_ci 60e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 61e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 62e5d0e473Sopenharmony_ci parameter->Decode(pdu); 63e5d0e473Sopenharmony_ci 64e5d0e473Sopenharmony_ci std::stringstream ss1; 65e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsParameterRecord::SERVICE_CATEGORY); 66e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 67e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 68e5d0e473Sopenharmony_ci ss1 << data[i]; 69e5d0e473Sopenharmony_ci } 70e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 71e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 72e5d0e473Sopenharmony_ci} 73e5d0e473Sopenharmony_ci 74e5d0e473Sopenharmony_civoid BearerReplyDecode(const uint8_t *data, size_t size) 75e5d0e473Sopenharmony_ci{ 76e5d0e473Sopenharmony_ci uint8_t value; 77e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsBearerReply>(value); 78e5d0e473Sopenharmony_ci if (parameter == nullptr) { 79e5d0e473Sopenharmony_ci return; 80e5d0e473Sopenharmony_ci } 81e5d0e473Sopenharmony_ci 82e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 83e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 84e5d0e473Sopenharmony_ci parameter->Decode(pdu); 85e5d0e473Sopenharmony_ci 86e5d0e473Sopenharmony_ci std::stringstream ss1; 87e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsParameterRecord::BEARER_REPLY_OPTION); 88e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 89e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 90e5d0e473Sopenharmony_ci ss1 << data[i]; 91e5d0e473Sopenharmony_ci } 92e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 93e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 94e5d0e473Sopenharmony_ci} 95e5d0e473Sopenharmony_ci 96e5d0e473Sopenharmony_civoid CauseCodesDecode(const uint8_t *data, size_t size) 97e5d0e473Sopenharmony_ci{ 98e5d0e473Sopenharmony_ci TransportCauseCode value; 99e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsCauseCodes>(value); 100e5d0e473Sopenharmony_ci if (parameter == nullptr) { 101e5d0e473Sopenharmony_ci return; 102e5d0e473Sopenharmony_ci } 103e5d0e473Sopenharmony_ci 104e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 105e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 106e5d0e473Sopenharmony_ci parameter->Decode(pdu); 107e5d0e473Sopenharmony_ci 108e5d0e473Sopenharmony_ci std::stringstream ss1; 109e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsParameterRecord::CAUSE_CODES); 110e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 111e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 112e5d0e473Sopenharmony_ci ss1 << data[i]; 113e5d0e473Sopenharmony_ci } 114e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 115e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 116e5d0e473Sopenharmony_ci} 117e5d0e473Sopenharmony_ci 118e5d0e473Sopenharmony_civoid AddressParameterDecode(const uint8_t *data, size_t size) 119e5d0e473Sopenharmony_ci{ 120e5d0e473Sopenharmony_ci TransportAddr value; 121e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsAddressParameter>(value, CdmaSmsParameterRecord::ORG_ADDRESS); 122e5d0e473Sopenharmony_ci if (parameter == nullptr) { 123e5d0e473Sopenharmony_ci return; 124e5d0e473Sopenharmony_ci } 125e5d0e473Sopenharmony_ci 126e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 127e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 128e5d0e473Sopenharmony_ci parameter->Decode(pdu); 129e5d0e473Sopenharmony_ci 130e5d0e473Sopenharmony_ci std::stringstream ss1; 131e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsParameterRecord::ORG_ADDRESS); 132e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 133e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 134e5d0e473Sopenharmony_ci ss1 << data[i]; 135e5d0e473Sopenharmony_ci } 136e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 137e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 138e5d0e473Sopenharmony_ci} 139e5d0e473Sopenharmony_ci 140e5d0e473Sopenharmony_civoid SubaddressDecode(const uint8_t *data, size_t size) 141e5d0e473Sopenharmony_ci{ 142e5d0e473Sopenharmony_ci TransportSubAddr value; 143e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsSubaddress>(value, CdmaSmsParameterRecord::ORG_SUB_ADDRESS); 144e5d0e473Sopenharmony_ci if (parameter == nullptr) { 145e5d0e473Sopenharmony_ci return; 146e5d0e473Sopenharmony_ci } 147e5d0e473Sopenharmony_ci 148e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 149e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 150e5d0e473Sopenharmony_ci parameter->Decode(pdu); 151e5d0e473Sopenharmony_ci 152e5d0e473Sopenharmony_ci std::stringstream ss1; 153e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsParameterRecord::ORG_SUB_ADDRESS); 154e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 155e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 156e5d0e473Sopenharmony_ci ss1 << data[i]; 157e5d0e473Sopenharmony_ci } 158e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 159e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 160e5d0e473Sopenharmony_ci} 161e5d0e473Sopenharmony_ci 162e5d0e473Sopenharmony_civoid BearerDataDecode(const uint8_t *data, size_t size) 163e5d0e473Sopenharmony_ci{ 164e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 165e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 166e5d0e473Sopenharmony_ci pdu.MoveForward(); 167e5d0e473Sopenharmony_ci pdu.MoveForward(); 168e5d0e473Sopenharmony_ci CdmaTeleserviceMsg value; 169e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsBearerData>(value, pdu); 170e5d0e473Sopenharmony_ci if (parameter == nullptr) { 171e5d0e473Sopenharmony_ci return; 172e5d0e473Sopenharmony_ci } 173e5d0e473Sopenharmony_ci pdu.SetIndex(0); 174e5d0e473Sopenharmony_ci parameter->Decode(pdu); 175e5d0e473Sopenharmony_ci 176e5d0e473Sopenharmony_ci std::stringstream ss1; 177e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsParameterRecord::BEARER_DATA); 178e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 179e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 180e5d0e473Sopenharmony_ci ss1 << data[i]; 181e5d0e473Sopenharmony_ci } 182e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 183e5d0e473Sopenharmony_ci rBuffer1.MoveForward(); 184e5d0e473Sopenharmony_ci rBuffer1.MoveForward(); 185e5d0e473Sopenharmony_ci auto parameter1 = std::make_unique<CdmaSmsBearerData>(value, rBuffer1); 186e5d0e473Sopenharmony_ci rBuffer1.SetIndex(0); 187e5d0e473Sopenharmony_ci parameter1->Decode(rBuffer1); 188e5d0e473Sopenharmony_ci 189e5d0e473Sopenharmony_ci rBuffer1.SetIndex(0); 190e5d0e473Sopenharmony_ci rBuffer1.MoveForward(); 191e5d0e473Sopenharmony_ci rBuffer1.MoveForward(); 192e5d0e473Sopenharmony_ci auto parameter2 = std::make_unique<CdmaSmsBearerData>(value, rBuffer1, true); 193e5d0e473Sopenharmony_ci if (parameter2 == nullptr) { 194e5d0e473Sopenharmony_ci return; 195e5d0e473Sopenharmony_ci } 196e5d0e473Sopenharmony_ci rBuffer1.SetIndex(0); 197e5d0e473Sopenharmony_ci parameter2->Decode(rBuffer1); 198e5d0e473Sopenharmony_ci} 199e5d0e473Sopenharmony_ci 200e5d0e473Sopenharmony_civoid BaseParameterDecode(const uint8_t *data, size_t size) 201e5d0e473Sopenharmony_ci{ 202e5d0e473Sopenharmony_ci uint8_t value; 203e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsBaseParameter>(CdmaSmsSubParameter::MESSAGE_IDENTIFIER, value); 204e5d0e473Sopenharmony_ci if (parameter == nullptr) { 205e5d0e473Sopenharmony_ci return; 206e5d0e473Sopenharmony_ci } 207e5d0e473Sopenharmony_ci 208e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 209e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 210e5d0e473Sopenharmony_ci parameter->Decode(pdu); 211e5d0e473Sopenharmony_ci 212e5d0e473Sopenharmony_ci std::stringstream ss1; 213e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::MESSAGE_IDENTIFIER); 214e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 215e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 216e5d0e473Sopenharmony_ci ss1 << data[i]; 217e5d0e473Sopenharmony_ci } 218e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 219e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 220e5d0e473Sopenharmony_ci} 221e5d0e473Sopenharmony_ci 222e5d0e473Sopenharmony_civoid ReservedParameterDecode(const uint8_t *data, size_t size) 223e5d0e473Sopenharmony_ci{ 224e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsReservedParameter>(CdmaSmsSubParameter::MESSAGE_IDENTIFIER); 225e5d0e473Sopenharmony_ci if (parameter == nullptr) { 226e5d0e473Sopenharmony_ci return; 227e5d0e473Sopenharmony_ci } 228e5d0e473Sopenharmony_ci 229e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 230e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 231e5d0e473Sopenharmony_ci parameter->Decode(pdu); 232e5d0e473Sopenharmony_ci 233e5d0e473Sopenharmony_ci std::stringstream ss1; 234e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::MESSAGE_IDENTIFIER); 235e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 236e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 237e5d0e473Sopenharmony_ci ss1 << data[i]; 238e5d0e473Sopenharmony_ci } 239e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 240e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 241e5d0e473Sopenharmony_ci} 242e5d0e473Sopenharmony_ci 243e5d0e473Sopenharmony_civoid MessageIdDecode(const uint8_t *data, size_t size) 244e5d0e473Sopenharmony_ci{ 245e5d0e473Sopenharmony_ci SmsTeleSvcMsgId value; 246e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsMessageId>(value, CdmaSmsTeleserviceMessage::DELIVER); 247e5d0e473Sopenharmony_ci if (parameter == nullptr) { 248e5d0e473Sopenharmony_ci return; 249e5d0e473Sopenharmony_ci } 250e5d0e473Sopenharmony_ci 251e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 252e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 253e5d0e473Sopenharmony_ci parameter->Decode(pdu); 254e5d0e473Sopenharmony_ci 255e5d0e473Sopenharmony_ci std::stringstream ss1; 256e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::MESSAGE_IDENTIFIER); 257e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 258e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 259e5d0e473Sopenharmony_ci ss1 << data[i]; 260e5d0e473Sopenharmony_ci } 261e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 262e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 263e5d0e473Sopenharmony_ci} 264e5d0e473Sopenharmony_ci 265e5d0e473Sopenharmony_civoid AbsoluteTimeDecode(const uint8_t *data, size_t size) 266e5d0e473Sopenharmony_ci{ 267e5d0e473Sopenharmony_ci SmsTimeAbs value; 268e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsAbsoluteTime>(CdmaSmsSubParameter::VALIDITY_PERIOD_ABSOLUTE, value); 269e5d0e473Sopenharmony_ci if (parameter == nullptr) { 270e5d0e473Sopenharmony_ci return; 271e5d0e473Sopenharmony_ci } 272e5d0e473Sopenharmony_ci 273e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 274e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 275e5d0e473Sopenharmony_ci parameter->Decode(pdu); 276e5d0e473Sopenharmony_ci 277e5d0e473Sopenharmony_ci std::stringstream ss1; 278e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::VALIDITY_PERIOD_ABSOLUTE); 279e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 280e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 281e5d0e473Sopenharmony_ci ss1 << data[i]; 282e5d0e473Sopenharmony_ci } 283e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 284e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 285e5d0e473Sopenharmony_ci} 286e5d0e473Sopenharmony_ci 287e5d0e473Sopenharmony_civoid PriorityIndDecode(const uint8_t *data, size_t size) 288e5d0e473Sopenharmony_ci{ 289e5d0e473Sopenharmony_ci SmsPriorityIndicator value; 290e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsPriorityInd>(value); 291e5d0e473Sopenharmony_ci if (parameter == nullptr) { 292e5d0e473Sopenharmony_ci return; 293e5d0e473Sopenharmony_ci } 294e5d0e473Sopenharmony_ci 295e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 296e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 297e5d0e473Sopenharmony_ci parameter->Decode(pdu); 298e5d0e473Sopenharmony_ci 299e5d0e473Sopenharmony_ci std::stringstream ss1; 300e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::PRIORITY_INDICATOR); 301e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 302e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 303e5d0e473Sopenharmony_ci ss1 << data[i]; 304e5d0e473Sopenharmony_ci } 305e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 306e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 307e5d0e473Sopenharmony_ci} 308e5d0e473Sopenharmony_ci 309e5d0e473Sopenharmony_civoid PrivacyIndDecode(const uint8_t *data, size_t size) 310e5d0e473Sopenharmony_ci{ 311e5d0e473Sopenharmony_ci SmsPrivacyIndicator value; 312e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsPrivacyInd>(value); 313e5d0e473Sopenharmony_ci if (parameter == nullptr) { 314e5d0e473Sopenharmony_ci return; 315e5d0e473Sopenharmony_ci } 316e5d0e473Sopenharmony_ci 317e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 318e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 319e5d0e473Sopenharmony_ci parameter->Decode(pdu); 320e5d0e473Sopenharmony_ci 321e5d0e473Sopenharmony_ci std::stringstream ss1; 322e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::PRIVACY_INDICATOR); 323e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 324e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 325e5d0e473Sopenharmony_ci ss1 << data[i]; 326e5d0e473Sopenharmony_ci } 327e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 328e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 329e5d0e473Sopenharmony_ci} 330e5d0e473Sopenharmony_ci 331e5d0e473Sopenharmony_civoid ReplyOptionDecode(const uint8_t *data, size_t size) 332e5d0e473Sopenharmony_ci{ 333e5d0e473Sopenharmony_ci SmsReplyOption value; 334e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsReplyOption>(value); 335e5d0e473Sopenharmony_ci if (parameter == nullptr) { 336e5d0e473Sopenharmony_ci return; 337e5d0e473Sopenharmony_ci } 338e5d0e473Sopenharmony_ci 339e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 340e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 341e5d0e473Sopenharmony_ci parameter->Decode(pdu); 342e5d0e473Sopenharmony_ci 343e5d0e473Sopenharmony_ci std::stringstream ss1; 344e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::REPLY_OPTION); 345e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 346e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 347e5d0e473Sopenharmony_ci ss1 << data[i]; 348e5d0e473Sopenharmony_ci } 349e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 350e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 351e5d0e473Sopenharmony_ci} 352e5d0e473Sopenharmony_ci 353e5d0e473Sopenharmony_civoid UserDataDecode(const uint8_t *data, size_t size) 354e5d0e473Sopenharmony_ci{ 355e5d0e473Sopenharmony_ci SmsTeleSvcUserData value; 356e5d0e473Sopenharmony_ci bool headerInd = false; 357e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsUserData>(value, headerInd); 358e5d0e473Sopenharmony_ci if (parameter == nullptr) { 359e5d0e473Sopenharmony_ci return; 360e5d0e473Sopenharmony_ci } 361e5d0e473Sopenharmony_ci 362e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 363e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 364e5d0e473Sopenharmony_ci parameter->Decode(pdu); 365e5d0e473Sopenharmony_ci 366e5d0e473Sopenharmony_ci std::stringstream ss1; 367e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::USER_DATA); 368e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 369e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 370e5d0e473Sopenharmony_ci ss1 << data[i]; 371e5d0e473Sopenharmony_ci } 372e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 373e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 374e5d0e473Sopenharmony_ci} 375e5d0e473Sopenharmony_ci 376e5d0e473Sopenharmony_civoid CmasDataDecode(const uint8_t *data, size_t size) 377e5d0e473Sopenharmony_ci{ 378e5d0e473Sopenharmony_ci SmsTeleSvcCmasData value; 379e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsCmasData>(value); 380e5d0e473Sopenharmony_ci if (parameter == nullptr) { 381e5d0e473Sopenharmony_ci return; 382e5d0e473Sopenharmony_ci } 383e5d0e473Sopenharmony_ci 384e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 385e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 386e5d0e473Sopenharmony_ci parameter->Decode(pdu); 387e5d0e473Sopenharmony_ci 388e5d0e473Sopenharmony_ci std::stringstream ss1; 389e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::USER_DATA); 390e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 391e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 392e5d0e473Sopenharmony_ci ss1 << data[i]; 393e5d0e473Sopenharmony_ci } 394e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 395e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 396e5d0e473Sopenharmony_ci} 397e5d0e473Sopenharmony_ci 398e5d0e473Sopenharmony_civoid AlertPriorityDecode(const uint8_t *data, size_t size) 399e5d0e473Sopenharmony_ci{ 400e5d0e473Sopenharmony_ci SmsAlertPriority value; 401e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsAlertPriority>(value); 402e5d0e473Sopenharmony_ci if (parameter == nullptr) { 403e5d0e473Sopenharmony_ci return; 404e5d0e473Sopenharmony_ci } 405e5d0e473Sopenharmony_ci 406e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 407e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 408e5d0e473Sopenharmony_ci parameter->Decode(pdu); 409e5d0e473Sopenharmony_ci 410e5d0e473Sopenharmony_ci std::stringstream ss1; 411e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::ALERT_ON_MSG_DELIVERY); 412e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 413e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 414e5d0e473Sopenharmony_ci ss1 << data[i]; 415e5d0e473Sopenharmony_ci } 416e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 417e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 418e5d0e473Sopenharmony_ci} 419e5d0e473Sopenharmony_civoid LanguageIndDecode(const uint8_t *data, size_t size) 420e5d0e473Sopenharmony_ci{ 421e5d0e473Sopenharmony_ci SmsLanguageType value; 422e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsLanguageInd>(value); 423e5d0e473Sopenharmony_ci if (parameter == nullptr) { 424e5d0e473Sopenharmony_ci return; 425e5d0e473Sopenharmony_ci } 426e5d0e473Sopenharmony_ci 427e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 428e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 429e5d0e473Sopenharmony_ci parameter->Decode(pdu); 430e5d0e473Sopenharmony_ci 431e5d0e473Sopenharmony_ci std::stringstream ss1; 432e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::LANGUAGE_INDICATOR); 433e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 434e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 435e5d0e473Sopenharmony_ci ss1 << data[i]; 436e5d0e473Sopenharmony_ci } 437e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 438e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 439e5d0e473Sopenharmony_ci} 440e5d0e473Sopenharmony_civoid CallbackNumberDecode(const uint8_t *data, size_t size) 441e5d0e473Sopenharmony_ci{ 442e5d0e473Sopenharmony_ci SmsTeleSvcAddr value; 443e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsCallbackNumber>(value); 444e5d0e473Sopenharmony_ci if (parameter == nullptr) { 445e5d0e473Sopenharmony_ci return; 446e5d0e473Sopenharmony_ci } 447e5d0e473Sopenharmony_ci 448e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 449e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 450e5d0e473Sopenharmony_ci parameter->Decode(pdu); 451e5d0e473Sopenharmony_ci 452e5d0e473Sopenharmony_ci std::stringstream ss1; 453e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::CALLBACK_NUMBER); 454e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 455e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 456e5d0e473Sopenharmony_ci ss1 << data[i]; 457e5d0e473Sopenharmony_ci } 458e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 459e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 460e5d0e473Sopenharmony_ci} 461e5d0e473Sopenharmony_civoid DepositIndexDecode(const uint8_t *data, size_t size) 462e5d0e473Sopenharmony_ci{ 463e5d0e473Sopenharmony_ci uint16_t value; 464e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsDepositIndex>(value); 465e5d0e473Sopenharmony_ci if (parameter == nullptr) { 466e5d0e473Sopenharmony_ci return; 467e5d0e473Sopenharmony_ci } 468e5d0e473Sopenharmony_ci 469e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 470e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 471e5d0e473Sopenharmony_ci parameter->Decode(pdu); 472e5d0e473Sopenharmony_ci 473e5d0e473Sopenharmony_ci std::stringstream ss1; 474e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::MESSAGE_DEPOSIT_INDEX); 475e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 476e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 477e5d0e473Sopenharmony_ci ss1 << data[i]; 478e5d0e473Sopenharmony_ci } 479e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 480e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 481e5d0e473Sopenharmony_ci} 482e5d0e473Sopenharmony_civoid DisplayModeDecode(const uint8_t *data, size_t size) 483e5d0e473Sopenharmony_ci{ 484e5d0e473Sopenharmony_ci SmsDisplayMode value; 485e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsDisplayMode>(value); 486e5d0e473Sopenharmony_ci if (parameter == nullptr) { 487e5d0e473Sopenharmony_ci return; 488e5d0e473Sopenharmony_ci } 489e5d0e473Sopenharmony_ci 490e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 491e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 492e5d0e473Sopenharmony_ci parameter->Decode(pdu); 493e5d0e473Sopenharmony_ci 494e5d0e473Sopenharmony_ci std::stringstream ss1; 495e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::MESSAGE_DISPLAY_MODE); 496e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 497e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 498e5d0e473Sopenharmony_ci ss1 << data[i]; 499e5d0e473Sopenharmony_ci } 500e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 501e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 502e5d0e473Sopenharmony_ci} 503e5d0e473Sopenharmony_civoid MessageStatusDecode(const uint8_t *data, size_t size) 504e5d0e473Sopenharmony_ci{ 505e5d0e473Sopenharmony_ci SmsStatusCode value; 506e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsMessageStatus>(value); 507e5d0e473Sopenharmony_ci if (parameter == nullptr) { 508e5d0e473Sopenharmony_ci return; 509e5d0e473Sopenharmony_ci } 510e5d0e473Sopenharmony_ci 511e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 512e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 513e5d0e473Sopenharmony_ci parameter->Decode(pdu); 514e5d0e473Sopenharmony_ci 515e5d0e473Sopenharmony_ci std::stringstream ss1; 516e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::MESSAGE_STATUS); 517e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 518e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 519e5d0e473Sopenharmony_ci ss1 << data[i]; 520e5d0e473Sopenharmony_ci } 521e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 522e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 523e5d0e473Sopenharmony_ci} 524e5d0e473Sopenharmony_civoid NumberMessagesDecode(const uint8_t *data, size_t size) 525e5d0e473Sopenharmony_ci{ 526e5d0e473Sopenharmony_ci uint32_t value; 527e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsNumberMessages>(value); 528e5d0e473Sopenharmony_ci if (parameter == nullptr) { 529e5d0e473Sopenharmony_ci return; 530e5d0e473Sopenharmony_ci } 531e5d0e473Sopenharmony_ci 532e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 533e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 534e5d0e473Sopenharmony_ci parameter->Decode(pdu); 535e5d0e473Sopenharmony_ci 536e5d0e473Sopenharmony_ci std::stringstream ss1; 537e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::NUMBER_OF_MESSAGES); 538e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 539e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 540e5d0e473Sopenharmony_ci ss1 << data[i]; 541e5d0e473Sopenharmony_ci } 542e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 543e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 544e5d0e473Sopenharmony_ci} 545e5d0e473Sopenharmony_civoid EnhancedVmnDecode(const uint8_t *data, size_t size) 546e5d0e473Sopenharmony_ci{ 547e5d0e473Sopenharmony_ci SmsEnhancedVmn value; 548e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsEnhancedVmn>(value); 549e5d0e473Sopenharmony_ci if (parameter == nullptr) { 550e5d0e473Sopenharmony_ci return; 551e5d0e473Sopenharmony_ci } 552e5d0e473Sopenharmony_ci 553e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 554e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 555e5d0e473Sopenharmony_ci parameter->Decode(pdu); 556e5d0e473Sopenharmony_ci 557e5d0e473Sopenharmony_ci std::stringstream ss1; 558e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::ENHANCED_VMN); 559e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 560e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 561e5d0e473Sopenharmony_ci ss1 << data[i]; 562e5d0e473Sopenharmony_ci } 563e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 564e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 565e5d0e473Sopenharmony_ci} 566e5d0e473Sopenharmony_civoid EnhancedVmnAckDecode(const uint8_t *data, size_t size) 567e5d0e473Sopenharmony_ci{ 568e5d0e473Sopenharmony_ci SmsEnhancedVmnAck value; 569e5d0e473Sopenharmony_ci auto parameter = std::make_unique<CdmaSmsEnhancedVmnAck>(value); 570e5d0e473Sopenharmony_ci if (parameter == nullptr) { 571e5d0e473Sopenharmony_ci return; 572e5d0e473Sopenharmony_ci } 573e5d0e473Sopenharmony_ci 574e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 575e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 576e5d0e473Sopenharmony_ci parameter->Decode(pdu); 577e5d0e473Sopenharmony_ci 578e5d0e473Sopenharmony_ci std::stringstream ss1; 579e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaSmsSubParameter::ENHANCED_VMN_ACK); 580e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(size); 581e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 582e5d0e473Sopenharmony_ci ss1 << data[i]; 583e5d0e473Sopenharmony_ci } 584e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 585e5d0e473Sopenharmony_ci parameter->Decode(rBuffer1); 586e5d0e473Sopenharmony_ci} 587e5d0e473Sopenharmony_ci 588e5d0e473Sopenharmony_civoid TransportMessageDecode(const uint8_t *data, size_t size) 589e5d0e473Sopenharmony_ci{ 590e5d0e473Sopenharmony_ci std::string strValue(reinterpret_cast<const char *>(data), size); 591e5d0e473Sopenharmony_ci SmsReadBuffer pdu(strValue); 592e5d0e473Sopenharmony_ci CdmaTransportMsg msg; 593e5d0e473Sopenharmony_ci auto message = CdmaSmsTransportMessage::CreateTransportMessage(msg, pdu); 594e5d0e473Sopenharmony_ci if (message == nullptr) { 595e5d0e473Sopenharmony_ci return; 596e5d0e473Sopenharmony_ci } 597e5d0e473Sopenharmony_ci message->Decode(pdu); 598e5d0e473Sopenharmony_ci 599e5d0e473Sopenharmony_ci std::stringstream ss1; 600e5d0e473Sopenharmony_ci ss1 << static_cast<uint8_t>(CdmaTransportMsgType::P2P); 601e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 602e5d0e473Sopenharmony_ci ss1 << data[i]; 603e5d0e473Sopenharmony_ci } 604e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer1(ss1.str()); 605e5d0e473Sopenharmony_ci memset_s(&msg, sizeof(msg), 0, sizeof(msg)); 606e5d0e473Sopenharmony_ci auto message1 = CdmaSmsTransportMessage::CreateTransportMessage(msg, rBuffer1); 607e5d0e473Sopenharmony_ci if (message1 == nullptr) { 608e5d0e473Sopenharmony_ci return; 609e5d0e473Sopenharmony_ci } 610e5d0e473Sopenharmony_ci message1->Decode(rBuffer1); 611e5d0e473Sopenharmony_ci 612e5d0e473Sopenharmony_ci std::stringstream ss2; 613e5d0e473Sopenharmony_ci ss2 << static_cast<uint8_t>(CdmaTransportMsgType::BROADCAST); 614e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 615e5d0e473Sopenharmony_ci ss2 << data[i]; 616e5d0e473Sopenharmony_ci } 617e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer2(ss2.str()); 618e5d0e473Sopenharmony_ci memset_s(&msg, sizeof(msg), 0, sizeof(msg)); 619e5d0e473Sopenharmony_ci auto message2 = CdmaSmsTransportMessage::CreateTransportMessage(msg, rBuffer2); 620e5d0e473Sopenharmony_ci if (message2 == nullptr) { 621e5d0e473Sopenharmony_ci return; 622e5d0e473Sopenharmony_ci } 623e5d0e473Sopenharmony_ci message2->Decode(rBuffer2); 624e5d0e473Sopenharmony_ci 625e5d0e473Sopenharmony_ci std::stringstream ss3; 626e5d0e473Sopenharmony_ci ss3 << static_cast<uint8_t>(CdmaTransportMsgType::ACK); 627e5d0e473Sopenharmony_ci for (uint8_t i = 0; i < size; i++) { 628e5d0e473Sopenharmony_ci ss3 << data[i]; 629e5d0e473Sopenharmony_ci } 630e5d0e473Sopenharmony_ci SmsReadBuffer rBuffer3(ss3.str()); 631e5d0e473Sopenharmony_ci memset_s(&msg, sizeof(msg), 0, sizeof(msg)); 632e5d0e473Sopenharmony_ci auto message3 = CdmaSmsTransportMessage::CreateTransportMessage(msg, rBuffer3); 633e5d0e473Sopenharmony_ci if (message3 == nullptr) { 634e5d0e473Sopenharmony_ci return; 635e5d0e473Sopenharmony_ci } 636e5d0e473Sopenharmony_ci message3->Decode(rBuffer3); 637e5d0e473Sopenharmony_ci} 638e5d0e473Sopenharmony_ci 639e5d0e473Sopenharmony_civoid ParameterRecordDecode(const uint8_t *data, size_t size) 640e5d0e473Sopenharmony_ci{ 641e5d0e473Sopenharmony_ci TeleserviceIdDecode(data, size); 642e5d0e473Sopenharmony_ci ServiceCategoryDecode(data, size); 643e5d0e473Sopenharmony_ci BearerReplyDecode(data, size); 644e5d0e473Sopenharmony_ci CauseCodesDecode(data, size); 645e5d0e473Sopenharmony_ci AddressParameterDecode(data, size); 646e5d0e473Sopenharmony_ci SubaddressDecode(data, size); 647e5d0e473Sopenharmony_ci BearerDataDecode(data, size); 648e5d0e473Sopenharmony_ci} 649e5d0e473Sopenharmony_ci 650e5d0e473Sopenharmony_civoid SubParameterDecode(const uint8_t *data, size_t size) 651e5d0e473Sopenharmony_ci{ 652e5d0e473Sopenharmony_ci BaseParameterDecode(data, size); 653e5d0e473Sopenharmony_ci ReservedParameterDecode(data, size); 654e5d0e473Sopenharmony_ci MessageIdDecode(data, size); 655e5d0e473Sopenharmony_ci AbsoluteTimeDecode(data, size); 656e5d0e473Sopenharmony_ci PriorityIndDecode(data, size); 657e5d0e473Sopenharmony_ci PrivacyIndDecode(data, size); 658e5d0e473Sopenharmony_ci ReplyOptionDecode(data, size); 659e5d0e473Sopenharmony_ci UserDataDecode(data, size); 660e5d0e473Sopenharmony_ci CmasDataDecode(data, size); 661e5d0e473Sopenharmony_ci AlertPriorityDecode(data, size); 662e5d0e473Sopenharmony_ci LanguageIndDecode(data, size); 663e5d0e473Sopenharmony_ci CallbackNumberDecode(data, size); 664e5d0e473Sopenharmony_ci DepositIndexDecode(data, size); 665e5d0e473Sopenharmony_ci DisplayModeDecode(data, size); 666e5d0e473Sopenharmony_ci MessageStatusDecode(data, size); 667e5d0e473Sopenharmony_ci NumberMessagesDecode(data, size); 668e5d0e473Sopenharmony_ci EnhancedVmnDecode(data, size); 669e5d0e473Sopenharmony_ci EnhancedVmnAckDecode(data, size); 670e5d0e473Sopenharmony_ci} 671e5d0e473Sopenharmony_ci 672e5d0e473Sopenharmony_civoid DoSomethingInterestingWithMyAPI(const uint8_t *data, size_t size) 673e5d0e473Sopenharmony_ci{ 674e5d0e473Sopenharmony_ci if (data == nullptr || size == 0 || size > PDU_BUFFER_MAX_SIZE) { 675e5d0e473Sopenharmony_ci return; 676e5d0e473Sopenharmony_ci } 677e5d0e473Sopenharmony_ci 678e5d0e473Sopenharmony_ci if (g_flag) { 679e5d0e473Sopenharmony_ci return; 680e5d0e473Sopenharmony_ci } 681e5d0e473Sopenharmony_ci g_flag = true; 682e5d0e473Sopenharmony_ci 683e5d0e473Sopenharmony_ci TransportMessageDecode(data, size); 684e5d0e473Sopenharmony_ci ParameterRecordDecode(data, size); 685e5d0e473Sopenharmony_ci SubParameterDecode(data, size); 686e5d0e473Sopenharmony_ci} 687e5d0e473Sopenharmony_ci 688e5d0e473Sopenharmony_ci} // namespace OHOS 689e5d0e473Sopenharmony_ci 690e5d0e473Sopenharmony_ci/* Fuzzer entry point */ 691e5d0e473Sopenharmony_ciextern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) 692e5d0e473Sopenharmony_ci{ 693e5d0e473Sopenharmony_ci /* Run your code on data */ 694e5d0e473Sopenharmony_ci OHOS::AddSmsTokenFuzzer token; 695e5d0e473Sopenharmony_ci OHOS::DoSomethingInterestingWithMyAPI(data, size); 696e5d0e473Sopenharmony_ci return 0; 697e5d0e473Sopenharmony_ci} 698