forked from acouzens/open5gs
[MME] fix the crash with unknown S-NSSAI (#1287)
This commit is contained in:
parent
54b919f65f
commit
d87d7c12c2
|
@ -43,7 +43,6 @@ int ogs_dbi_session_data(char *supi, ogs_s_nssai_t *s_nssai, char *dnn,
|
|||
ogs_session_data_t zero_data;
|
||||
|
||||
ogs_assert(supi);
|
||||
ogs_assert(s_nssai);
|
||||
ogs_assert(dnn);
|
||||
ogs_assert(session_data);
|
||||
|
||||
|
@ -122,9 +121,10 @@ int ogs_dbi_session_data(char *supi, ogs_s_nssai_t *s_nssai, char *dnn,
|
|||
continue;
|
||||
}
|
||||
|
||||
if (s_nssai->sst != sst) continue;
|
||||
if (s_nssai && s_nssai->sst != sst) continue;
|
||||
|
||||
if (s_nssai->sd.v != OGS_S_NSSAI_NO_SD_VALUE &&
|
||||
if (s_nssai &&
|
||||
s_nssai->sd.v != OGS_S_NSSAI_NO_SD_VALUE &&
|
||||
sd.v != OGS_S_NSSAI_NO_SD_VALUE) {
|
||||
if (s_nssai->sd.v != sd.v) continue;
|
||||
}
|
||||
|
@ -150,7 +150,10 @@ int ogs_dbi_session_data(char *supi, ogs_s_nssai_t *s_nssai, char *dnn,
|
|||
done:
|
||||
if (found == false) {
|
||||
ogs_error("Cannot find SUPI[%s] S_NSSAI[SST:%d SD:0x%x] DNN[%s] in DB",
|
||||
supi_id, s_nssai->sst, s_nssai->sd.v, dnn);
|
||||
supi_id,
|
||||
s_nssai ? s_nssai->sst : 0,
|
||||
s_nssai ? s_nssai->sd.v : 0,
|
||||
dnn);
|
||||
|
||||
rv = OGS_ERROR;
|
||||
goto out;
|
||||
|
|
|
@ -277,7 +277,6 @@ static int hss_ogs_diam_s6a_ulr_cb( struct msg **msg, struct avp *avp,
|
|||
union avp_value val;
|
||||
|
||||
char imsi_bcd[OGS_MAX_IMSI_BCD_LEN+1];
|
||||
ogs_s_nssai_t s_nssai;
|
||||
|
||||
int rv;
|
||||
uint32_t result_code = 0;
|
||||
|
@ -463,13 +462,10 @@ static int hss_ogs_diam_s6a_ulr_cb( struct msg **msg, struct avp *avp,
|
|||
ret = fd_msg_avp_add(avp, MSG_BRW_LAST_CHILD, avp_rau_tau_timer);
|
||||
ogs_assert(ret == 0);
|
||||
|
||||
/* For EPC, we'll use SST:1 */
|
||||
s_nssai.sst = 1;
|
||||
s_nssai.sd.v = OGS_S_NSSAI_NO_SD_VALUE;
|
||||
/* For EPC, we'll use first Slice in Subscription */
|
||||
if (subscription_data.num_of_slice)
|
||||
slice_data = &subscription_data.slice[0];
|
||||
|
||||
slice_data = ogs_slice_find_by_s_nssai(
|
||||
subscription_data.slice, subscription_data.num_of_slice,
|
||||
&s_nssai);
|
||||
if (!slice_data) {
|
||||
ogs_error("[%s] Cannot find S-NSSAI", imsi_bcd);
|
||||
result_code = OGS_DIAM_S6A_ERROR_UNKNOWN_EPS_SUBSCRIPTION;
|
||||
|
|
|
@ -388,7 +388,6 @@ static int hss_ogs_diam_swx_sar_cb( struct msg **msg, struct avp *avp,
|
|||
union avp_value val;
|
||||
|
||||
char *user_name = NULL;
|
||||
ogs_s_nssai_t s_nssai;
|
||||
|
||||
char imsi_bcd[OGS_MAX_IMSI_BCD_LEN+1];
|
||||
|
||||
|
@ -557,13 +556,10 @@ static int hss_ogs_diam_swx_sar_cb( struct msg **msg, struct avp *avp,
|
|||
ret = fd_msg_avp_add(avp, MSG_BRW_LAST_CHILD, avp_ambr);
|
||||
ogs_assert(ret == 0);
|
||||
|
||||
/* For EPC, we'll use SST:1 */
|
||||
s_nssai.sst = 1;
|
||||
s_nssai.sd.v = OGS_S_NSSAI_NO_SD_VALUE;
|
||||
/* For EPC, we'll use first Slice in Subscription */
|
||||
if (subscription_data.num_of_slice)
|
||||
slice_data = &subscription_data.slice[0];
|
||||
|
||||
slice_data = ogs_slice_find_by_s_nssai(
|
||||
subscription_data.slice, subscription_data.num_of_slice,
|
||||
&s_nssai);
|
||||
if (!slice_data) {
|
||||
ogs_error("[%s] Cannot find S-NSSAI", imsi_bcd);
|
||||
result_code = OGS_DIAM_S6A_ERROR_UNKNOWN_EPS_SUBSCRIPTION;
|
||||
|
|
|
@ -271,7 +271,6 @@ int pcrf_db_qos_data(
|
|||
{
|
||||
int rv, i;
|
||||
char *supi = NULL;
|
||||
ogs_s_nssai_t s_nssai;
|
||||
|
||||
ogs_assert(imsi_bcd);
|
||||
ogs_assert(apn);
|
||||
|
@ -281,11 +280,8 @@ int pcrf_db_qos_data(
|
|||
supi = ogs_msprintf("%s-%s", OGS_ID_SUPI_TYPE_IMSI, imsi_bcd);
|
||||
ogs_assert(supi);
|
||||
|
||||
/* For EPC, we'll use SST:1 */
|
||||
s_nssai.sst = 1;
|
||||
s_nssai.sd.v = OGS_S_NSSAI_NO_SD_VALUE;
|
||||
|
||||
rv = ogs_dbi_session_data(supi, &s_nssai, apn, session_data);
|
||||
/* For EPC, we'll use [S_NSSAI = NULL] */
|
||||
rv = ogs_dbi_session_data(supi, NULL, apn, session_data);
|
||||
|
||||
/* For EPC, we need to inialize Flow-Status in Pcc-Rule */
|
||||
for (i = 0; i < session_data->num_of_pcc_rule; i++) {
|
||||
|
|
Loading…
Reference in New Issue