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