Changes of Revision 213

open5gs_2.4.9.252.11aac.202301240007.dsc -> open5gs_2.4.9.256.596a2.202301250006.dsc Changed
x
 
1
@@ -2,7 +2,7 @@
2
 Source: open5gs
3
 Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-scp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg
4
 Architecture: any
5
-Version: 2.4.9.252.11aac.202301240007
6
+Version: 2.4.9.256.596a2.202301250006
7
 Maintainer: Harald Welte <laforge@gnumonks.org>
8
 Uploaders: Sukchan Lee <acetcom@gmail.com>
9
 Homepage: https://open5gs.org
10
@@ -31,8 +31,8 @@
11
  open5gs-udr deb net optional arch=any
12
  open5gs-upf deb net optional arch=any
13
 Checksums-Sha1:
14
- b3ccb45e4376c481789cb0ea1f186330c5e527d4 13613416 open5gs_2.4.9.252.11aac.202301240007.tar.xz
15
+ c666c5584e98172197f5a7e571ec8947b779a303 13613944 open5gs_2.4.9.256.596a2.202301250006.tar.xz
16
 Checksums-Sha256:
17
- c37e0c56068a6b1abb1b77c486587d3a7f113267c4ae8b9437255e16e2abf5ac 13613416 open5gs_2.4.9.252.11aac.202301240007.tar.xz
18
+ 82ad9a47e5b955135d9b72c37a89e95413e14b1c4cf5187738f635c05ea07390 13613944 open5gs_2.4.9.256.596a2.202301250006.tar.xz
19
 Files:
20
- 41d885560b5facd7975420582f346aab 13613416 open5gs_2.4.9.252.11aac.202301240007.tar.xz
21
+ 2b1a6e5cd3a0c26d6ce25778a592e6d8 13613944 open5gs_2.4.9.256.596a2.202301250006.tar.xz
22
open5gs_2.4.9.252.11aac.202301240007.tar.xz/.tarball-version -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/.tarball-version Changed
4
 
1
@@ -1 +1 @@
2
-2.4.9.252-11aac.202301240007
3
+2.4.9.256-596a2.202301250006
4
open5gs_2.4.9.252.11aac.202301240007.tar.xz/debian/changelog -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/debian/changelog Changed
12
 
1
@@ -1,8 +1,8 @@
2
-open5gs (2.4.9.252.11aac.202301240007) unstable; urgency=medium
3
+open5gs (2.4.9.256.596a2.202301250006) unstable; urgency=medium
4
 
5
   * Automatically generated changelog entry for building the Osmocom nightly feed
6
 
7
- -- Osmocom OBS scripts <info@osmocom.org>  Tue, 24 Jan 2023 00:09:38 +0000
8
+ -- Osmocom OBS scripts <info@osmocom.org>  Wed, 25 Jan 2023 00:08:51 +0000
9
 
10
 open5gs (2.5.6) unstable; urgency=medium
11
 
12
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/app/ogs-context.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/app/ogs-context.c Changed
18
 
1
@@ -425,10 +425,14 @@
2
                     const char *v = ogs_yaml_iter_value(&pool_iter);
3
                     if (v)
4
                         self.pool.defconfig.cluster_2048_pool = atoi(v);
