laforge submitted this change.
m3ua: Validate IE lengths of ASPTM & ASPSM messages [2/6]
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 <tristan@talencesecurity.com>
Change-Id: I27406eac5b82c1e6702961bb3482b0bf7fe4ff15
---
M src/m3ua.c
1 file changed, 64 insertions(+), 0 deletions(-)
diff --git a/src/m3ua.c b/src/m3ua.c
index 9b92395..f500883 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_UNBOUND(M3UA_IEI_DIAG_INFO, (mandatory))
+#define M3UA_MSG_PART_CLASS_HEARDBT_DATA(mandatory) \
+ XUA_MSG_PART_CLASS_UNBOUND(M3UA_IEI_HEARDBT_DATA, (mandatory))
+
+#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))
@@ -295,6 +301,28 @@
};
/* ASPSM */
+static const struct xua_msg_part_class m3ua_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 m3ua_asp_down_ies[] = {
+ M3UA_MSG_PART_CLASS_INFO_STRING(false),
+ XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class m3ua_beat_ies[] = {
+ M3UA_MSG_PART_CLASS_HEARDBT_DATA(false),
+ XUA_MSG_PART_CLASS_EOF
+};
+static const struct xua_msg_part_class m3ua_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 m3ua_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" },
@@ -308,9 +336,39 @@
.name = "ASPSM",
.msgt_names = m3ua_aspsm_msgt_names,
.iei_names = m3ua_iei_names,
+ .ies = {
+ IES(M3UA_ASPSM_UP, m3ua_asp_up_ies),
+ IES(M3UA_ASPSM_DOWN, m3ua_asp_down_ies),
+ IES(M3UA_ASPSM_BEAT, m3ua_beat_ies),
+ IES(M3UA_ASPSM_UP_ACK, m3ua_asp_up_ack_ies),
+ IES(M3UA_ASPSM_DOWN_ACK, m3ua_asp_down_ack_ies),
+ /* M3UA_ASPSM_BEAT_ACK has no IEs */
+ },
};
/* ASPTM */
+static const struct xua_msg_part_class m3ua_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 m3ua_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 m3ua_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 m3ua_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" },
@@ -322,6 +380,12 @@
.name = "ASPTM",
.msgt_names = m3ua_asptm_msgt_names,
.iei_names = m3ua_iei_names,
+ .ies = {
+ IES(M3UA_ASPTM_ACTIVE, m3ua_asp_act_ies),
+ IES(M3UA_ASPTM_INACTIVE, m3ua_asp_inact_ies),
+ IES(M3UA_ASPTM_ACTIVE_ACK, m3ua_asp_act_ack_ies),
+ IES(M3UA_ASPTM_INACTIVE_ACK, m3ua_asp_inact_ack_ies),
+ },
};
/* MGMT */
To view, visit change 43387. To unsubscribe, or for help writing mail filters, visit settings.