diff options
author | Harald Welte <laforge@osmocom.org> | 2023-07-07 16:25:52 +0200 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2023-07-10 08:36:40 +0000 |
commit | 15327917981a4671dbe2eb6c5345b43f02f026fc (patch) | |
tree | 8ae903187ef16b037bb44932d2ea67bfd41e029d | |
parent | 7afbc23c2dc91da6cfb6a325e72185ad270967ba (diff) |
M3UA/SUA: Don't add empty routing context IE in DUNA/DAVA/DUPU
Before this patch, the code generating a DUNA or DAVA message would
potentially generate a ROUTE_CTX IE with zero-length content, rather
than skipping such an IE altogether if no routing context[s] are given.
Change-Id: I19d0382cd2d428a91ac716182b9d86dcdc2c2ebd
Related: SYS#6511
-rw-r--r-- | src/m3ua.c | 6 | ||||
-rw-r--r-- | src/sua.c | 6 |
2 files changed, 6 insertions, 6 deletions
@@ -778,7 +778,7 @@ static struct xua_msg *m3ua_encode_duna(const uint32_t *rctx, unsigned int num_r xua->hdr = XUA_HDR(M3UA_MSGC_SNM, M3UA_SNM_DUNA); xua->hdr.version = M3UA_VERSION; - if (rctx) + if (rctx && num_rctx) xua_msg_add_data(xua, M3UA_IEI_ROUTE_CTX, num_rctx * sizeof(*rctx), (const uint8_t *)rctx); xua_msg_add_data(xua, M3UA_IEI_AFFECTED_PC, num_aff_pc * sizeof(*aff_pc), (const uint8_t *) aff_pc); @@ -827,7 +827,7 @@ static struct xua_msg *m3ua_encode_dupu(const uint32_t *rctx, unsigned int num_r xua->hdr = XUA_HDR(M3UA_MSGC_SNM, M3UA_SNM_DUPU); xua->hdr.version = M3UA_VERSION; - if (rctx) + if (rctx && num_rctx) xua_msg_add_data(xua, M3UA_IEI_ROUTE_CTX, num_rctx * sizeof(*rctx), (const uint8_t *)rctx); xua_msg_add_u32(xua, M3UA_IEI_AFFECTED_PC, dpc); @@ -882,7 +882,7 @@ void m3ua_tx_snm_congestion(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsi xua->hdr = XUA_HDR(M3UA_MSGC_SNM, M3UA_SNM_SCON); xua->hdr.version = M3UA_VERSION; - if (rctx) + if (rctx && num_rctx) xua_msg_add_data(xua, M3UA_IEI_ROUTE_CTX, num_rctx * sizeof(*rctx), (const uint8_t *)rctx); xua_msg_add_data(xua, M3UA_IEI_AFFECTED_PC, num_aff_pc * sizeof(*aff_pc), (const uint8_t *) aff_pc); @@ -783,7 +783,7 @@ static struct xua_msg *sua_encode_duna(const uint32_t *rctx, unsigned int num_rc xua->hdr = XUA_HDR(SUA_MSGC_SNM, SUA_SNM_DUNA); xua->hdr.version = SUA_VERSION; - if (rctx) + if (rctx && num_rctx) xua_msg_add_data(xua, SUA_IEI_ROUTE_CTX, num_rctx * 4, (const uint8_t *)rctx); xua_msg_add_data(xua, SUA_IEI_AFFECTED_PC, num_aff_pc * 4, (const uint8_t *) aff_pc); @@ -838,7 +838,7 @@ static struct xua_msg *sua_encode_dupu(const uint32_t *rctx, unsigned int num_rc xua->hdr = XUA_HDR(SUA_MSGC_SNM, SUA_SNM_DUNA); xua->hdr.version = SUA_VERSION; - if (rctx) + if (rctx && num_rctx) xua_msg_add_data(xua, SUA_IEI_ROUTE_CTX, num_rctx * sizeof(*rctx), (const uint8_t *)rctx); xua_msg_add_u32(xua, SUA_IEI_AFFECTED_PC, dpc); @@ -893,7 +893,7 @@ void sua_tx_snm_congestion(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsig xua->hdr = XUA_HDR(SUA_MSGC_SNM, SUA_SNM_SCON); xua->hdr.version = SUA_VERSION; - if (rctx) + if (rctx && num_rctx) xua_msg_add_data(xua, SUA_IEI_ROUTE_CTX, num_rctx * sizeof(*rctx), (const uint8_t *)rctx); xua_msg_add_data(xua, SUA_IEI_AFFECTED_PC, num_aff_pc * sizeof(*aff_pc), (const uint8_t *) aff_pc); if (ssn) |