5
-                } else if (!strcmp(pool_key, "16384")) {
6
+                } else if (!strcmp(pool_key, "8192")) {
7
                     const char *v = ogs_yaml_iter_value(&pool_iter);
8
                     if (v)
9
-                        self.pool.defconfig.cluster_16384_pool = atoi(v);
10
+                        self.pool.defconfig.cluster_8192_pool = atoi(v);
11
+                } else if (!strcmp(pool_key, "32768")) {
12
+                    const char *v = ogs_yaml_iter_value(&pool_iter);
13
+                    if (v)
14
+                        self.pool.defconfig.cluster_32768_pool = atoi(v);
15
                 } else if (!strcmp(pool_key, "big")) {
16
                     const char *v = ogs_yaml_iter_value(&pool_iter);
17
                     if (v)
18
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/core/ogs-macros.h -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/core/ogs-macros.h Changed
12
 
1
@@ -206,6 +206,10 @@
2
 #define OGS_MAX_FILEPATH_LEN            256
3
 #define OGS_MAX_IFNAME_LEN              32
4
 
5
+#define OGS_MAX_SDU_LEN                 32768 /* Should Heap */
6
+#define OGS_HUGE_LEN                    8192  /* Can Stack */
7
+#define OGS_MAX_PKT_LEN                 2048
8
+
9
 #define OGS_FILE_LINE __FILE__ ":" OGS_STRINGIFY(__LINE__)
10
 
11
 #define ogs_uint64_to_uint32(x) ((x >= 0xffffffffUL) ? 0xffffffffU : x)
12
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/core/ogs-pkbuf.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/core/ogs-pkbuf.c Changed
122
 
1
@@ -28,7 +28,8 @@
2
 #define OGS_CLUSTER_512_SIZE    512
3
 #define OGS_CLUSTER_1024_SIZE   1024
4
 #define OGS_CLUSTER_2048_SIZE   2048
5
-#define OGS_CLUSTER_16384_SIZE  16384
6
+#define OGS_CLUSTER_8192_SIZE   8192
7
+#define OGS_CLUSTER_32768_SIZE  32768
8
 
9
 /*
10
  *
11
@@ -48,7 +49,8 @@
12
 typedef uint8_t ogs_cluster_512_tOGS_CLUSTER_512_SIZE;
13
 typedef uint8_t ogs_cluster_1024_tOGS_CLUSTER_1024_SIZE;
14
 typedef uint8_t ogs_cluster_2048_tOGS_CLUSTER_2048_SIZE;
15
-typedef uint8_t ogs_cluster_16384_tOGS_CLUSTER_16384_SIZE;
16
+typedef uint8_t ogs_cluster_8192_tOGS_CLUSTER_8192_SIZE;
17
+typedef uint8_t ogs_cluster_32768_tOGS_CLUSTER_32768_SIZE;
18
 typedef uint8_t ogs_cluster_big_tOGS_CLUSTER_BIG_SIZE;
19
 
20
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_128_t) % sizeof(void *) == 0);
21
@@ -56,7 +58,8 @@
22
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_512_t) % sizeof(void *) == 0);
23
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_1024_t) % sizeof(void *) == 0);
24
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_2048_t) % sizeof(void *) == 0);
25
-OGS_STATIC_ASSERT(sizeof(ogs_cluster_16384_t) % sizeof(void *) == 0);
26
+OGS_STATIC_ASSERT(sizeof(ogs_cluster_8192_t) % sizeof(void *) == 0);
27
+OGS_STATIC_ASSERT(sizeof(ogs_cluster_32768_t) % sizeof(void *) == 0);
28
 OGS_STATIC_ASSERT(sizeof(ogs_cluster_big_t) % sizeof(void *) == 0);
29
 
30
 typedef struct ogs_pkbuf_pool_s {
31
@@ -68,7 +71,8 @@
32
     OGS_POOL(cluster_512, ogs_cluster_512_t);
33
     OGS_POOL(cluster_1024, ogs_cluster_1024_t);
34
     OGS_POOL(cluster_2048, ogs_cluster_2048_t);
35
-    OGS_POOL(cluster_16384, ogs_cluster_16384_t);
36
+    OGS_POOL(cluster_8192, ogs_cluster_8192_t);
37
+    OGS_POOL(cluster_32768, ogs_cluster_32768_t);
38
     OGS_POOL(cluster_big, ogs_cluster_big_t);
39
 
40
     ogs_thread_mutex_t mutex;
41
@@ -116,7 +120,8 @@
42
     config->cluster_512_pool = 4096;
43
     config->cluster_1024_pool = 2048;
44
     config->cluster_2048_pool = 1024;
45
-    config->cluster_16384_pool = 512;
46
+    config->cluster_8192_pool = 256;
47
+    config->cluster_32768_pool = 64;
48
     config->cluster_big_pool = 8;
49
 #endif
50
 }
51
@@ -151,8 +156,8 @@
52
 
53
     tmp = config->cluster_128_pool + config->cluster_256_pool +
54
         config->cluster_512_pool + config->cluster_1024_pool +
55
-        config->cluster_2048_pool + config->cluster_16384_pool +
56
-        config->cluster_big_pool;
57
+        config->cluster_2048_pool + config->cluster_8192_pool +
58
+        config->cluster_32768_pool + config->cluster_big_pool;
59
 
60
     ogs_pool_init(&pool->pkbuf, tmp);
61
     ogs_pool_init(&pool->cluster, tmp);
62
@@ -162,7 +167,8 @@
63
     ogs_pool_init(&pool->cluster_512, config->cluster_512_pool);
64
     ogs_pool_init(&pool->cluster_1024, config->cluster_1024_pool);
65
     ogs_pool_init(&pool->cluster_2048, config->cluster_2048_pool);
66
-    ogs_pool_init(&pool->cluster_16384, config->cluster_16384_pool);
67
+    ogs_pool_init(&pool->cluster_8192, config->cluster_8192_pool);
68
+    ogs_pool_init(&pool->cluster_32768, config->cluster_32768_pool);
69
     ogs_pool_init(&pool->cluster_big, config->cluster_big_pool);
70
 #endif
71
 
72
@@ -200,7 +206,8 @@
73
     ogs_pool_final(&pool->cluster_512);
74
     ogs_pool_final(&pool->cluster_1024);
75
     ogs_pool_final(&pool->cluster_2048);
76
-    ogs_pool_final(&pool->cluster_16384);
77
+    ogs_pool_final(&pool->cluster_8192);
78
+    ogs_pool_final(&pool->cluster_32768);
79
     ogs_pool_final(&pool->cluster_big);
80
 
81
     ogs_thread_mutex_destroy(&pool->mutex);
82
@@ -405,13 +412,20 @@
83
             return NULL;
84
         }
85
         cluster->size = OGS_CLUSTER_2048_SIZE;
86
-    } else if (size <= OGS_CLUSTER_16384_SIZE) {
87
-        ogs_pool_alloc(&pool->cluster_16384, (ogs_cluster_16384_t**)&buffer);
88
+    } else if (size <= OGS_CLUSTER_8192_SIZE) {
89
+        ogs_pool_alloc(&pool->cluster_8192, (ogs_cluster_8192_t**)&buffer);
90
         if (!buffer) {
91
             ogs_error("ogs_pool_alloc() failed");
92
             return NULL;
93
         }
94
-        cluster->size = OGS_CLUSTER_16384_SIZE;
95
+        cluster->size = OGS_CLUSTER_8192_SIZE;
96
+    } else if (size <= OGS_CLUSTER_32768_SIZE) {
97
+        ogs_pool_alloc(&pool->cluster_32768, (ogs_cluster_32768_t**)&buffer);
98
+        if (!buffer) {
99
+            ogs_error("ogs_pool_alloc() failed");
100
+            return NULL;
101
+        }
102
+        cluster->size = OGS_CLUSTER_32768_SIZE;
103
     } else if (size <= OGS_CLUSTER_BIG_SIZE) {
104
         ogs_pool_alloc(&pool->cluster_big, (ogs_cluster_big_t**)&buffer);
105
         if (!buffer) {
106
@@ -452,9 +466,13 @@
107
         ogs_pool_free(
108
                 &pool->cluster_2048, (ogs_cluster_2048_t*)cluster->buffer);
109
         break;
110
-    case OGS_CLUSTER_16384_SIZE:
111
+    case OGS_CLUSTER_8192_SIZE:
112
+        ogs_pool_free(
113
+                &pool->cluster_8192, (ogs_cluster_8192_t*)cluster->buffer);
114
+        break;
115
+    case OGS_CLUSTER_32768_SIZE:
116
         ogs_pool_free(
117
-                &pool->cluster_16384, (ogs_cluster_16384_t*)cluster->buffer);
118
+                &pool->cluster_32768, (ogs_cluster_32768_t*)cluster->buffer);
119
         break;
120
     case OGS_CLUSTER_BIG_SIZE:
121
         ogs_pool_free(&pool->cluster_big, (ogs_cluster_big_t*)cluster->buffer);
122
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/core/ogs-pkbuf.h -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/core/ogs-pkbuf.h Changed
11
 
1
@@ -68,7 +68,8 @@
2
     int cluster_512_pool;
3
     int cluster_1024_pool;
4
     int cluster_2048_pool;
5
-    int cluster_16384_pool;
6
+    int cluster_8192_pool;
7
+    int cluster_32768_pool;
8
     int cluster_big_pool;
9
 } ogs_pkbuf_config_t;
10
 
11
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/core/ogs-strings.h -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/core/ogs-strings.h Changed
10
 
1
@@ -54,8 +54,6 @@
2
 extern "C" {
3
 #endif
4
 
5
-#define OGS_HUGE_LEN        16384
6
-
7
 #if defined(_WIN32)
8
 #define ogs_strtok_r strtok_s
9
 #define ogs_strcasecmp _stricmp
10
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/diameter/common/init.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/diameter/common/init.c Changed
31
 
1
@@ -98,15 +98,19 @@
2
 
3
 static void diam_log_func(int printlevel, const char *format, va_list ap)
4
 {
5
-    char bufferOGS_HUGE_LEN*2;
6
+    char *buffer = NULL;
7
     int  ret = 0;
8
 
9
+    buffer = ogs_calloc(1, OGS_MAX_SDU_LEN);
10
+    ogs_assert(buffer);
11
+
12
 #pragma GCC diagnostic push
13
 #pragma GCC diagnostic ignored "-Wformat-nonliteral"
14
-    ret = ogs_vsnprintf(buffer, OGS_HUGE_LEN*2, format, ap);
15
+    ret = ogs_vsnprintf(buffer, OGS_MAX_SDU_LEN, format, ap);
16
 #pragma GCC diagnostic pop
17
-    if (ret < 0 || ret > OGS_HUGE_LEN*2) {
18
+    if (ret < 0 || ret > OGS_MAX_SDU_LEN) {
19
         ogs_error("vsnprintf() failedret=%d", ret);
20
+        ogs_free(buffer);
21
         return;
22
     }
23
 
24
@@ -142,4 +146,6 @@
25
         diam_log_printf(OGS_LOG_ERROR, "%d %s\n", printlevel, buffer);
26
         break;
27
     }
28
+
29
+    ogs_free(buffer);
30
 }
31
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/pfcp/build.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/pfcp/build.c Changed
201
 
1
@@ -21,50 +21,78 @@
2
 
3
 ogs_pkbuf_t *ogs_pfcp_build_heartbeat_request(uint8_t type)
4
 {
5
-    ogs_pfcp_message_t pfcp_message;
6
+    ogs_pfcp_message_t *pfcp_message = NULL;
7
     ogs_pfcp_heartbeat_request_t *req = NULL;
8
+    ogs_pkbuf_t *pkbuf = NULL;
9
 
10
     ogs_debug("Heartbeat Request");
11
 
12
-    req = &pfcp_message.pfcp_heartbeat_request;
13
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
14
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
15
+    if (!pfcp_message) {
16
+        ogs_error("ogs_calloc() failed");
17
+        return NULL;
18
+    }
19
+
20
+    req = &pfcp_message->pfcp_heartbeat_request;
21
 
22
     req->recovery_time_stamp.presence = 1;
23
     req->recovery_time_stamp.u32 = ogs_pfcp_self()->pfcp_started;
24
 
25
-    pfcp_message.h.type = type;
26
-    return ogs_pfcp_build_msg(&pfcp_message);
27
+    pfcp_message->h.type = type;
28
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
29
+    ogs_expect(pkbuf);
30
+
31
+    ogs_free(pfcp_message);
32
+
33
+    return pkbuf;
34
 }
35
 
36
 ogs_pkbuf_t *ogs_pfcp_build_heartbeat_response(uint8_t type)
37
 {
38
-    ogs_pfcp_message_t pfcp_message;
39
+    ogs_pfcp_message_t *pfcp_message = NULL;
40
     ogs_pfcp_heartbeat_response_t *rsp = NULL;
41
+    ogs_pkbuf_t *pkbuf = NULL;
42
 
43
     ogs_debug("Heartbeat Response");
44
 
45
-    rsp = &pfcp_message.pfcp_heartbeat_response;
46
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
47
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
48
+    if (!pfcp_message) {
49
+        ogs_error("ogs_calloc() failed");
50
+        return NULL;
51
+    }
52
+
53
+    rsp = &pfcp_message->pfcp_heartbeat_response;
54
 
55
     rsp->recovery_time_stamp.presence = 1;
56
     rsp->recovery_time_stamp.u32 = ogs_pfcp_self()->pfcp_started;
57
 
58
-    pfcp_message.h.type = type;
59
-    return ogs_pfcp_build_msg(&pfcp_message);
60
+    pfcp_message->h.type = type;
61
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
62
+    ogs_expect(pkbuf);
63
+
64
+    ogs_free(pfcp_message);
65
+
66
+    return pkbuf;
67
 }
68
 
69
 ogs_pkbuf_t *ogs_pfcp_cp_build_association_setup_request(uint8_t type)
70
 {
71
-    ogs_pfcp_message_t pfcp_message;
72
+    ogs_pfcp_message_t *pfcp_message = NULL;
73
     ogs_pfcp_association_setup_request_t *req = NULL;
74
+    ogs_pkbuf_t *pkbuf = NULL;
75
 
76
     ogs_pfcp_node_id_t node_id;
77
     int node_id_len = 0, rv;
78
 
79
     ogs_debug("Association Setup Request");
80
 
81
-    req = &pfcp_message.pfcp_association_setup_request;
82
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
83
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
84
+    if (!pfcp_message) {
85
+        ogs_error("ogs_calloc() failed");
86
+        return NULL;
87
+    }
88
+
89
+    req = &pfcp_message->pfcp_association_setup_request;
90
 
91
     rv = ogs_pfcp_sockaddr_to_node_id(
92
             ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
93
@@ -72,6 +100,7 @@
94
             &node_id, &node_id_len);
95
     if (rv != OGS_OK) {
96
         ogs_error("ogs_pfcp_sockaddr_to_node_id() failed");
97
+        ogs_free(pfcp_message);
98
         return NULL;
99
     }
100
     req->node_id.presence = 1;
101
@@ -84,23 +113,34 @@
102
     req->cp_function_features.presence = 1;
103
     req->cp_function_features.u8 = ogs_pfcp_self()->cp_function_features.octet5;
104
 
105
-    pfcp_message.h.type = type;
106
-    return ogs_pfcp_build_msg(&pfcp_message);
107
+    pfcp_message->h.type = type;
108
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
109
+    ogs_expect(pkbuf);
110
+
111
+    ogs_free(pfcp_message);
112
+
113
+    return pkbuf;
114
 }
115
 
116
 ogs_pkbuf_t *ogs_pfcp_cp_build_association_setup_response(uint8_t type,
117
         uint8_t cause)
118
 {
119
-    ogs_pfcp_message_t pfcp_message;
120
+    ogs_pfcp_message_t *pfcp_message = NULL;
121
     ogs_pfcp_association_setup_response_t *rsp = NULL;
122
+    ogs_pkbuf_t *pkbuf = NULL;
123
 
124
     ogs_pfcp_node_id_t node_id;
125
     int node_id_len = 0, rv;
126
 
127
     ogs_debug("Association Setup Response");
128
 
129
-    rsp = &pfcp_message.pfcp_association_setup_response;
130
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
131
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
132
+    if (!pfcp_message) {
133
+        ogs_error("ogs_calloc() failed");
134
+        return NULL;
135
+    }
136
+
137
+    rsp = &pfcp_message->pfcp_association_setup_response;
138
 
139
     rv = ogs_pfcp_sockaddr_to_node_id(
140
             ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
141
@@ -108,6 +148,7 @@
142
             &node_id, &node_id_len);
143
     if (rv != OGS_OK) {
144
         ogs_error("ogs_pfcp_sockaddr_to_node_id() failed");
145
+        ogs_free(pfcp_message);
146
         return NULL;
147
     }
148
     rsp->node_id.presence = 1;
149
@@ -123,14 +164,20 @@
150
     rsp->cp_function_features.presence = 1;
151
     rsp->cp_function_features.u8 = ogs_pfcp_self()->cp_function_features.octet5;
152
 
153
-    pfcp_message.h.type = type;
154
-    return ogs_pfcp_build_msg(&pfcp_message);
155
+    pfcp_message->h.type = type;
156
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
157
+    ogs_expect(pkbuf);
158
+
159
+    ogs_free(pfcp_message);
160
+
161
+    return pkbuf;
162
 }
163
 
164
 ogs_pkbuf_t *ogs_pfcp_up_build_association_setup_request(uint8_t type)
165
 {
166
-    ogs_pfcp_message_t pfcp_message;
167
+    ogs_pfcp_message_t *pfcp_message = NULL;
168
     ogs_pfcp_association_setup_request_t *req = NULL;
169
+    ogs_pkbuf_t *pkbuf = NULL;
170
 
171
     ogs_pfcp_node_id_t node_id;
172
     int node_id_len = 0;
173
@@ -142,8 +189,13 @@
174
 
175
     ogs_debug("Association Setup Request");
176
 
177
-    req = &pfcp_message.pfcp_association_setup_request;
178
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
179
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
180
+    if (!pfcp_message) {
181
+        ogs_error("ogs_calloc() failed");
182
+        return NULL;
183
+    }
184
+
185
+    req = &pfcp_message->pfcp_association_setup_request;
186
 
187
     rv = ogs_pfcp_sockaddr_to_node_id(
188
             ogs_pfcp_self()->pfcp_addr, ogs_pfcp_self()->pfcp_addr6,
189
@@ -151,6 +203,7 @@
190
             &node_id, &node_id_len);
191
     if (rv != OGS_OK) {
192
         ogs_error("ogs_pfcp_sockaddr_to_node_id() failed");
193
+        ogs_free(pfcp_message);
194
         return NULL;
195
     }
196
     req->node_id.presence = 1;
197
@@ -181,15 +234,21 @@
198
         }
199
     }
200
 
201
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/proto/types.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/proto/types.c Changed
10
 
1
@@ -464,7 +464,7 @@
2
         ogs_error("No IP");
3
         return OGS_ERROR;
4
     }
5
-    if (!addr && !addr) {
6
+    if (!addr && !addr6) {
7
         ogs_error("No Address");
8
         return OGS_ERROR;
9
     }
10
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/proto/types.h -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/proto/types.h Changed
10
 
1
@@ -52,8 +52,6 @@
2
 #define OGS_MAX_NUM_OF_GTPU_RESOURCE    4
3
 #define OGS_MAX_NUM_OF_FRAMED_ROUTES_IN_PDI 8
4
 
5
-#define OGS_MAX_SDU_LEN                 OGS_HUGE_LEN
6
-#define OGS_MAX_PKT_LEN                 2048
7
 #define OGS_PLMN_ID_LEN                 3
8
 #define OGS_MAX_PLMN_ID_BCD_LEN         6
9
 
10
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/sbi/client.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/sbi/client.c Changed
10
 
1
@@ -382,7 +382,7 @@
2
         request->h.uri = uri;
3
     }
4
 
5
-    curl_easy_setopt(conn->easy, CURLOPT_BUFFERSIZE, OGS_MAX_SDU_LEN*2);
6
+    curl_easy_setopt(conn->easy, CURLOPT_BUFFERSIZE, OGS_MAX_SDU_LEN);
7
 
8
     curl_easy_setopt(conn->easy, CURLOPT_SSL_VERIFYPEER, 0);
9
     curl_easy_setopt(conn->easy, CURLOPT_SSL_VERIFYHOST, 0);
10
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/sbi/conv.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/sbi/conv.c Changed
13
 
1
@@ -540,6 +540,11 @@
2
     unit = strrchr(str, ' ');
3
     bitrate = atoll(str);
4
 
5
+    if (!unit) {
6
+        ogs_error("No Unit %s", str);
7
+        return bitrate;
8
+    }
9
+
10
     SWITCH(unit+1)
11
     CASE("Kbps")
12
         return bitrate * 1024;
13
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/sbi/message.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/sbi/message.c Changed
25
 
1
@@ -2239,7 +2239,7 @@
2
             } else {
3
                 offset = data->partdata->num_of_part.content_length;
4
                 if ((data->partdata->num_of_part.content_length + length) >
5
-                        OGS_HUGE_LEN) {
6
+                        OGS_MAX_SDU_LEN) {
7
                     ogs_error("Overflow length %d:%d",
8
                         (int)data->partdata->num_of_part.content_length,
9
                         (int)length);
10
@@ -2414,12 +2414,12 @@
11
     strcpy(boundary, "=-");
12
     ogs_base64_encode_binary(boundary + 2, digest, 16);
13
 
14
-    p = http->content = ogs_calloc(1, OGS_HUGE_LEN);
15
+    p = http->content = ogs_calloc(1, OGS_MAX_SDU_LEN);
16
     if (!p) {
17
         ogs_error("ogs_calloc() failed");
18
         return false;
19
     }
20
-    last = p + OGS_HUGE_LEN;
21
+    last = p + OGS_MAX_SDU_LEN;
22
 
23
     /* First boundary */
24
     p = ogs_slprintf(p, last, "--%s\r\n", boundary);
25
open5gs_2.4.9.252.11aac.202301240007.tar.xz/lib/sbi/mhd-server.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/lib/sbi/mhd-server.c Changed
10
 
1
@@ -543,7 +543,7 @@
2
         } else {
3
             offset = request->http.content_length;
4
             if ((request->http.content_length +
5
-                        *upload_data_size) > OGS_HUGE_LEN) {
6
+                        *upload_data_size) > OGS_MAX_SDU_LEN) {
7
                 ogs_error("Overflow : Content-Length%d, upload_data_size%d",
8
                             (int)request->http.content_length,
9
                             (int)*upload_data_size);
10
open5gs_2.4.9.252.11aac.202301240007.tar.xz/src/pcf/npcf-handler.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/src/pcf/npcf-handler.c Changed
53
 
1
@@ -633,6 +633,13 @@
2
         uint8_t qos_index = 0;
3
         ogs_media_component_t *media_component = &ims_data.media_componenti;
4
 
5
+        if (media_component->media_type == OpenAPI_media_type_NULL) {
6
+            strerror = ogs_msprintf("%s:%d Media-Type is Required",
7
+                    pcf_ue->supi, sess->psi);
8
+            status = OGS_SBI_HTTP_STATUS_BAD_REQUEST;
9
+            goto cleanup;
10
+        }
11
+
12
         switch(media_component->media_type) {
13
         case OpenAPI_media_type_AUDIO:
14
             qos_index = OGS_QOS_INDEX_1;
15
@@ -644,9 +651,9 @@
16
             qos_index = OGS_QOS_INDEX_5;
17
             break;
18
         default:
19
-            strerror = ogs_msprintf("%s:%d Not implemented : Media-Type:%d",
20
+            strerror = ogs_msprintf("%s:%d Unknown Media-Type %d",
21
                     pcf_ue->supi, sess->psi, media_component->media_type);
22
-            status = OGS_SBI_HTTP_STATUS_INTERNAL_SERVER_ERROR;
23
+            status = OGS_SBI_HTTP_STATUS_BAD_REQUEST;
24
             goto cleanup;
25
         }
26
 
27
@@ -1046,6 +1053,13 @@
28
         uint8_t qos_index = 0;
29
         ogs_media_component_t *media_component = &ims_data.media_componenti;
30
 
31
+        if (media_component->media_type == OpenAPI_media_type_NULL) {
32
+            strerror = ogs_msprintf("%s:%d Media-Type is Required",
33
+                    pcf_ue->supi, sess->psi);
34
+            status = OGS_SBI_HTTP_STATUS_BAD_REQUEST;
35
+            goto cleanup;
36
+        }
37
+
38
         switch(media_component->media_type) {
39
         case OpenAPI_media_type_AUDIO:
40
             qos_index = OGS_QOS_INDEX_1;
41
@@ -1057,9 +1071,9 @@
42
             qos_index = OGS_QOS_INDEX_5;
43
             break;
44
         default:
45
-            strerror = ogs_msprintf("%s:%d Not implemented : Media-Type:%d",
46
+            strerror = ogs_msprintf("%s:%d Unknown Media-Type %d",
47
                     pcf_ue->supi, sess->psi, media_component->media_type);
48
-            status = OGS_SBI_HTTP_STATUS_INTERNAL_SERVER_ERROR;
49
+            status = OGS_SBI_HTTP_STATUS_BAD_REQUEST;
50
             goto cleanup;
51
         }
52
 
53
open5gs_2.4.9.252.11aac.202301240007.tar.xz/src/sgwc/sxa-build.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/src/sgwc/sxa-build.c Changed
127
 
1
@@ -22,7 +22,7 @@
2
 ogs_pkbuf_t *sgwc_sxa_build_session_establishment_request(
3
         uint8_t type, sgwc_sess_t *sess)
4
 {
5
-    ogs_pfcp_message_t pfcp_message;
6
+    ogs_pfcp_message_t *pfcp_message = NULL;
7
     ogs_pfcp_session_establishment_request_t *req = NULL;
8
     ogs_pkbuf_t *pkbuf = NULL;
9
 
10
@@ -39,8 +39,13 @@
11
     ogs_debug("Session Establishment Request");
12
     ogs_assert(sess);
13
 
14
-    req = &pfcp_message.pfcp_session_establishment_request;
15
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
16
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
17
+    if (!pfcp_message) {
18
+        ogs_error("ogs_calloc() failed");
19
+        return NULL;
20
+    }
21
+
22
+    req = &pfcp_message->pfcp_session_establishment_request;
23
 
24
     /* Node ID */
25
     rv = ogs_pfcp_sockaddr_to_node_id(
26
@@ -49,6 +54,7 @@
27
             &node_id, &len);
28
     if (rv != OGS_OK) {
29
         ogs_error("ogs_pfcp_sockaddr_to_node_id() failed");
30
+        ogs_free(pfcp_message);
31
         return NULL;
32
     }
33
     req->node_id.presence = 1;
34
@@ -61,6 +67,7 @@
35
             &f_seid, &len);
36
     if (rv != OGS_OK) {
37
         ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
38
+        ogs_free(pfcp_message);
39
         return NULL;
40
     }
41
     f_seid.seid = htobe64(sess->sgwc_sxa_seid);
42
@@ -103,10 +110,12 @@
43
         ogs_pfcp_build_create_bar(&req->create_bar, sess->pfcp.bar);
44
     }
45
 
46
-    pfcp_message.h.type = type;
47
-    pkbuf = ogs_pfcp_build_msg(&pfcp_message);
48
+    pfcp_message->h.type = type;
49
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
50
+    ogs_expect(pkbuf);
51
 
52
     ogs_pfcp_pdrbuf_clear();
53
+    ogs_free(pfcp_message);
54
 
55
     return pkbuf;
56
 }
57
@@ -114,7 +123,7 @@
58
 ogs_pkbuf_t *sgwc_sxa_build_bearer_to_modify_list(
59
         uint8_t type, sgwc_sess_t *sess, ogs_pfcp_xact_t *xact)
60
 {
61
-    ogs_pfcp_message_t pfcp_message;
62
+    ogs_pfcp_message_t *pfcp_message = NULL;
63
     ogs_pfcp_session_modification_request_t *req = NULL;
64
     ogs_pkbuf_t *pkbuf = NULL;
65
 
66
@@ -138,8 +147,13 @@
67
     modify_flags = xact->modify_flags;
68
     ogs_assert(modify_flags);
69
 
70
-    req = &pfcp_message.pfcp_session_modification_request;
71
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
72
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
73
+    if (!pfcp_message) {
74
+        ogs_error("ogs_calloc() failed");
75
+        return NULL;
76
+    }
77
+
78
+    req = &pfcp_message->pfcp_session_modification_request;
79
 
80
     if (modify_flags & OGS_PFCP_MODIFY_CREATE) {
81
         ogs_pfcp_pdrbuf_init();
82
@@ -254,24 +268,39 @@
83
         }
84
     }
85
 
86
-    pfcp_message.h.type = type;
87
-    pkbuf = ogs_pfcp_build_msg(&pfcp_message);
88
+    pfcp_message->h.type = type;
89
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
90
+    ogs_expect(pkbuf);
91
 
92
     if (modify_flags & OGS_PFCP_MODIFY_CREATE) {
93
         ogs_pfcp_pdrbuf_clear();
94
     }
95
 
96
+    ogs_free(pfcp_message);
97
+
98
     return pkbuf;
99
 }
