Coverage Report

Created: 2026-08-17 06:12

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/dcsf_info.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "dcsf_info.h"
6
7
OpenAPI_dcsf_info_t *OpenAPI_dcsf_info_create(
8
    OpenAPI_list_t *ims_domain_name_list,
9
    OpenAPI_list_t *imsi_ranges,
10
    OpenAPI_list_t *ims_private_identity_ranges,
11
    OpenAPI_list_t *ims_public_identity_ranges,
12
    OpenAPI_list_t *msisdn_ranges
13
)
14
4.81k
{
15
4.81k
    OpenAPI_dcsf_info_t *dcsf_info_local_var = ogs_malloc(sizeof(OpenAPI_dcsf_info_t));
16
4.81k
    ogs_assert(dcsf_info_local_var);
17
18
4.81k
    dcsf_info_local_var->ims_domain_name_list = ims_domain_name_list;
19
4.81k
    dcsf_info_local_var->imsi_ranges = imsi_ranges;
20
4.81k
    dcsf_info_local_var->ims_private_identity_ranges = ims_private_identity_ranges;
21
4.81k
    dcsf_info_local_var->ims_public_identity_ranges = ims_public_identity_ranges;
22
4.81k
    dcsf_info_local_var->msisdn_ranges = msisdn_ranges;
23
24
4.81k
    return dcsf_info_local_var;
25
4.81k
}
26
27
void OpenAPI_dcsf_info_free(OpenAPI_dcsf_info_t *dcsf_info)
28
8.82k
{
29
8.82k
    OpenAPI_lnode_t *node = NULL;
30
31
8.82k
    if (NULL == dcsf_info) {
32
4.01k
        return;
33
4.01k
    }
34
4.81k
    if (dcsf_info->ims_domain_name_list) {
35
582
        OpenAPI_list_for_each(dcsf_info->ims_domain_name_list, node) {
36
582
            ogs_free(node->data);
37
582
        }
38
396
        OpenAPI_list_free(dcsf_info->ims_domain_name_list);
39
396
        dcsf_info->ims_domain_name_list = NULL;
40
396
    }
41
4.81k
    if (dcsf_info->imsi_ranges) {
42
1.25k
        OpenAPI_list_for_each(dcsf_info->imsi_ranges, node) {
43
1.25k
            OpenAPI_imsi_range_free(node->data);
44
1.25k
        }
45
420
        OpenAPI_list_free(dcsf_info->imsi_ranges);
46
420
        dcsf_info->imsi_ranges = NULL;
47
420
    }
48
4.81k
    if (dcsf_info->ims_private_identity_ranges) {
49
397
        OpenAPI_list_for_each(dcsf_info->ims_private_identity_ranges, node) {
50
297
            OpenAPI_identity_range_free(node->data);
51
297
        }
52
397
        OpenAPI_list_free(dcsf_info->ims_private_identity_ranges);
53
397
        dcsf_info->ims_private_identity_ranges = NULL;
54
397
    }
55
4.81k
    if (dcsf_info->ims_public_identity_ranges) {
56
396
        OpenAPI_list_for_each(dcsf_info->ims_public_identity_ranges, node) {
57
396
            OpenAPI_identity_range_free(node->data);
58
396
        }
59
396
        OpenAPI_list_free(dcsf_info->ims_public_identity_ranges);
60
396
        dcsf_info->ims_public_identity_ranges = NULL;
61
396
    }
62
4.81k
    if (dcsf_info->msisdn_ranges) {
63
338
        OpenAPI_list_for_each(dcsf_info->msisdn_ranges, node) {
64
338
            OpenAPI_identity_range_free(node->data);
65
338
        }
66
269
        OpenAPI_list_free(dcsf_info->msisdn_ranges);
67
269
        dcsf_info->msisdn_ranges = NULL;
68
269
    }
69
4.81k
    ogs_free(dcsf_info);
70
4.81k
}
71
72
cJSON *OpenAPI_dcsf_info_convertToJSON(OpenAPI_dcsf_info_t *dcsf_info)
73
0
{
74
0
    cJSON *item = NULL;
75
0
    OpenAPI_lnode_t *node = NULL;
76
77
0
    if (dcsf_info == NULL) {
78
0
        ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [DcsfInfo]");
79
0
        return NULL;
80
0
    }
81
82
0
    item = cJSON_CreateObject();
83
0
    if (dcsf_info->ims_domain_name_list) {
84
0
    cJSON *ims_domain_name_listList = cJSON_AddArrayToObject(item, "imsDomainNameList");
85
0
    if (ims_domain_name_listList == NULL) {
86
0
        ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [ims_domain_name_list]");
87
0
        goto end;
88
0
    }
89
0
    OpenAPI_list_for_each(dcsf_info->ims_domain_name_list, node) {
90
0
        if (cJSON_AddStringToObject(ims_domain_name_listList, "", (char*)node->data) == NULL) {
91
0
            ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [ims_domain_name_list]");
92
0
            goto end;
93
0
        }
94
0
    }
95
0
    }
96
97
0
    if (dcsf_info->imsi_ranges) {
98
0
    cJSON *imsi_rangesList = cJSON_AddArrayToObject(item, "imsiRanges");
99
0
    if (imsi_rangesList == NULL) {
100
0
        ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [imsi_ranges]");
101
0
        goto end;
102
0
    }
103
0
    OpenAPI_list_for_each(dcsf_info->imsi_ranges, node) {
104
0
        cJSON *itemLocal = OpenAPI_imsi_range_convertToJSON(node->data);
105
0
        if (itemLocal == NULL) {
106
0
            ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [imsi_ranges]");
107
0
            goto end;
108
0
        }
109
0
        cJSON_AddItemToArray(imsi_rangesList, itemLocal);
110
0
    }
111
0
    }
112
113
0
    if (dcsf_info->ims_private_identity_ranges) {
114
0
    cJSON *ims_private_identity_rangesList = cJSON_AddArrayToObject(item, "imsPrivateIdentityRanges");
115
0
    if (ims_private_identity_rangesList == NULL) {
116
0
        ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [ims_private_identity_ranges]");
117
0
        goto end;
118
0
    }
119
0
    OpenAPI_list_for_each(dcsf_info->ims_private_identity_ranges, node) {
120
0
        cJSON *itemLocal = OpenAPI_identity_range_convertToJSON(node->data);
121
0
        if (itemLocal == NULL) {
122
0
            ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [ims_private_identity_ranges]");
123
0
            goto end;
124
0
        }
125
0
        cJSON_AddItemToArray(ims_private_identity_rangesList, itemLocal);
126
0
    }
127
0
    }
128
129
0
    if (dcsf_info->ims_public_identity_ranges) {
130
0
    cJSON *ims_public_identity_rangesList = cJSON_AddArrayToObject(item, "imsPublicIdentityRanges");
131
0
    if (ims_public_identity_rangesList == NULL) {
132
0
        ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [ims_public_identity_ranges]");
133
0
        goto end;
134
0
    }
135
0
    OpenAPI_list_for_each(dcsf_info->ims_public_identity_ranges, node) {
136
0
        cJSON *itemLocal = OpenAPI_identity_range_convertToJSON(node->data);
137
0
        if (itemLocal == NULL) {
138
0
            ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [ims_public_identity_ranges]");
139
0
            goto end;
140
0
        }
141
0
        cJSON_AddItemToArray(ims_public_identity_rangesList, itemLocal);
142
0
    }
143
0
    }
144
145
0
    if (dcsf_info->msisdn_ranges) {
146
0
    cJSON *msisdn_rangesList = cJSON_AddArrayToObject(item, "msisdnRanges");
147
0
    if (msisdn_rangesList == NULL) {
148
0
        ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [msisdn_ranges]");
149
0
        goto end;
150
0
    }
151
0
    OpenAPI_list_for_each(dcsf_info->msisdn_ranges, node) {
152
0
        cJSON *itemLocal = OpenAPI_identity_range_convertToJSON(node->data);
153
0
        if (itemLocal == NULL) {
154
0
            ogs_error("OpenAPI_dcsf_info_convertToJSON() failed [msisdn_ranges]");
155
0
            goto end;
156
0
        }
157
0
        cJSON_AddItemToArray(msisdn_rangesList, itemLocal);
158
0
    }
159
0
    }
160
161
0
end:
162
0
    return item;
163
0
}
164
165
OpenAPI_dcsf_info_t *OpenAPI_dcsf_info_parseFromJSON(cJSON *dcsf_infoJSON)
166
8.23k
{
167
8.23k
    OpenAPI_dcsf_info_t *dcsf_info_local_var = NULL;
168
8.23k
    OpenAPI_lnode_t *node = NULL;
169
8.23k
    cJSON *ims_domain_name_list = NULL;
170
8.23k
    OpenAPI_list_t *ims_domain_name_listList = NULL;
171
8.23k
    cJSON *imsi_ranges = NULL;
172
8.23k
    OpenAPI_list_t *imsi_rangesList = NULL;
173
8.23k
    cJSON *ims_private_identity_ranges = NULL;
174
8.23k
    OpenAPI_list_t *ims_private_identity_rangesList = NULL;
175
8.23k
    cJSON *ims_public_identity_ranges = NULL;
176
8.23k
    OpenAPI_list_t *ims_public_identity_rangesList = NULL;
177
8.23k
    cJSON *msisdn_ranges = NULL;
178
8.23k
    OpenAPI_list_t *msisdn_rangesList = NULL;
179
8.23k
    ims_domain_name_list = cJSON_GetObjectItemCaseSensitive(dcsf_infoJSON, "imsDomainNameList");
180
8.23k
    if (ims_domain_name_list) {
181
1.01k
        cJSON *ims_domain_name_list_local = NULL;
182
1.01k
        if (!cJSON_IsArray(ims_domain_name_list)) {
183
226
            ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [ims_domain_name_list]");
184
226
            goto end;
185
226
        }
186
187
793
        ims_domain_name_listList = OpenAPI_list_create();
188
189
1.50k
        cJSON_ArrayForEach(ims_domain_name_list_local, ims_domain_name_list) {
190
1.50k
            double *localDouble = NULL;
191
1.50k
            int *localInt = NULL;
192
1.50k
            if (!cJSON_IsString(ims_domain_name_list_local)) {
193
397
                ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [ims_domain_name_list]");
194
397
                goto end;
195
397
            }
196
1.10k
            OpenAPI_list_add(ims_domain_name_listList, ogs_strdup(ims_domain_name_list_local->valuestring));
197
1.10k
        }
198
793
    }
199
200
7.61k
    imsi_ranges = cJSON_GetObjectItemCaseSensitive(dcsf_infoJSON, "imsiRanges");
201
7.61k
    if (imsi_ranges) {
202
1.02k
        cJSON *imsi_ranges_local = NULL;
203
1.02k
        if (!cJSON_IsArray(imsi_ranges)) {
204
66
            ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [imsi_ranges]");
205
66
            goto end;
206
66
        }
207
208
961
        imsi_rangesList = OpenAPI_list_create();
209
210
2.26k
        cJSON_ArrayForEach(imsi_ranges_local, imsi_ranges) {
211
2.26k
            if (!cJSON_IsObject(imsi_ranges_local)) {
212
404
                ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [imsi_ranges]");
213
404
                goto end;
214
404
            }
215
1.85k
            OpenAPI_imsi_range_t *imsi_rangesItem = OpenAPI_imsi_range_parseFromJSON(imsi_ranges_local);
216
1.85k
            if (!imsi_rangesItem) {
217
137
                ogs_error("No imsi_rangesItem");
218
137
                goto end;
219
137
            }
220
1.72k
            OpenAPI_list_add(imsi_rangesList, imsi_rangesItem);
221
1.72k
        }
222
961
    }
223
224
7.00k
    ims_private_identity_ranges = cJSON_GetObjectItemCaseSensitive(dcsf_infoJSON, "imsPrivateIdentityRanges");
225
7.00k
    if (ims_private_identity_ranges) {
226
1.09k
        cJSON *ims_private_identity_ranges_local = NULL;
227
1.09k
        if (!cJSON_IsArray(ims_private_identity_ranges)) {
228
196
            ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [ims_private_identity_ranges]");
229
196
            goto end;
230
196
        }
231
232
902
        ims_private_identity_rangesList = OpenAPI_list_create();
233
234
1.22k
        cJSON_ArrayForEach(ims_private_identity_ranges_local, ims_private_identity_ranges) {
235
1.22k
            if (!cJSON_IsObject(ims_private_identity_ranges_local)) {
236
438
                ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [ims_private_identity_ranges]");
237
438
                goto end;
238
438
            }
239
787
            OpenAPI_identity_range_t *ims_private_identity_rangesItem = OpenAPI_identity_range_parseFromJSON(ims_private_identity_ranges_local);
240
787
            if (!ims_private_identity_rangesItem) {
241
67
                ogs_error("No ims_private_identity_rangesItem");
242
67
                goto end;
243
67
            }
244
720
            OpenAPI_list_add(ims_private_identity_rangesList, ims_private_identity_rangesItem);
245
720
        }
246
902
    }
247
248
6.30k
    ims_public_identity_ranges = cJSON_GetObjectItemCaseSensitive(dcsf_infoJSON, "imsPublicIdentityRanges");
249
6.30k
    if (ims_public_identity_ranges) {
250
1.09k
        cJSON *ims_public_identity_ranges_local = NULL;
251
1.09k
        if (!cJSON_IsArray(ims_public_identity_ranges)) {
252
210
            ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [ims_public_identity_ranges]");
253
210
            goto end;
254
210
        }
255
256
884
        ims_public_identity_rangesList = OpenAPI_list_create();
257
258
1.22k
        cJSON_ArrayForEach(ims_public_identity_ranges_local, ims_public_identity_ranges) {
259
1.22k
            if (!cJSON_IsObject(ims_public_identity_ranges_local)) {
260
422
                ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [ims_public_identity_ranges]");
261
422
                goto end;
262
422
            }
263
803
            OpenAPI_identity_range_t *ims_public_identity_rangesItem = OpenAPI_identity_range_parseFromJSON(ims_public_identity_ranges_local);
264
803
            if (!ims_public_identity_rangesItem) {
265
66
                ogs_error("No ims_public_identity_rangesItem");
266
66
                goto end;
267
66
            }
268
737
            OpenAPI_list_add(ims_public_identity_rangesList, ims_public_identity_rangesItem);
269
737
        }
270
884
    }
271
272
5.60k
    msisdn_ranges = cJSON_GetObjectItemCaseSensitive(dcsf_infoJSON, "msisdnRanges");
273
5.60k
    if (msisdn_ranges) {
274
1.06k
        cJSON *msisdn_ranges_local = NULL;
275
1.06k
        if (!cJSON_IsArray(msisdn_ranges)) {
276
204
            ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [msisdn_ranges]");
277
204
            goto end;
278
204
        }
279
280
860
        msisdn_rangesList = OpenAPI_list_create();
281
282
1.32k
        cJSON_ArrayForEach(msisdn_ranges_local, msisdn_ranges) {
283
1.32k
            if (!cJSON_IsObject(msisdn_ranges_local)) {
284
397
                ogs_error("OpenAPI_dcsf_info_parseFromJSON() failed [msisdn_ranges]");
285
397
                goto end;
286
397
            }
287
931
            OpenAPI_identity_range_t *msisdn_rangesItem = OpenAPI_identity_range_parseFromJSON(msisdn_ranges_local);
288
931
            if (!msisdn_rangesItem) {
289
194
                ogs_error("No msisdn_rangesItem");
290
194
                goto end;
291
194
            }
292
737
            OpenAPI_list_add(msisdn_rangesList, msisdn_rangesItem);
293
737
        }
294
860
    }
295
296
4.81k
    dcsf_info_local_var = OpenAPI_dcsf_info_create (
297
4.81k
        ims_domain_name_list ? ims_domain_name_listList : NULL,
298
4.81k
        imsi_ranges ? imsi_rangesList : NULL,
299
4.81k
        ims_private_identity_ranges ? ims_private_identity_rangesList : NULL,
300
4.81k
        ims_public_identity_ranges ? ims_public_identity_rangesList : NULL,
301
4.81k
        msisdn_ranges ? msisdn_rangesList : NULL
302
4.81k
    );
303
304
4.81k
    return dcsf_info_local_var;
305
3.42k
end:
306
3.42k
    if (ims_domain_name_listList) {
307
526
        OpenAPI_list_for_each(ims_domain_name_listList, node) {
308
526
            ogs_free(node->data);
309
526
        }
310
397
        OpenAPI_list_free(ims_domain_name_listList);
311
397
        ims_domain_name_listList = NULL;
312
397
    }
313
3.42k
    if (imsi_rangesList) {
314
541
        OpenAPI_list_for_each(imsi_rangesList, node) {
315
465
            OpenAPI_imsi_range_free(node->data);
316
465
        }
317
541
        OpenAPI_list_free(imsi_rangesList);
318
541
        imsi_rangesList = NULL;
319
541
    }
320
3.42k
    if (ims_private_identity_rangesList) {
321
505
        OpenAPI_list_for_each(ims_private_identity_rangesList, node) {
322
423
            OpenAPI_identity_range_free(node->data);
323
423
        }
324
505
        OpenAPI_list_free(ims_private_identity_rangesList);
325
505
        ims_private_identity_rangesList = NULL;
326
505
    }
327
3.42k
    if (ims_public_identity_rangesList) {
328
488
        OpenAPI_list_for_each(ims_public_identity_rangesList, node) {
329
341
            OpenAPI_identity_range_free(node->data);
330
341
        }
331
488
        OpenAPI_list_free(ims_public_identity_rangesList);
332
488
        ims_public_identity_rangesList = NULL;
333
488
    }
334
3.42k
    if (msisdn_rangesList) {
335
591
        OpenAPI_list_for_each(msisdn_rangesList, node) {
336
399
            OpenAPI_identity_range_free(node->data);
337
399
        }
338
591
        OpenAPI_list_free(msisdn_rangesList);
339
591
        msisdn_rangesList = NULL;
340
591
    }
341
3.42k
    return NULL;
342
5.60k
}
343
344
OpenAPI_dcsf_info_t *OpenAPI_dcsf_info_copy(OpenAPI_dcsf_info_t *dst, OpenAPI_dcsf_info_t *src)
345
0
{
346
0
    cJSON *item = NULL;
347
0
    char *content = NULL;
348
349
0
    ogs_assert(src);
350
0
    item = OpenAPI_dcsf_info_convertToJSON(src);
351
0
    if (!item) {
352
0
        ogs_error("OpenAPI_dcsf_info_convertToJSON() failed");
353
0
        return NULL;
354
0
    }
355
356
0
    content = cJSON_Print(item);
357
0
    cJSON_Delete(item);
358
359
0
    if (!content) {
360
0
        ogs_error("cJSON_Print() failed");
361
0
        return NULL;
362
0
    }
363
364
0
    item = cJSON_Parse(content);
365
0
    ogs_free(content);
366
0
    if (!item) {
367
0
        ogs_error("cJSON_Parse() failed");
368
0
        return NULL;
369
0
    }
370
371
0
    OpenAPI_dcsf_info_free(dst);
372
0
    dst = OpenAPI_dcsf_info_parseFromJSON(item);
373
0
    cJSON_Delete(item);
374
375
0
    return dst;
376
0
}
377