Coverage Report

Created: 2026-09-27 06:19

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/udsf_info.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "udsf_info.h"
6
7
OpenAPI_udsf_info_t *OpenAPI_udsf_info_create(
8
    char *group_id,
9
    OpenAPI_list_t *supi_ranges,
10
    OpenAPI_list_t* storage_id_ranges
11
)
12
2.84k
{
13
2.84k
    OpenAPI_udsf_info_t *udsf_info_local_var = ogs_malloc(sizeof(OpenAPI_udsf_info_t));
14
2.84k
    ogs_assert(udsf_info_local_var);
15
16
2.84k
    udsf_info_local_var->group_id = group_id;
17
2.84k
    udsf_info_local_var->supi_ranges = supi_ranges;
18
2.84k
    udsf_info_local_var->storage_id_ranges = storage_id_ranges;
19
20
2.84k
    return udsf_info_local_var;
21
2.84k
}
22
23
void OpenAPI_udsf_info_free(OpenAPI_udsf_info_t *udsf_info)
24
4.89k
{
25
4.89k
    OpenAPI_lnode_t *node = NULL;
26
27
4.89k
    if (NULL == udsf_info) {
28
2.05k
        return;
29
2.05k
    }
30
2.84k
    if (udsf_info->group_id) {
31
194
        ogs_free(udsf_info->group_id);
32
194
        udsf_info->group_id = NULL;
33
194
    }
34
2.84k
    if (udsf_info->supi_ranges) {
35
566
        OpenAPI_list_for_each(udsf_info->supi_ranges, node) {
36
566
            OpenAPI_supi_range_free(node->data);
37
566
        }
38
412
        OpenAPI_list_free(udsf_info->supi_ranges);
39
412
        udsf_info->supi_ranges = NULL;
40
412
    }
41
2.84k
    if (udsf_info->storage_id_ranges) {
42
1.14k
        OpenAPI_list_for_each(udsf_info->storage_id_ranges, node) {
43
1.14k
            OpenAPI_map_t *localKeyValue = (OpenAPI_map_t*)node->data;
44
1.14k
            ogs_free(localKeyValue->key);
45
1.14k
            OpenAPI_identity_range_free(localKeyValue->value);
46
1.14k
            OpenAPI_map_free(localKeyValue);
47
1.14k
        }
48
649
        OpenAPI_list_free(udsf_info->storage_id_ranges);
49
649
        udsf_info->storage_id_ranges = NULL;
50
649
    }
51
2.84k
    ogs_free(udsf_info);
52
2.84k
}
53
54
cJSON *OpenAPI_udsf_info_convertToJSON(OpenAPI_udsf_info_t *udsf_info)
55
0
{
56
0
    cJSON *item = NULL;
57
0
    OpenAPI_lnode_t *node = NULL;
58
59
0
    if (udsf_info == NULL) {
60
0
        ogs_error("OpenAPI_udsf_info_convertToJSON() failed [UdsfInfo]");
61
0
        return NULL;
62
0
    }
63
64
0
    item = cJSON_CreateObject();
65
0
    if (udsf_info->group_id) {
66
0
    if (cJSON_AddStringToObject(item, "groupId", udsf_info->group_id) == NULL) {
67
0
        ogs_error("OpenAPI_udsf_info_convertToJSON() failed [group_id]");
68
0
        goto end;
69
0
    }
70
0
    }
71
72
0
    if (udsf_info->supi_ranges) {
73
0
    cJSON *supi_rangesList = cJSON_AddArrayToObject(item, "supiRanges");
74
0
    if (supi_rangesList == NULL) {
75
0
        ogs_error("OpenAPI_udsf_info_convertToJSON() failed [supi_ranges]");
76
0
        goto end;
77
0
    }
78
0
    OpenAPI_list_for_each(udsf_info->supi_ranges, node) {
79
0
        cJSON *itemLocal = OpenAPI_supi_range_convertToJSON(node->data);
80
0
        if (itemLocal == NULL) {
81
0
            ogs_error("OpenAPI_udsf_info_convertToJSON() failed [supi_ranges]");
82
0
            goto end;
83
0
        }
84
0
        cJSON_AddItemToArray(supi_rangesList, itemLocal);
85
0
    }
86
0
    }
87
88
0
    if (udsf_info->storage_id_ranges) {
89
0
    cJSON *storage_id_ranges = cJSON_AddObjectToObject(item, "storageIdRanges");
90
0
    if (storage_id_ranges == NULL) {
91
0
        ogs_error("OpenAPI_udsf_info_convertToJSON() failed [storage_id_ranges]");
92
0
        goto end;
93
0
    }
94
0
    cJSON *localMapObject = storage_id_ranges;
95
0
    if (udsf_info->storage_id_ranges) {
96
0
        OpenAPI_list_for_each(udsf_info->storage_id_ranges, node) {
97
0
            OpenAPI_map_t *localKeyValue = (OpenAPI_map_t*)node->data;
98
0
            if (localKeyValue == NULL) {
99
0
                ogs_error("OpenAPI_udsf_info_convertToJSON() failed [storage_id_ranges]");
100
0
                goto end;
101
0
            }
102
0
            if (localKeyValue->key == NULL) {
103
0
                ogs_error("OpenAPI_udsf_info_convertToJSON() failed [storage_id_ranges]");
104
0
                goto end;
105
0
            }
106
0
            cJSON *itemLocal = localKeyValue->value ?
107
0
                OpenAPI_identity_range_convertToJSON(localKeyValue->value) :
108
0
                cJSON_CreateNull();
109
0
            if (itemLocal == NULL) {
110
0
                ogs_error("OpenAPI_udsf_info_convertToJSON() failed [inner]");
111
0
                goto end;
112
0
            }
113
0
            cJSON_AddItemToObject(localMapObject, localKeyValue->key, itemLocal);
114
0
        }
115
0
    }
116
0
    }
117
118
0
end:
119
0
    return item;
120
0
}
121
122
OpenAPI_udsf_info_t *OpenAPI_udsf_info_parseFromJSON(cJSON *udsf_infoJSON)
123
4.57k
{
124
4.57k
    OpenAPI_udsf_info_t *udsf_info_local_var = NULL;
125
4.57k
    OpenAPI_lnode_t *node = NULL;
126
4.57k
    cJSON *group_id = NULL;
127
4.57k
    cJSON *supi_ranges = NULL;
128
4.57k
    OpenAPI_list_t *supi_rangesList = NULL;
129
4.57k
    cJSON *storage_id_ranges = NULL;
130
4.57k
    OpenAPI_list_t *storage_id_rangesList = NULL;
131
4.57k
    group_id = cJSON_GetObjectItemCaseSensitive(udsf_infoJSON, "groupId");
132
4.57k
    if (group_id) {
133
594
    if (!cJSON_IsString(group_id) && !cJSON_IsNull(group_id)) {
134
206
        ogs_error("OpenAPI_udsf_info_parseFromJSON() failed [group_id]");
135
206
        goto end;
136
206
    }
137
594
    }
138
139
4.37k
    supi_ranges = cJSON_GetObjectItemCaseSensitive(udsf_infoJSON, "supiRanges");
140
4.37k
    if (supi_ranges) {
141
1.20k
        cJSON *supi_ranges_local = NULL;
142
1.20k
        if (!cJSON_IsArray(supi_ranges)) {
143
198
            ogs_error("OpenAPI_udsf_info_parseFromJSON() failed [supi_ranges]");
144
198
            goto end;
145
198
        }
146
147
1.01k
        supi_rangesList = OpenAPI_list_create();
148
149
1.65k
        cJSON_ArrayForEach(supi_ranges_local, supi_ranges) {
150
1.65k
            if (!cJSON_IsObject(supi_ranges_local)) {
151
401
                ogs_error("OpenAPI_udsf_info_parseFromJSON() failed [supi_ranges]");
152
401
                goto end;
153
401
            }
154
1.25k
            OpenAPI_supi_range_t *supi_rangesItem = OpenAPI_supi_range_parseFromJSON(supi_ranges_local);
155
1.25k
            if (!supi_rangesItem) {
156
197
                ogs_error("No supi_rangesItem");
157
197
                goto end;
158
197
            }
159
1.05k
            OpenAPI_list_add(supi_rangesList, supi_rangesItem);
160
1.05k
        }
161
1.01k
    }
162
163
3.57k
    storage_id_ranges = cJSON_GetObjectItemCaseSensitive(udsf_infoJSON, "storageIdRanges");
164
3.57k
    if (storage_id_ranges) {
165
1.57k
        cJSON *storage_id_ranges_local_map = NULL;
166
1.57k
        if (!cJSON_IsObject(storage_id_ranges) && !cJSON_IsNull(storage_id_ranges)) {
167
194
            ogs_error("OpenAPI_udsf_info_parseFromJSON() failed [storage_id_ranges]");
168
194
            goto end;
169
194
        }
170
1.38k
        if (cJSON_IsObject(storage_id_ranges)) {
171
1.19k
            storage_id_rangesList = OpenAPI_list_create();
172
1.19k
            OpenAPI_map_t *localMapKeyPair = NULL;
173
2.27k
            cJSON_ArrayForEach(storage_id_ranges_local_map, storage_id_ranges) {
174
2.27k
                cJSON *localMapObject = storage_id_ranges_local_map;
175
2.27k
                if (cJSON_IsObject(localMapObject)) {
176
1.32k
                    localMapKeyPair = OpenAPI_map_create(
177
1.32k
                        ogs_strdup(localMapObject->string), OpenAPI_identity_range_parseFromJSON(localMapObject));
178
1.32k
                } else if (cJSON_IsNull(localMapObject)) {
179
410
                    localMapKeyPair = OpenAPI_map_create(ogs_strdup(localMapObject->string), NULL);
180
542
                } else {
181
542
                    ogs_error("OpenAPI_udsf_info_parseFromJSON() failed [inner]");
182
542
                    goto end;
183
542
                }
184
1.73k
                if (localMapKeyPair == NULL) {
185
0
                    ogs_error("OpenAPI_udsf_info_parseFromJSON() failed [storage_id_ranges]");
186
0
                    goto end;
187
0
                }
188
1.73k
                OpenAPI_list_add(storage_id_rangesList, localMapKeyPair);
189
1.73k
            }
190
1.19k
        }
191
1.38k
    }
192
193
2.84k
    udsf_info_local_var = OpenAPI_udsf_info_create (
194
2.84k
        group_id && !cJSON_IsNull(group_id) ? ogs_strdup(group_id->valuestring) : NULL,
195
2.84k
        supi_ranges ? supi_rangesList : NULL,
196
2.84k
        storage_id_ranges ? storage_id_rangesList : NULL
197
2.84k
    );
198
199
2.84k
    return udsf_info_local_var;
200
1.73k
end:
201
1.73k
    if (supi_rangesList) {
202
598
        OpenAPI_list_for_each(supi_rangesList, node) {
203
492
            OpenAPI_supi_range_free(node->data);
204
492
        }
205
598
        OpenAPI_list_free(supi_rangesList);
206
598
        supi_rangesList = NULL;
207
598
    }
208
1.73k
    if (storage_id_rangesList) {
209
588
        OpenAPI_list_for_each(storage_id_rangesList, node) {
210
588
            OpenAPI_map_t *localKeyValue = (OpenAPI_map_t*)node->data;
211
588
            ogs_free(localKeyValue->key);
212
588
            OpenAPI_identity_range_free(localKeyValue->value);
213
588
            OpenAPI_map_free(localKeyValue);
214
588
        }
215
542
        OpenAPI_list_free(storage_id_rangesList);
216
542
        storage_id_rangesList = NULL;
217
542
    }
218
1.73k
    return NULL;
219
3.57k
}
220
221
OpenAPI_udsf_info_t *OpenAPI_udsf_info_copy(OpenAPI_udsf_info_t *dst, OpenAPI_udsf_info_t *src)
222
0
{
223
0
    cJSON *item = NULL;
224
0
    char *content = NULL;
225
226
0
    ogs_assert(src);
227
0
    item = OpenAPI_udsf_info_convertToJSON(src);
228
0
    if (!item) {
229
0
        ogs_error("OpenAPI_udsf_info_convertToJSON() failed");
230
0
        return NULL;
231
0
    }
232
233
0
    content = cJSON_Print(item);
234
0
    cJSON_Delete(item);
235
236
0
    if (!content) {
237
0
        ogs_error("cJSON_Print() failed");
238
0
        return NULL;
239
0
    }
240
241
0
    item = cJSON_Parse(content);
242
0
    ogs_free(content);
243
0
    if (!item) {
244
0
        ogs_error("cJSON_Parse() failed");
245
0
        return NULL;
246
0
    }
247
248
0
    OpenAPI_udsf_info_free(dst);
249
0
    dst = OpenAPI_udsf_info_parseFromJSON(item);
250
0
    cJSON_Delete(item);
251
252
0
    return dst;
253
0
}
254