100
 
101
 ogs_pkbuf_t *sgwc_sxa_build_session_deletion_request(
102
         uint8_t type, sgwc_sess_t *sess)
103
 {
104
-    ogs_pfcp_message_t pfcp_message;
105
+    ogs_pfcp_message_t *pfcp_message = NULL;
106
+    ogs_pkbuf_t *pkbuf = NULL;
107
 
108
     ogs_debug("Session Deletion Request");
109
     ogs_assert(sess);
110
 
111
-    pfcp_message.h.type = type;
112
-    return ogs_pfcp_build_msg(&pfcp_message);
113
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
114
+    if (!pfcp_message) {
115
+        ogs_error("ogs_calloc() failed");
116
+        return NULL;
117
+    }
118
+
119
+    pfcp_message->h.type = type;
120
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
121
+    ogs_expect(pkbuf);
122
+
123
+    ogs_free(pfcp_message);
124
+
125
+    return pkbuf;
126
 }
127
open5gs_2.4.9.252.11aac.202301240007.tar.xz/src/sgwu/sxa-build.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/src/sgwu/sxa-build.c Changed
132
 
1
@@ -22,7 +22,7 @@
2
 ogs_pkbuf_t *sgwu_sxa_build_session_establishment_response(uint8_t type,
3
     sgwu_sess_t *sess, ogs_pfcp_pdr_t *created_pdr, int num_of_created_pdr)
