laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sccp/+/33642 )
Change subject: M3UA/SUA: Don't add empty routing context IE in DUNA/DAVA/DUPU ......................................................................
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 --- M src/m3ua.c M src/sua.c 2 files changed, 20 insertions(+), 6 deletions(-)
Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified
diff --git a/src/m3ua.c b/src/m3ua.c index 8d82522..85ac974 100644 --- a/src/m3ua.c +++ b/src/m3ua.c @@ -778,7 +778,7 @@
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 @@
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 @@
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); diff --git a/src/sua.c b/src/sua.c index a20d751..de69ab3 100644 --- a/src/sua.c +++ b/src/sua.c @@ -783,7 +783,7 @@
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 @@
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 @@
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)