pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmo-sigtran/+/43387?usp=email )


Change subject: m3ua: Validate IE lengths of ASPTM & ASPSM messages
......................................................................

m3ua: Validate IE lengths of ASPTM & ASPSM messages

Since all IEs in APTM and ASPSM messages are Optional, and until
recently we only validated presence of mandatory IEs, there were no
related structs for such messages.
Now that we validate lengths of IEs, add the definitions for those
messages too.

Related: OS#7074
Reported-By: Tristan Madani <[email protected]>
Change-Id: I27406eac5b82c1e6702961bb3482b0bf7fe4ff15
---
M src/m3ua.c
1 file changed, 64 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran 
refs/changes/87/43387/1

diff --git a/src/m3ua.c b/src/m3ua.c
index 7de2414..5c7c4ef 100644
--- a/src/m3ua.c
+++ b/src/m3ua.c
@@ -163,6 +163,12 @@
 #define M3UA_MSG_PART_CLASS_DIAG_INFO(mandatory) \
        XUA_MSG_PART_CLASS(M3UA_IEI_DIAG_INFO, (mandatory), 0, UINT16_MAX)

+#define M3UA_MSG_PART_CLASS_HEARDBT_DATA(mandatory) \
+       XUA_MSG_PART_CLASS(M3UA_IEI_HEARDBT_DATA, (mandatory), 0, UINT16_MAX)
+
+#define M3UA_MSG_PART_CLASS_TRAF_MODE_TYP(mandatory) \
+       XUA_MSG_PART_CLASS_U32(M3UA_IEI_TRAF_MODE_TYP, (mandatory))
+
 #define M3UA_MSG_PART_CLASS_ERR_CODE(mandatory) \
        XUA_MSG_PART_CLASS_U32(M3UA_IEI_ERR_CODE, (mandatory))

@@ -293,6 +299,28 @@
 };

 /* ASPSM */
+static const struct xua_msg_part_class asp_up_ies[] = {
+       M3UA_MSG_PART_CLASS_ASP_ID(false),
+       M3UA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class asp_down_ies[] = {
+       M3UA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class beat_ies[] = {
+       M3UA_MSG_PART_CLASS_HEARDBT_DATA(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class asp_up_ack_ies[] = {
+       M3UA_MSG_PART_CLASS_ASP_ID(false),
+       M3UA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class asp_down_ack_ies[] = {
+       M3UA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
 static const struct value_string m3ua_aspsm_msgt_names[] = {
        { M3UA_ASPSM_UP,        "UP" },
        { M3UA_ASPSM_DOWN,      "DOWN" },
@@ -305,9 +333,39 @@
 const struct xua_msg_class m3ua_msg_class_aspsm = {
        .name = "ASPSM",
        .msgt_names = m3ua_aspsm_msgt_names,
+       .ies = {
+               IES(M3UA_ASPSM_UP, asp_up_ies),
+               IES(M3UA_ASPSM_DOWN, asp_down_ies),
+               IES(M3UA_ASPSM_BEAT, beat_ies),
+               IES(M3UA_ASPSM_UP_ACK, asp_up_ack_ies),
+               IES(M3UA_ASPSM_DOWN_ACK, asp_down_ack_ies),
+               /* M3UA_ASPSM_BEAT_ACK has not IEs */
+       },
 };

 /* ASPTM */
+static const struct xua_msg_part_class asp_act_ies[] = {
+       M3UA_MSG_PART_CLASS_TRAF_MODE_TYP(false),
+       M3UA_MSG_PART_CLASS_ROUTE_CTX(false),
+       M3UA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class asp_inact_ies[] = {
+       M3UA_MSG_PART_CLASS_ROUTE_CTX(false),
+       M3UA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class asp_act_ack_ies[] = {
+       M3UA_MSG_PART_CLASS_TRAF_MODE_TYP(false),
+       M3UA_MSG_PART_CLASS_ROUTE_CTX(false),
+       M3UA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class asp_inact_ack_ies[] = {
+       M3UA_MSG_PART_CLASS_ROUTE_CTX(false),
+       M3UA_MSG_PART_CLASS_INFO_STRING(false),
+       XUA_MSG_PART_CLASS_EOF
+};
 const struct value_string m3ua_asptm_msgt_names[] = {
        { M3UA_ASPTM_ACTIVE,    "ACTIVE" },
        { M3UA_ASPTM_INACTIVE,  "INACTIVE" },
@@ -319,6 +377,12 @@
        .name = "ASPTM",
        .msgt_names = m3ua_asptm_msgt_names,
        .iei_names = m3ua_iei_names,
+       .ies = {
+               IES(M3UA_ASPTM_ACTIVE, asp_act_ies),
+               IES(M3UA_ASPTM_INACTIVE, asp_inact_ies),
+               IES(M3UA_ASPTM_ACTIVE_ACK, asp_act_ack_ies),
+               IES(M3UA_ASPTM_INACTIVE_ACK, asp_inact_ack_ies),
+       },
 };

 /* MGMT */

--
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/43387?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: I27406eac5b82c1e6702961bb3482b0bf7fe4ff15
Gerrit-Change-Number: 43387
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to