4
 {
5
-    ogs_pfcp_message_t pfcp_message;
6
+    ogs_pfcp_message_t *pfcp_message = NULL;
7
     ogs_pfcp_session_establishment_response_t *rsp = NULL;
8
     ogs_pkbuf_t *pkbuf = NULL;
9
 
10
@@ -34,8 +34,13 @@
11
 
12
     ogs_debug("Session Establishment Response");
13
 
14
-    rsp = &pfcp_message.pfcp_session_establishment_response;
15
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
16
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
17
+    if (!pfcp_message) {
18
+        ogs_error("ogs_calloc() failed");
19
+        return NULL;
20
+    }
21
+
22
+    rsp = &pfcp_message->pfcp_session_establishment_response;
23
 
24
     /* Node ID */
25
     rv = ogs_pfcp_sockaddr_to_node_id(
26
@@ -44,6 +49,7 @@
27
             &node_id, &len);
28
     if (rv != OGS_OK) {
29
         ogs_error("ogs_pfcp_sockaddr_to_node_id() failed");
30
+        ogs_free(pfcp_message);
31
         return NULL;
32
     }
33
     rsp->node_id.presence = 1;
34
@@ -60,6 +66,7 @@
35
             &f_seid, &len);
36
     if (rv != OGS_OK) {
37
         ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
38
+        ogs_free(pfcp_message);
39
         return NULL;
40
     }
