Coverage Report

Created: 2026-10-16 06:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/nssaaf_info.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "nssaaf_info.h"
6
7
OpenAPI_nssaaf_info_t *OpenAPI_nssaaf_info_create(
8
    OpenAPI_list_t *supi_ranges,
9
    OpenAPI_list_t *internal_group_identifiers_ranges
10
)
11
35
{
12
35
    OpenAPI_nssaaf_info_t *nssaaf_info_local_var = ogs_malloc(sizeof(OpenAPI_nssaaf_info_t));
13
35
    ogs_assert(nssaaf_info_local_var);
14
15
35
    nssaaf_info_local_var->supi_ranges = supi_ranges;
16
35
    nssaaf_info_local_var->internal_group_identifiers_ranges = internal_group_identifiers_ranges;
17
18
35
    return nssaaf_info_local_var;
19
35
}
20
21
void OpenAPI_nssaaf_info_free(OpenAPI_nssaaf_info_t *nssaaf_info)
22
35
{
23
35
    OpenAPI_lnode_t *node = NULL;
24
25
35
    if (NULL == nssaaf_info) {
26
0
        return;
27
0
    }
28
35
    if (nssaaf_info->supi_ranges) {
29
461
        OpenAPI_list_for_each(nssaaf_info->supi_ranges, node) {
30
461
            OpenAPI_supi_range_free(node->data);
31
461
        }
32
20
        OpenAPI_list_free(nssaaf_info->supi_ranges);
33
20
        nssaaf_info->supi_ranges = NULL;
34
20
    }
35
35
    if (nssaaf_info->internal_group_identifiers_ranges) {
36
265
        OpenAPI_list_for_each(nssaaf_info->internal_group_identifiers_ranges, node) {
37
265
            OpenAPI_internal_group_id_range_free(node->data);
38
265
        }
39
13
        OpenAPI_list_free(nssaaf_info->internal_group_identifiers_ranges);
40
13
        nssaaf_info->internal_group_identifiers_ranges = NULL;
41
13
    }
42
35
    ogs_free(nssaaf_info);
43
35
}
44
45
cJSON *OpenAPI_nssaaf_info_convertToJSON(OpenAPI_nssaaf_info_t *nssaaf_info)
46
0
{
47
0
    cJSON *item = NULL;
48
0
    OpenAPI_lnode_t *node = NULL;
49
50
0
    if (nssaaf_info == NULL) {
51
0
        ogs_error("OpenAPI_nssaaf_info_convertToJSON() failed [NssaafInfo]");
52
0
        return NULL;
53
0
    }
54
55
0
    item = cJSON_CreateObject();
56
0
    if (nssaaf_info->supi_ranges) {
57
0
    cJSON *supi_rangesList = cJSON_AddArrayToObject(item, "supiRanges");
58
0
    if (supi_rangesList == NULL) {
59
0
        ogs_error("OpenAPI_nssaaf_info_convertToJSON() failed [supi_ranges]");
60
0
        goto end;
61
0
    }
62
0
    OpenAPI_list_for_each(nssaaf_info->supi_ranges, node) {
63
0
        cJSON *itemLocal = OpenAPI_supi_range_convertToJSON(node->data);
64
0
        if (itemLocal == NULL) {
65
0
            ogs_error("OpenAPI_nssaaf_info_convertToJSON() failed [supi_ranges]");
66
0
            goto end;
67
0
        }
68
0
        cJSON_AddItemToArray(supi_rangesList, itemLocal);
69
0
    }
70
0
    }
71
72
0
    if (nssaaf_info->internal_group_identifiers_ranges) {
73
0
    cJSON *internal_group_identifiers_rangesList = cJSON_AddArrayToObject(item, "internalGroupIdentifiersRanges");
74
0
    if (internal_group_identifiers_rangesList == NULL) {
75
0
        ogs_error("OpenAPI_nssaaf_info_convertToJSON() failed [internal_group_identifiers_ranges]");
76
0
        goto end;
77
0
    }
78
0
    OpenAPI_list_for_each(nssaaf_info->internal_group_identifiers_ranges, node) {
79
0
        cJSON *itemLocal = OpenAPI_internal_group_id_range_convertToJSON(node->data);
80
0
        if (itemLocal == NULL) {
81
0
            ogs_error("OpenAPI_nssaaf_info_convertToJSON() failed [internal_group_identifiers_ranges]");
82
0
            goto end;
83
0
        }
84
0
        cJSON_AddItemToArray(internal_group_identifiers_rangesList, itemLocal);
85
0
    }
86
0
    }
87
88
0
end:
89
0
    return item;
90
0
}
91
92
OpenAPI_nssaaf_info_t *OpenAPI_nssaaf_info_parseFromJSON(cJSON *nssaaf_infoJSON)
93
59
{
94
59
    OpenAPI_nssaaf_info_t *nssaaf_info_local_var = NULL;
95
59
    OpenAPI_lnode_t *node = NULL;
96
59
    cJSON *supi_ranges = NULL;
97
59
    OpenAPI_list_t *supi_rangesList = NULL;
98
59
    cJSON *internal_group_identifiers_ranges = NULL;
99
59
    OpenAPI_list_t *internal_group_identifiers_rangesList = NULL;
100
59
    supi_ranges = cJSON_GetObjectItemCaseSensitive(nssaaf_infoJSON, "supiRanges");
101
59
    if (supi_ranges) {
102
32
        cJSON *supi_ranges_local = NULL;
103
32
        if (!cJSON_IsArray(supi_ranges)) {
104
1
            ogs_error("OpenAPI_nssaaf_info_parseFromJSON() failed [supi_ranges]");
105
1
            goto end;
106
1
        }
107
108
31
        supi_rangesList = OpenAPI_list_create();
109
110
675
        cJSON_ArrayForEach(supi_ranges_local, supi_ranges) {
111
675
            if (!cJSON_IsObject(supi_ranges_local)) {
112
10
                ogs_error("OpenAPI_nssaaf_info_parseFromJSON() failed [supi_ranges]");
113
10
                goto end;
114
10
            }
115
665
            OpenAPI_supi_range_t *supi_rangesItem = OpenAPI_supi_range_parseFromJSON(supi_ranges_local);
116
665
            if (!supi_rangesItem) {
117
1
                ogs_error("No supi_rangesItem");
118
1
                goto end;
119
1
            }
120
664
            OpenAPI_list_add(supi_rangesList, supi_rangesItem);
121
664
        }
122
31
    }
123
124
47
    internal_group_identifiers_ranges = cJSON_GetObjectItemCaseSensitive(nssaaf_infoJSON, "internalGroupIdentifiersRanges");
125
47
    if (internal_group_identifiers_ranges) {
126
25
        cJSON *internal_group_identifiers_ranges_local = NULL;
127
25
        if (!cJSON_IsArray(internal_group_identifiers_ranges)) {
128
1
            ogs_error("OpenAPI_nssaaf_info_parseFromJSON() failed [internal_group_identifiers_ranges]");
129
1
            goto end;
130
1
        }
131
132
24
        internal_group_identifiers_rangesList = OpenAPI_list_create();
133
134
479
        cJSON_ArrayForEach(internal_group_identifiers_ranges_local, internal_group_identifiers_ranges) {
135
479
            if (!cJSON_IsObject(internal_group_identifiers_ranges_local)) {
136
7
                ogs_error("OpenAPI_nssaaf_info_parseFromJSON() failed [internal_group_identifiers_ranges]");
137
7
                goto end;
138
7
            }
139
472
            OpenAPI_internal_group_id_range_t *internal_group_identifiers_rangesItem = OpenAPI_internal_group_id_range_parseFromJSON(internal_group_identifiers_ranges_local);
140
472
            if (!internal_group_identifiers_rangesItem) {
141
4
                ogs_error("No internal_group_identifiers_rangesItem");
142
4
                goto end;
143
4
            }
144
468
            OpenAPI_list_add(internal_group_identifiers_rangesList, internal_group_identifiers_rangesItem);
145
468
        }
146
24
    }
147
148
35
    nssaaf_info_local_var = OpenAPI_nssaaf_info_create (
149
35
        supi_ranges ? supi_rangesList : NULL,
150
35
        internal_group_identifiers_ranges ? internal_group_identifiers_rangesList : NULL
151
35
    );
152
153
35
    return nssaaf_info_local_var;
154
24
end:
155
24
    if (supi_rangesList) {
156
203
        OpenAPI_list_for_each(supi_rangesList, node) {
157
203
            OpenAPI_supi_range_free(node->data);
158
203
        }
159
11
        OpenAPI_list_free(supi_rangesList);
160
11
        supi_rangesList = NULL;
161
11
    }
162
24
    if (internal_group_identifiers_rangesList) {
163
203
        OpenAPI_list_for_each(internal_group_identifiers_rangesList, node) {
164
203
            OpenAPI_internal_group_id_range_free(node->data);
165
203
        }
166
11
        OpenAPI_list_free(internal_group_identifiers_rangesList);
167
11
        internal_group_identifiers_rangesList = NULL;
168
11
    }
169
24
    return NULL;
170
47
}
171
172
OpenAPI_nssaaf_info_t *OpenAPI_nssaaf_info_copy(OpenAPI_nssaaf_info_t *dst, OpenAPI_nssaaf_info_t *src)
173
0
{
174
0
    cJSON *item = NULL;
175
0
    char *content = NULL;
176
177
0
    ogs_assert(src);
178
0
    item = OpenAPI_nssaaf_info_convertToJSON(src);
179
0
    if (!item) {
180
0
        ogs_error("OpenAPI_nssaaf_info_convertToJSON() failed");
181
0
        return NULL;
182
0
    }
183
184
0
    content = cJSON_Print(item);
185
0
    cJSON_Delete(item);
186
187
0
    if (!content) {
188
0
        ogs_error("cJSON_Print() failed");
189
0
        return NULL;
190
0
    }
191
192
0
    item = cJSON_Parse(content);
193
0
    ogs_free(content);
194
0
    if (!item) {
195
0
        ogs_error("cJSON_Parse() failed");
196
0
        return NULL;
197
0
    }
198
199
0
    OpenAPI_nssaaf_info_free(dst);
200
0
    dst = OpenAPI_nssaaf_info_parseFromJSON(item);
201
0
    cJSON_Delete(item);
202
203
0
    return dst;
204
0
}
205