[PATCH] libosmo-sccp[master]: M3UA: Make sure to reject unsupported traffic mode types

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Sun Apr 9 19:31:09 UTC 2017


Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/2270

to look at the new patch set (#5).

M3UA: Make sure to reject unsupported traffic mode types

This was discovered (and fix validated) using m3ua-sgp-asptm-i-004 of
Michael Tuexen's m3ua-testtool.

Change-Id: I76c01189b75ff3084cd4d3944314ec9b9f811dbf
---
M src/xua_asp_fsm.c
1 file changed, 32 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/70/2270/5

diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c
index 1570bc9..87f8927 100644
--- a/src/xua_asp_fsm.c
+++ b/src/xua_asp_fsm.c
@@ -210,6 +210,25 @@
 	return osmo_ss7_asp_send(asp, msg);
 }
 
+static int peer_send_error(struct osmo_fsm_inst *fi, uint32_t err_code)
+{
+	struct xua_asp_fsm_priv *xafp = fi->priv;
+	struct osmo_ss7_asp *asp = xafp->asp;
+	struct xua_msg *xua = xua_msg_alloc();
+	struct msgb *msg;
+
+	xua->hdr = XUA_HDR(SUA_MSGC_MGMT, SUA_MGMT_ERR);
+	xua->hdr.version = SUA_VERSION;
+	xua_msg_add_u32(xua, SUA_IEI_ERR_CODE, err_code);
+
+	msg = xua_to_msg(SUA_VERSION, xua);
+	xua_msg_free(xua);
+	if (!msg)
+		return -1;
+
+	return osmo_ss7_asp_send(asp, msg);
+}
+
 static void xua_t_ack_cb(void *data)
 {
 	struct osmo_fsm_inst *fi = data;
@@ -373,6 +392,9 @@
 
 static void xua_asp_fsm_inactive(struct osmo_fsm_inst *fi, uint32_t event, void *data)
 {
+	struct xua_msg *xua_in;
+	uint32_t traf_mode;
+
 	check_stop_t_ack(fi, event);
 	switch (event) {
 	case XUA_ASP_E_M_ASP_ACTIVE_REQ:
@@ -400,8 +422,18 @@
 				     PRIM_OP_CONFIRM);
 		break;
 	case XUA_ASP_E_ASPTM_ASPAC:
+		xua_in = data;
 		/* only in role SG */
 		ENSURE_SG_OR_IPSP(fi, event);
+		if (xua_msg_find_tag(xua_in, M3UA_IEI_TRAF_MODE_TYP)) {
+			traf_mode = xua_msg_get_u32(xua_in, M3UA_IEI_TRAF_MODE_TYP);
+			if (traf_mode != M3UA_TMOD_OVERRIDE &&
+			    traf_mode != M3UA_TMOD_LOADSHARE &&
+			    traf_mode != M3UA_TMOD_BCAST) {
+				peer_send_error(fi, M3UA_ERR_UNSUPP_TRAF_MOD_TYP);
+				break;
+			}
+		}
 		/* send ACK */
 		peer_send(fi, XUA_ASP_E_ASPTM_ASPAC_ACK, NULL);
 		/* transition state and inform layer manager */

-- 
To view, visit https://gerrit.osmocom.org/2270
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I76c01189b75ff3084cd4d3944314ec9b9f811dbf
Gerrit-PatchSet: 5
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list