41
     f_seid.seid = htobe64(sess->sgwu_sxa_seid);
42
@@ -76,10 +83,12 @@
43
         if (pdr_presence == true) j++;
44
     }
45
 
46
-    pfcp_message.h.type = type;
47
-    pkbuf = ogs_pfcp_build_msg(&pfcp_message);
48
+    pfcp_message->h.type = type;
49
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
50
+    ogs_expect(pkbuf);
51
 
52
     ogs_pfcp_pdrbuf_clear();
53
+    ogs_free(pfcp_message);
54
 
55
     return pkbuf;
56
 }
57
@@ -87,7 +96,7 @@
58
 ogs_pkbuf_t *sgwu_sxa_build_session_modification_response(uint8_t type,
59
     sgwu_sess_t *sess, ogs_pfcp_pdr_t *created_pdr, int num_of_created_pdr)
60
 {
61
-    ogs_pfcp_message_t pfcp_message;
62
+    ogs_pfcp_message_t *pfcp_message = NULL;
63
     ogs_pfcp_session_modification_response_t *rsp = NULL;
64
     ogs_pkbuf_t *pkbuf = NULL;
65
 
66
@@ -95,8 +104,13 @@
67
 
68
     ogs_debug("Session Modification Response");
69
 
70
-    rsp = &pfcp_message.pfcp_session_modification_response;
71
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
72
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
73
+    if (!pfcp_message) {
74
+        ogs_error("ogs_calloc() failed");
75
+        return NULL;
76
+    }
77
+
78
+    rsp = &pfcp_message->pfcp_session_modification_response;
79
 
80
     /* Cause */
81
     rsp->cause.presence = 1;
82
@@ -111,10 +125,12 @@
83
         if (pdr_presence == true) j++;
84
     }
