Coverage Report

Created: 2026-09-28 06:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/call_info.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "call_info.h"
6
7
OpenAPI_call_info_t *OpenAPI_call_info_create(
8
    OpenAPI_list_t *calling_party_addrs,
9
    bool is_callee_info_null,
10
    OpenAPI_callee_info_t *callee_info
11
)
12
0
{
13
0
    OpenAPI_call_info_t *call_info_local_var = ogs_malloc(sizeof(OpenAPI_call_info_t));
14
0
    ogs_assert(call_info_local_var);
15
16
0
    call_info_local_var->calling_party_addrs = calling_party_addrs;
17
0
    call_info_local_var->is_callee_info_null = is_callee_info_null;
18
0
    call_info_local_var->callee_info = callee_info;
19
20
0
    return call_info_local_var;
21
0
}
22
23
void OpenAPI_call_info_free(OpenAPI_call_info_t *call_info)
24
0
{
25
0
    OpenAPI_lnode_t *node = NULL;
26
27
0
    if (NULL == call_info) {
28
0
        return;
29
0
    }
30
0
    if (call_info->calling_party_addrs) {
31
0
        OpenAPI_list_for_each(call_info->calling_party_addrs, node) {
32
0
            ogs_free(node->data);
33
0
        }
34
0
        OpenAPI_list_free(call_info->calling_party_addrs);
35
0
        call_info->calling_party_addrs = NULL;
36
0
    }
37
0
    if (call_info->callee_info) {
38
0
        OpenAPI_callee_info_free(call_info->callee_info);
39
0
        call_info->callee_info = NULL;
40
0
    }
41
0
    ogs_free(call_info);
42
0
}
43
44
cJSON *OpenAPI_call_info_convertToJSON(OpenAPI_call_info_t *call_info)
45
0
{
46
0
    cJSON *item = NULL;
47
0
    OpenAPI_lnode_t *node = NULL;
48
49
0
    if (call_info == NULL) {
50
0
        ogs_error("OpenAPI_call_info_convertToJSON() failed [CallInfo]");
51
0
        return NULL;
52
0
    }
53
54
0
    item = cJSON_CreateObject();
55
0
    if (call_info->calling_party_addrs) {
56
0
    cJSON *calling_party_addrsList = cJSON_AddArrayToObject(item, "callingPartyAddrs");
57
0
    if (calling_party_addrsList == NULL) {
58
0
        ogs_error("OpenAPI_call_info_convertToJSON() failed [calling_party_addrs]");
59
0
        goto end;
60
0
    }
61
0
    OpenAPI_list_for_each(call_info->calling_party_addrs, node) {
62
0
        if (cJSON_AddStringToObject(calling_party_addrsList, "", (char*)node->data) == NULL) {
63
0
            ogs_error("OpenAPI_call_info_convertToJSON() failed [calling_party_addrs]");
64
0
            goto end;
65
0
        }
66
0
    }
67
0
    }
68
69
0
    if (call_info->callee_info) {
70
0
    cJSON *callee_info_local_JSON = OpenAPI_callee_info_convertToJSON(call_info->callee_info);
71
0
    if (callee_info_local_JSON == NULL) {
72
0
        ogs_error("OpenAPI_call_info_convertToJSON() failed [callee_info]");
73
0
        goto end;
74
0
    }
75
0
    cJSON_AddItemToObject(item, "calleeInfo", callee_info_local_JSON);
76
0
    if (item->child == NULL) {
77
0
        ogs_error("OpenAPI_call_info_convertToJSON() failed [callee_info]");
78
0
        goto end;
79
0
    }
80
0
    } else if (call_info->is_callee_info_null) {
81
0
        if (cJSON_AddNullToObject(item, "calleeInfo") == NULL) {
82
0
            ogs_error("OpenAPI_call_info_convertToJSON() failed [callee_info]");
83
0
            goto end;
84
0
        }
85
0
    }
86
87
0
end:
88
0
    return item;
89
0
}
90
91
OpenAPI_call_info_t *OpenAPI_call_info_parseFromJSON(cJSON *call_infoJSON)
92
0
{
93
0
    OpenAPI_call_info_t *call_info_local_var = NULL;
94
0
    OpenAPI_lnode_t *node = NULL;
95
0
    cJSON *calling_party_addrs = NULL;
96
0
    OpenAPI_list_t *calling_party_addrsList = NULL;
97
0
    cJSON *callee_info = NULL;
98
0
    OpenAPI_callee_info_t *callee_info_local_nonprim = NULL;
99
0
    calling_party_addrs = cJSON_GetObjectItemCaseSensitive(call_infoJSON, "callingPartyAddrs");
100
0
    if (calling_party_addrs) {
101
0
        cJSON *calling_party_addrs_local = NULL;
102
0
        if (!cJSON_IsArray(calling_party_addrs)) {
103
0
            ogs_error("OpenAPI_call_info_parseFromJSON() failed [calling_party_addrs]");
104
0
            goto end;
105
0
        }
106
107
0
        calling_party_addrsList = OpenAPI_list_create();
108
109
0
        cJSON_ArrayForEach(calling_party_addrs_local, calling_party_addrs) {
110
0
            double *localDouble = NULL;
111
0
            int *localInt = NULL;
112
0
            if (!cJSON_IsString(calling_party_addrs_local)) {
113
0
                ogs_error("OpenAPI_call_info_parseFromJSON() failed [calling_party_addrs]");
114
0
                goto end;
115
0
            }
116
0
            OpenAPI_list_add(calling_party_addrsList, ogs_strdup(calling_party_addrs_local->valuestring));
117
0
        }
118
0
    }
119
120
0
    callee_info = cJSON_GetObjectItemCaseSensitive(call_infoJSON, "calleeInfo");
121
0
    if (callee_info) {
122
0
    if (!cJSON_IsNull(callee_info)) {
123
0
    callee_info_local_nonprim = OpenAPI_callee_info_parseFromJSON(callee_info);
124
0
    if (!callee_info_local_nonprim) {
125
0
        ogs_error("OpenAPI_callee_info_parseFromJSON failed [callee_info]");
126
0
        goto end;
127
0
    }
128
0
    }
129
0
    }
130
131
0
    call_info_local_var = OpenAPI_call_info_create (
132
0
        calling_party_addrs ? calling_party_addrsList : NULL,
133
0
        callee_info && cJSON_IsNull(callee_info) ? true : false,
134
0
        callee_info ? callee_info_local_nonprim : NULL
135
0
    );
136
137
0
    return call_info_local_var;
138
0
end:
139
0
    if (calling_party_addrsList) {
140
0
        OpenAPI_list_for_each(calling_party_addrsList, node) {
141
0
            ogs_free(node->data);
142
0
        }
143
0
        OpenAPI_list_free(calling_party_addrsList);
144
0
        calling_party_addrsList = NULL;
145
0
    }
146
0
    if (callee_info_local_nonprim) {
147
0
        OpenAPI_callee_info_free(callee_info_local_nonprim);
148
0
        callee_info_local_nonprim = NULL;
149
0
    }
150
0
    return NULL;
151
0
}
152
153
OpenAPI_call_info_t *OpenAPI_call_info_copy(OpenAPI_call_info_t *dst, OpenAPI_call_info_t *src)
154
0
{
155
0
    cJSON *item = NULL;
156
0
    char *content = NULL;
157
158
0
    ogs_assert(src);
159
0
    item = OpenAPI_call_info_convertToJSON(src);
160
0
    if (!item) {
161
0
        ogs_error("OpenAPI_call_info_convertToJSON() failed");
162
0
        return NULL;
163
0
    }
164
165
0
    content = cJSON_Print(item);
166
0
    cJSON_Delete(item);
167
168
0
    if (!content) {
169
0
        ogs_error("cJSON_Print() failed");
170
0
        return NULL;
171
0
    }
172
173
0
    item = cJSON_Parse(content);
174
0
    ogs_free(content);
175
0
    if (!item) {
176
0
        ogs_error("cJSON_Parse() failed");
177
0
        return NULL;
178
0
    }
179
180
0
    OpenAPI_call_info_free(dst);
181
0
    dst = OpenAPI_call_info_parseFromJSON(item);
182
0
    cJSON_Delete(item);
183
184
0
    return dst;
185
0
}
186