Coverage Report

Created: 2026-06-30 06:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/tsctsf_info.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "tsctsf_info.h"
6
7
OpenAPI_tsctsf_info_t *OpenAPI_tsctsf_info_create(
8
    OpenAPI_list_t* s_nssai_info_list,
9
    OpenAPI_list_t *external_group_identifiers_ranges,
10
    OpenAPI_list_t *supi_ranges,
11
    OpenAPI_list_t *gpsi_ranges,
12
    OpenAPI_list_t *internal_group_identifiers_ranges
13
)
14
4.46k
{
15
4.46k
    OpenAPI_tsctsf_info_t *tsctsf_info_local_var = ogs_malloc(sizeof(OpenAPI_tsctsf_info_t));
16
4.46k
    ogs_assert(tsctsf_info_local_var);
17
18
4.46k
    tsctsf_info_local_var->s_nssai_info_list = s_nssai_info_list;
19
4.46k
    tsctsf_info_local_var->external_group_identifiers_ranges = external_group_identifiers_ranges;
20
4.46k
    tsctsf_info_local_var->supi_ranges = supi_ranges;
21
4.46k
    tsctsf_info_local_var->gpsi_ranges = gpsi_ranges;
22
4.46k
    tsctsf_info_local_var->internal_group_identifiers_ranges = internal_group_identifiers_ranges;
23
24
4.46k
    return tsctsf_info_local_var;
25
4.46k
}
26
27
void OpenAPI_tsctsf_info_free(OpenAPI_tsctsf_info_t *tsctsf_info)
28
6.62k
{
29
6.62k
    OpenAPI_lnode_t *node = NULL;
30
31
6.62k
    if (NULL == tsctsf_info) {
32
2.15k
        return;
33
2.15k
    }
34
4.46k
    if (tsctsf_info->s_nssai_info_list) {
35
815
        OpenAPI_list_for_each(tsctsf_info->s_nssai_info_list, node) {
36
815
            OpenAPI_map_t *localKeyValue = (OpenAPI_map_t*)node->data;
37
815
            ogs_free(localKeyValue->key);
38
815
            OpenAPI_snssai_tsctsf_info_item_free(localKeyValue->value);
39
815
            OpenAPI_map_free(localKeyValue);
40
815
        }
41
286
        OpenAPI_list_free(tsctsf_info->s_nssai_info_list);
42
286
        tsctsf_info->s_nssai_info_list = NULL;
43
286
    }
44
4.46k
    if (tsctsf_info->external_group_identifiers_ranges) {
45
35
        OpenAPI_list_for_each(tsctsf_info->external_group_identifiers_ranges, node) {
46
10
            OpenAPI_identity_range_free(node->data);
47
10
        }
48
35
        OpenAPI_list_free(tsctsf_info->external_group_identifiers_ranges);
49
35
        tsctsf_info->external_group_identifiers_ranges = NULL;
50
35
    }
51
4.46k
    if (tsctsf_info->supi_ranges) {
52
136
        OpenAPI_list_for_each(tsctsf_info->supi_ranges, node) {
53
101
            OpenAPI_supi_range_free(node->data);
54
101
        }
55
136
        OpenAPI_list_free(tsctsf_info->supi_ranges);
56
136
        tsctsf_info->supi_ranges = NULL;
57
136
    }
58
4.46k
    if (tsctsf_info->gpsi_ranges) {
59
396
        OpenAPI_list_for_each(tsctsf_info->gpsi_ranges, node) {
60
65
            OpenAPI_identity_range_free(node->data);
61
65
        }
62
396
        OpenAPI_list_free(tsctsf_info->gpsi_ranges);
63
396
        tsctsf_info->gpsi_ranges = NULL;
64
396
    }
65
4.46k
    if (tsctsf_info->internal_group_identifiers_ranges) {
66
10
        OpenAPI_list_for_each(tsctsf_info->internal_group_identifiers_ranges, node) {
67
0
            OpenAPI_internal_group_id_range_free(node->data);
68
0
        }
69
10
        OpenAPI_list_free(tsctsf_info->internal_group_identifiers_ranges);
70
10
        tsctsf_info->internal_group_identifiers_ranges = NULL;
71
10
    }
72
4.46k
    ogs_free(tsctsf_info);
73
4.46k
}
74
75
cJSON *OpenAPI_tsctsf_info_convertToJSON(OpenAPI_tsctsf_info_t *tsctsf_info)
76
0
{
77
0
    cJSON *item = NULL;
78
0
    OpenAPI_lnode_t *node = NULL;
79
80
0
    if (tsctsf_info == NULL) {
81
0
        ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [TsctsfInfo]");
82
0
        return NULL;
83
0
    }
84
85
0
    item = cJSON_CreateObject();
86
0
    if (tsctsf_info->s_nssai_info_list) {
87
0
    cJSON *s_nssai_info_list = cJSON_AddObjectToObject(item, "sNssaiInfoList");
88
0
    if (s_nssai_info_list == NULL) {
89
0
        ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [s_nssai_info_list]");
90
0
        goto end;
91
0
    }
92
0
    cJSON *localMapObject = s_nssai_info_list;
93
0
    if (tsctsf_info->s_nssai_info_list) {
94
0
        OpenAPI_list_for_each(tsctsf_info->s_nssai_info_list, node) {
95
0
            OpenAPI_map_t *localKeyValue = (OpenAPI_map_t*)node->data;
96
0
            if (localKeyValue == NULL) {
97
0
                ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [s_nssai_info_list]");
98
0
                goto end;
99
0
            }
100
0
            if (localKeyValue->key == NULL) {
101
0
                ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [s_nssai_info_list]");
102
0
                goto end;
103
0
            }
104
0
            cJSON *itemLocal = localKeyValue->value ?
105
0
                OpenAPI_snssai_tsctsf_info_item_convertToJSON(localKeyValue->value) :
106
0
                cJSON_CreateNull();
107
0
            if (itemLocal == NULL) {
108
0
                ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [inner]");
109
0
                goto end;
110
0
            }
111
0
            cJSON_AddItemToObject(localMapObject, localKeyValue->key, itemLocal);
112
0
        }
113
0
    }
114
0
    }
115
116
0
    if (tsctsf_info->external_group_identifiers_ranges) {
117
0
    cJSON *external_group_identifiers_rangesList = cJSON_AddArrayToObject(item, "externalGroupIdentifiersRanges");
118
0
    if (external_group_identifiers_rangesList == NULL) {
119
0
        ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [external_group_identifiers_ranges]");
120
0
        goto end;
121
0
    }
122
0
    OpenAPI_list_for_each(tsctsf_info->external_group_identifiers_ranges, node) {
123
0
        cJSON *itemLocal = OpenAPI_identity_range_convertToJSON(node->data);
124
0
        if (itemLocal == NULL) {
125
0
            ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [external_group_identifiers_ranges]");
126
0
            goto end;
127
0
        }
128
0
        cJSON_AddItemToArray(external_group_identifiers_rangesList, itemLocal);
129
0
    }
130
0
    }
131
132
0
    if (tsctsf_info->supi_ranges) {
133
0
    cJSON *supi_rangesList = cJSON_AddArrayToObject(item, "supiRanges");
134
0
    if (supi_rangesList == NULL) {
135
0
        ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [supi_ranges]");
136
0
        goto end;
137
0
    }
138
0
    OpenAPI_list_for_each(tsctsf_info->supi_ranges, node) {
139
0
        cJSON *itemLocal = OpenAPI_supi_range_convertToJSON(node->data);
140
0
        if (itemLocal == NULL) {
141
0
            ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [supi_ranges]");
142
0
            goto end;
143
0
        }
144
0
        cJSON_AddItemToArray(supi_rangesList, itemLocal);
145
0
    }
146
0
    }
147
148
0
    if (tsctsf_info->gpsi_ranges) {
149
0
    cJSON *gpsi_rangesList = cJSON_AddArrayToObject(item, "gpsiRanges");
150
0
    if (gpsi_rangesList == NULL) {
151
0
        ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [gpsi_ranges]");
152
0
        goto end;
153
0
    }
154
0
    OpenAPI_list_for_each(tsctsf_info->gpsi_ranges, node) {
155
0
        cJSON *itemLocal = OpenAPI_identity_range_convertToJSON(node->data);
156
0
        if (itemLocal == NULL) {
157
0
            ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [gpsi_ranges]");
158
0
            goto end;
159
0
        }
160
0
        cJSON_AddItemToArray(gpsi_rangesList, itemLocal);
161
0
    }
162
0
    }
163
164
0
    if (tsctsf_info->internal_group_identifiers_ranges) {
165
0
    cJSON *internal_group_identifiers_rangesList = cJSON_AddArrayToObject(item, "internalGroupIdentifiersRanges");
166
0
    if (internal_group_identifiers_rangesList == NULL) {
167
0
        ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [internal_group_identifiers_ranges]");
168
0
        goto end;
169
0
    }
170
0
    OpenAPI_list_for_each(tsctsf_info->internal_group_identifiers_ranges, node) {
171
0
        cJSON *itemLocal = OpenAPI_internal_group_id_range_convertToJSON(node->data);
172
0
        if (itemLocal == NULL) {
173
0
            ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed [internal_group_identifiers_ranges]");
174
0
            goto end;
175
0
        }
176
0
        cJSON_AddItemToArray(internal_group_identifiers_rangesList, itemLocal);
177
0
    }
178
0
    }
179
180
0
end:
181
0
    return item;
182
0
}
183
184
OpenAPI_tsctsf_info_t *OpenAPI_tsctsf_info_parseFromJSON(cJSON *tsctsf_infoJSON)
185
5.97k
{
186
5.97k
    OpenAPI_tsctsf_info_t *tsctsf_info_local_var = NULL;
187
5.97k
    OpenAPI_lnode_t *node = NULL;
188
5.97k
    cJSON *s_nssai_info_list = NULL;
189
5.97k
    OpenAPI_list_t *s_nssai_info_listList = NULL;
190
5.97k
    cJSON *external_group_identifiers_ranges = NULL;
191
5.97k
    OpenAPI_list_t *external_group_identifiers_rangesList = NULL;
192
5.97k
    cJSON *supi_ranges = NULL;
193
5.97k
    OpenAPI_list_t *supi_rangesList = NULL;
194
5.97k
    cJSON *gpsi_ranges = NULL;
195
5.97k
    OpenAPI_list_t *gpsi_rangesList = NULL;
196
5.97k
    cJSON *internal_group_identifiers_ranges = NULL;
197
5.97k
    OpenAPI_list_t *internal_group_identifiers_rangesList = NULL;
198
5.97k
    s_nssai_info_list = cJSON_GetObjectItemCaseSensitive(tsctsf_infoJSON, "sNssaiInfoList");
199
5.97k
    if (s_nssai_info_list) {
200
553
        cJSON *s_nssai_info_list_local_map = NULL;
201
553
        if (!cJSON_IsObject(s_nssai_info_list) && !cJSON_IsNull(s_nssai_info_list)) {
202
85
            ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [s_nssai_info_list]");
203
85
            goto end;
204
85
        }
205
468
        if (cJSON_IsObject(s_nssai_info_list)) {
206
401
            s_nssai_info_listList = OpenAPI_list_create();
207
401
            OpenAPI_map_t *localMapKeyPair = NULL;
208
1.43k
            cJSON_ArrayForEach(s_nssai_info_list_local_map, s_nssai_info_list) {
209
1.43k
                cJSON *localMapObject = s_nssai_info_list_local_map;
210
1.43k
                if (cJSON_IsObject(localMapObject)) {
211
932
                    localMapKeyPair = OpenAPI_map_create(
212
932
                        ogs_strdup(localMapObject->string), OpenAPI_snssai_tsctsf_info_item_parseFromJSON(localMapObject));
213
932
                } else if (cJSON_IsNull(localMapObject)) {
214
386
                    localMapKeyPair = OpenAPI_map_create(ogs_strdup(localMapObject->string), NULL);
215
386
                } else {
216
115
                    ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [inner]");
217
115
                    goto end;
218
115
                }
219
1.31k
                if (localMapKeyPair == NULL) {
220
0
                    ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [s_nssai_info_list]");
221
0
                    goto end;
222
0
                }
223
1.31k
                OpenAPI_list_add(s_nssai_info_listList, localMapKeyPair);
224
1.31k
            }
225
401
        }
226
468
    }
227
228
5.77k
    external_group_identifiers_ranges = cJSON_GetObjectItemCaseSensitive(tsctsf_infoJSON, "externalGroupIdentifiersRanges");
229
5.77k
    if (external_group_identifiers_ranges) {
230
150
        cJSON *external_group_identifiers_ranges_local = NULL;
231
150
        if (!cJSON_IsArray(external_group_identifiers_ranges)) {
232
75
            ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [external_group_identifiers_ranges]");
233
75
            goto end;
234
75
        }
235
236
75
        external_group_identifiers_rangesList = OpenAPI_list_create();
237
238
75
        cJSON_ArrayForEach(external_group_identifiers_ranges_local, external_group_identifiers_ranges) {
239
50
            if (!cJSON_IsObject(external_group_identifiers_ranges_local)) {
240
40
                ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [external_group_identifiers_ranges]");
241
40
                goto end;
242
40
            }
243
10
            OpenAPI_identity_range_t *external_group_identifiers_rangesItem = OpenAPI_identity_range_parseFromJSON(external_group_identifiers_ranges_local);
244
10
            if (!external_group_identifiers_rangesItem) {
245
0
                ogs_error("No external_group_identifiers_rangesItem");
246
0
                goto end;
247
0
            }
248
10
            OpenAPI_list_add(external_group_identifiers_rangesList, external_group_identifiers_rangesItem);
249
10
        }
250
75
    }
251
252
5.65k
    supi_ranges = cJSON_GetObjectItemCaseSensitive(tsctsf_infoJSON, "supiRanges");
253
5.65k
    if (supi_ranges) {
254
585
        cJSON *supi_ranges_local = NULL;
255
585
        if (!cJSON_IsArray(supi_ranges)) {
256
264
            ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [supi_ranges]");
257
264
            goto end;
258
264
        }
259
260
321
        supi_rangesList = OpenAPI_list_create();
261
262
417
        cJSON_ArrayForEach(supi_ranges_local, supi_ranges) {
263
417
            if (!cJSON_IsObject(supi_ranges_local)) {
264
175
                ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [supi_ranges]");
265
175
                goto end;
266
175
            }
267
242
            OpenAPI_supi_range_t *supi_rangesItem = OpenAPI_supi_range_parseFromJSON(supi_ranges_local);
268
242
            if (!supi_rangesItem) {
269
10
                ogs_error("No supi_rangesItem");
270
10
                goto end;
271
10
            }
272
232
            OpenAPI_list_add(supi_rangesList, supi_rangesItem);
273
232
        }
274
321
    }
275
276
5.20k
    gpsi_ranges = cJSON_GetObjectItemCaseSensitive(tsctsf_infoJSON, "gpsiRanges");
277
5.20k
    if (gpsi_ranges) {
278
1.05k
        cJSON *gpsi_ranges_local = NULL;
279
1.05k
        if (!cJSON_IsArray(gpsi_ranges)) {
280
299
            ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [gpsi_ranges]");
281
299
            goto end;
282
299
        }
283
284
755
        gpsi_rangesList = OpenAPI_list_create();
285
286
755
        cJSON_ArrayForEach(gpsi_ranges_local, gpsi_ranges) {
287
516
            if (!cJSON_IsObject(gpsi_ranges_local)) {
288
286
                ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [gpsi_ranges]");
289
286
                goto end;
290
286
            }
291
230
            OpenAPI_identity_range_t *gpsi_rangesItem = OpenAPI_identity_range_parseFromJSON(gpsi_ranges_local);
292
230
            if (!gpsi_rangesItem) {
293
73
                ogs_error("No gpsi_rangesItem");
294
73
                goto end;
295
73
            }
296
157
            OpenAPI_list_add(gpsi_rangesList, gpsi_rangesItem);
297
157
        }
298
755
    }
299
300
4.55k
    internal_group_identifiers_ranges = cJSON_GetObjectItemCaseSensitive(tsctsf_infoJSON, "internalGroupIdentifiersRanges");
301
4.55k
    if (internal_group_identifiers_ranges) {
302
96
        cJSON *internal_group_identifiers_ranges_local = NULL;
303
96
        if (!cJSON_IsArray(internal_group_identifiers_ranges)) {
304
68
            ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [internal_group_identifiers_ranges]");
305
68
            goto end;
306
68
        }
307
308
28
        internal_group_identifiers_rangesList = OpenAPI_list_create();
309
310
28
        cJSON_ArrayForEach(internal_group_identifiers_ranges_local, internal_group_identifiers_ranges) {
311
18
            if (!cJSON_IsObject(internal_group_identifiers_ranges_local)) {
312
18
                ogs_error("OpenAPI_tsctsf_info_parseFromJSON() failed [internal_group_identifiers_ranges]");
313
18
                goto end;
314
18
            }
315
0
            OpenAPI_internal_group_id_range_t *internal_group_identifiers_rangesItem = OpenAPI_internal_group_id_range_parseFromJSON(internal_group_identifiers_ranges_local);
316
0
            if (!internal_group_identifiers_rangesItem) {
317
0
                ogs_error("No internal_group_identifiers_rangesItem");
318
0
                goto end;
319
0
            }
320
0
            OpenAPI_list_add(internal_group_identifiers_rangesList, internal_group_identifiers_rangesItem);
321
0
        }
322
28
    }
323
324
4.46k
    tsctsf_info_local_var = OpenAPI_tsctsf_info_create (
325
4.46k
        s_nssai_info_list ? s_nssai_info_listList : NULL,
326
4.46k
        external_group_identifiers_ranges ? external_group_identifiers_rangesList : NULL,
327
4.46k
        supi_ranges ? supi_rangesList : NULL,
328
4.46k
        gpsi_ranges ? gpsi_rangesList : NULL,
329
4.46k
        internal_group_identifiers_ranges ? internal_group_identifiers_rangesList : NULL
330
4.46k
    );
331
332
4.46k
    return tsctsf_info_local_var;
333
1.50k
end:
334
1.50k
    if (s_nssai_info_listList) {
335
503
        OpenAPI_list_for_each(s_nssai_info_listList, node) {
336
503
            OpenAPI_map_t *localKeyValue = (OpenAPI_map_t*)node->data;
337
503
            ogs_free(localKeyValue->key);
338
503
            OpenAPI_snssai_tsctsf_info_item_free(localKeyValue->value);
339
503
            OpenAPI_map_free(localKeyValue);
340
503
        }
341
115
        OpenAPI_list_free(s_nssai_info_listList);
342
115
        s_nssai_info_listList = NULL;
343
115
    }
344
1.50k
    if (external_group_identifiers_rangesList) {
345
40
        OpenAPI_list_for_each(external_group_identifiers_rangesList, node) {
346
0
            OpenAPI_identity_range_free(node->data);
347
0
        }
348
40
        OpenAPI_list_free(external_group_identifiers_rangesList);
349
40
        external_group_identifiers_rangesList = NULL;
350
40
    }
351
1.50k
    if (supi_rangesList) {
352
185
        OpenAPI_list_for_each(supi_rangesList, node) {
353
131
            OpenAPI_supi_range_free(node->data);
354
131
        }
355
185
        OpenAPI_list_free(supi_rangesList);
356
185
        supi_rangesList = NULL;
357
185
    }
358
1.50k
    if (gpsi_rangesList) {
359
359
        OpenAPI_list_for_each(gpsi_rangesList, node) {
360
92
            OpenAPI_identity_range_free(node->data);
361
92
        }
362
359
        OpenAPI_list_free(gpsi_rangesList);
363
359
        gpsi_rangesList = NULL;
364
359
    }
365
1.50k
    if (internal_group_identifiers_rangesList) {
366
18
        OpenAPI_list_for_each(internal_group_identifiers_rangesList, node) {
367
0
            OpenAPI_internal_group_id_range_free(node->data);
368
0
        }
369
18
        OpenAPI_list_free(internal_group_identifiers_rangesList);
370
18
        internal_group_identifiers_rangesList = NULL;
371
18
    }
372
1.50k
    return NULL;
373
4.55k
}
374
375
OpenAPI_tsctsf_info_t *OpenAPI_tsctsf_info_copy(OpenAPI_tsctsf_info_t *dst, OpenAPI_tsctsf_info_t *src)
376
0
{
377
0
    cJSON *item = NULL;
378
0
    char *content = NULL;
379
380
0
    ogs_assert(src);
381
0
    item = OpenAPI_tsctsf_info_convertToJSON(src);
382
0
    if (!item) {
383
0
        ogs_error("OpenAPI_tsctsf_info_convertToJSON() failed");
384
0
        return NULL;
385
0
    }
386
387
0
    content = cJSON_Print(item);
388
0
    cJSON_Delete(item);
389
390
0
    if (!content) {
391
0
        ogs_error("cJSON_Print() failed");
392
0
        return NULL;
393
0
    }
394
395
0
    item = cJSON_Parse(content);
396
0
    ogs_free(content);
397
0
    if (!item) {
398
0
        ogs_error("cJSON_Parse() failed");
399
0
        return NULL;
400
0
    }
401
402
0
    OpenAPI_tsctsf_info_free(dst);
403
0
    dst = OpenAPI_tsctsf_info_parseFromJSON(item);
404
0
    cJSON_Delete(item);
405
406
0
    return dst;
407
0
}
408