85
 
86
-    pfcp_message.h.type = type;
87
-    pkbuf = ogs_pfcp_build_msg(&pfcp_message);
88
+    pfcp_message->h.type = type;
89
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
90
+    ogs_expect(pkbuf);
91
 
92
     ogs_pfcp_pdrbuf_clear();
93
+    ogs_free(pfcp_message);
94
 
95
     return pkbuf;
96
 }
97
@@ -122,18 +138,29 @@
98
 ogs_pkbuf_t *sgwu_sxa_build_session_deletion_response(uint8_t type,
99
         sgwu_sess_t *sess)
100
 {
101
-    ogs_pfcp_message_t pfcp_message;
102
+    ogs_pfcp_message_t *pfcp_message = NULL;
103
     ogs_pfcp_session_deletion_response_t *rsp = NULL;
104
+    ogs_pkbuf_t *pkbuf = NULL;
105
 
106
     ogs_debug("Session Deletion Response");
107
 
108
-    rsp = &pfcp_message.pfcp_session_deletion_response;
109
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
110
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
111
+    if (!pfcp_message) {
112
+        ogs_error("ogs_calloc() failed");
113
+        return NULL;
114
+    }
115
+
116
+    rsp = &pfcp_message->pfcp_session_deletion_response;
117
 
118
     /* Cause */
119
     rsp->cause.presence = 1;
120
     rsp->cause.u8 = OGS_PFCP_CAUSE_REQUEST_ACCEPTED;
121
 
122
-    pfcp_message.h.type = type;
123
-    return ogs_pfcp_build_msg(&pfcp_message);
124
+    pfcp_message->h.type = type;
125
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
126
+    ogs_expect(pkbuf);
127
+
128
+    ogs_free(pfcp_message);
129
+
130
+    return pkbuf;
131
 }
132
open5gs_2.4.9.252.11aac.202301240007.tar.xz/src/smf/n4-build.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/src/smf/n4-build.c Changed
172
 
1
@@ -23,7 +23,7 @@
2
 ogs_pkbuf_t *smf_n4_build_session_establishment_request(
3
         uint8_t type, smf_sess_t *sess)
4
 {
5
-    ogs_pfcp_message_t pfcp_message;
6
+    ogs_pfcp_message_t *pfcp_message = NULL;
7
     ogs_pfcp_session_establishment_request_t *req = NULL;
8
     ogs_pkbuf_t *pkbuf = NULL;
9
 
10
@@ -47,8 +47,13 @@
11
     smf_ue = sess->smf_ue;
12
     ogs_assert(smf_ue);
13
 
14
-    req = &pfcp_message.pfcp_session_establishment_request;
15
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
16
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
17
+    if (!pfcp_message) {
18
+        ogs_error("ogs_calloc() failed");
19
+        return NULL;
20
+    }
21
+
22
+    req = &pfcp_message->pfcp_session_establishment_request;
23
 
24
     /* Node ID */
25
     rv = ogs_pfcp_sockaddr_to_node_id(
26
@@ -57,6 +62,7 @@
27
             &node_id, &len);
28
     if (rv != OGS_OK) {
29
         ogs_error("ogs_pfcp_sockaddr_to_node_id() failed");
30
+        ogs_free(pfcp_message);
31
         return NULL;
32
     }
33
     req->node_id.presence = 1;
34
@@ -69,6 +75,7 @@
35
             &f_seid, &len);
36
     if (rv != OGS_OK) {
37
         ogs_error("ogs_pfcp_sockaddr_to_f_seid() failed");
38
+        ogs_free(pfcp_message);
39
         return NULL;
40
     }
41
     f_seid.seid = htobe64(sess->smf_n4_seid);
42
@@ -155,10 +162,12 @@
43
         req->s_nssai.data = &sess->s_nssai;
44
     }
45
 
46
-    pfcp_message.h.type = type;
47
-    pkbuf = ogs_pfcp_build_msg(&pfcp_message);
48
+    pfcp_message->h.type = type;
49
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
50
+    ogs_expect(pkbuf);
51
 
52
     ogs_pfcp_pdrbuf_clear();
53
+    ogs_free(pfcp_message);
54
 
55
     return pkbuf;
56
 }
57
@@ -170,7 +179,7 @@
58
     ogs_pfcp_urr_t *urr = NULL;
59
     int i;
60
 
61
-    ogs_pfcp_message_t pfcp_message;
62
+    ogs_pfcp_message_t *pfcp_message = NULL;
63
     ogs_pfcp_session_modification_request_t *req = NULL;
64
     ogs_pkbuf_t *pkbuf = NULL;
65
 
66
@@ -188,8 +197,13 @@
67
     modify_flags = xact->modify_flags;
68
     ogs_assert(modify_flags);
69
 
70
-    req = &pfcp_message.pfcp_session_modification_request;
71
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
72
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
73
+    if (!pfcp_message) {
74
+        ogs_error("ogs_calloc() failed");
75
+        return NULL;
76
+    }
77
+
78
+    req = &pfcp_message->pfcp_session_modification_request;
79
 
80
     if (modify_flags & OGS_PFCP_MODIFY_CREATE) {
81
         ogs_pfcp_pdrbuf_init();
82
@@ -281,20 +295,23 @@
83
         i++;
84
     }
85
 
86
-    pfcp_message.h.type = type;
87
-    pkbuf = ogs_pfcp_build_msg(&pfcp_message);
88
+    pfcp_message->h.type = type;
89
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
90
+    ogs_expect(pkbuf);
91
 
92
     if (modify_flags & OGS_PFCP_MODIFY_CREATE) {
93
         ogs_pfcp_pdrbuf_clear();
94
     }
95
 
96
+    ogs_free(pfcp_message);
97
+
98
     return pkbuf;
99
 }
100
 
101
 ogs_pkbuf_t *smf_n4_build_qos_flow_to_modify_list(
102
         uint8_t type, smf_sess_t *sess, ogs_pfcp_xact_t *xact)
103
 {
104
-    ogs_pfcp_message_t pfcp_message;
105
+    ogs_pfcp_message_t *pfcp_message = NULL;
106
     ogs_pfcp_session_modification_request_t *req = NULL;
107
     ogs_pkbuf_t *pkbuf = NULL;
108
 
109
@@ -319,8 +336,13 @@
110
     modify_flags = xact->modify_flags;
111
     ogs_assert(modify_flags);
112
 
113
-    req = &pfcp_message.pfcp_session_modification_request;
114
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
115
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
116
+    if (!pfcp_message) {
117
+        ogs_error("ogs_calloc() failed");
118
+        return NULL;
119
+    }
120
+
121
+    req = &pfcp_message->pfcp_session_modification_request;
122
 
123
     if (modify_flags &
124
             (OGS_PFCP_MODIFY_CREATE|
125
@@ -491,8 +513,9 @@
126
         }
127
     }
128
 
129
-    pfcp_message.h.type = type;
130
-    pkbuf = ogs_pfcp_build_msg(&pfcp_message);
131
+    pfcp_message->h.type = type;
132
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
133
+    ogs_expect(pkbuf);
134
 
135
     if (modify_flags &
136
             (OGS_PFCP_MODIFY_CREATE|
137
@@ -502,17 +525,31 @@
138
         ogs_pfcp_pdrbuf_clear();
139
     }
140
 
141
+    ogs_free(pfcp_message);
142
+
143
     return pkbuf;
144
 }
145
 
146
 ogs_pkbuf_t *smf_n4_build_session_deletion_request(
147
         uint8_t type, smf_sess_t *sess)
148
 {
149
-    ogs_pfcp_message_t pfcp_message;
150
+    ogs_pfcp_message_t *pfcp_message = NULL;
151
+    ogs_pkbuf_t *pkbuf = NULL;
152
 
153
     ogs_debug("Session Deletion Request");
154
     ogs_assert(sess);
155
 
156
-    pfcp_message.h.type = type;
157
-    return ogs_pfcp_build_msg(&pfcp_message);
158
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
159
+    if (!pfcp_message) {
160
+        ogs_error("ogs_calloc() failed");
161
+        return NULL;
162
+    }
163
+
164
+    pfcp_message->h.type = type;
165
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
166
+    ogs_expect(pkbuf);
167
+
168
+    ogs_free(pfcp_message);
169
+
170
+    return pkbuf;
171
 }
172
open5gs_2.4.9.252.11aac.202301240007.tar.xz/src/upf/n4-build.c -> open5gs_2.4.9.256.596a2.202301250006.tar.xz/src/upf/n4-build.c Changed
81
 
1
@@ -23,7 +23,7 @@
2
 ogs_pkbuf_t *upf_n4_build_session_establishment_response(uint8_t type,
3
     upf_sess_t *sess, ogs_pfcp_pdr_t *created_pdr, int num_of_created_pdr)
4
 {
5
-    ogs_pfcp_message_t pfcp_message;
6
+    ogs_pfcp_message_t *pfcp_message = NULL;
7
     ogs_pfcp_session_establishment_response_t *rsp = NULL;
8
     ogs_pkbuf_t *pkbuf = NULL;
9
 
10
@@ -35,8 +35,13 @@
11
 
12
     ogs_debug("Session Establishment Response");
13
 
14
-    rsp = &pfcp_message.pfcp_session_establishment_response;
15
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
16
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
17
+    if (!pfcp_message) {
18
+        ogs_error("ogs_calloc() failed");
19
+        return NULL;
20
+    }
21
+
22
+    rsp = &pfcp_message->pfcp_session_establishment_response;
23
 
24
     /* Node ID */
25
     ogs_pfcp_sockaddr_to_node_id(
26
@@ -69,10 +74,12 @@
27
         if (pdr_presence == true) j++;
28
     }
29
 
30
-    pfcp_message.h.type = type;
31
-    pkbuf = ogs_pfcp_build_msg(&pfcp_message);
32
+    pfcp_message->h.type = type;
33
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
34
+    ogs_expect(pkbuf);
35
 
36
     ogs_pfcp_pdrbuf_clear();
37
+    ogs_free(pfcp_message);
38
 
39
     return pkbuf;
40
 }
41
@@ -80,7 +87,7 @@
42
 ogs_pkbuf_t *upf_n4_build_session_modification_response(uint8_t type,
43
     upf_sess_t *sess, ogs_pfcp_pdr_t *created_pdr, int num_of_created_pdr)
44
 {
45
-    ogs_pfcp_message_t pfcp_message;
46
+    ogs_pfcp_message_t *pfcp_message = NULL;
47
     ogs_pfcp_session_modification_response_t *rsp = NULL;
48
     ogs_pkbuf_t *pkbuf = NULL;
49
 
50
@@ -88,8 +95,13 @@
51
 
52
     ogs_debug("Session Modification Response");
53
 
54
-    rsp = &pfcp_message.pfcp_session_modification_response;
55
-    memset(&pfcp_message, 0, sizeof(ogs_pfcp_message_t));
56
+    pfcp_message = ogs_calloc(1, sizeof(*pfcp_message));
57
+    if (!pfcp_message) {
58
+        ogs_error("ogs_calloc() failed");
59
+        return NULL;
60
+    }
61
+
62
+    rsp = &pfcp_message->pfcp_session_modification_response;
63
 
64
     /* Cause */
65
     rsp->cause.presence = 1;
66
@@ -104,10 +116,12 @@
67
         if (pdr_presence == true) j++;
68
     }
69
 
70
-    pfcp_message.h.type = type;
71
-    pkbuf = ogs_pfcp_build_msg(&pfcp_message);
72
+    pfcp_message->h.type = type;
73
+    pkbuf = ogs_pfcp_build_msg(pfcp_message);
74
+    ogs_expect(pkbuf);
75
 
76
     ogs_pfcp_pdrbuf_clear();
77
+    ogs_free(pfcp_message);
78
 
79
     return pkbuf;
80
 }
81