pespin submitted this change.

View Change

Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified
m3ua: m3ua_gen_error_msg(): include Routing Context IE in cause Invalid Routing Context

As per RFC4666 3.8.1:
"""
The "Invalid Routing Context" error is sent if a message is received
from a peer with an invalid (unconfigured) Routing Context value.
For this error, the invalid Routing Context(s) MUST be included in
the Error message."
"""

Hence add the originating Routing Context IE so the error message can be
further identified.
For the same reason, also add the Diagnostic Information for the
specific cases in the switch statement, and make them more robust about
possible null pointer dereference.

Change-Id: If821109701e315d17f5334c680670ea6c7bce3bd
---
M src/m3ua.c
1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/src/m3ua.c b/src/m3ua.c
index 3980bd3..d982eeb 100644
--- a/src/m3ua.c
+++ b/src/m3ua.c
@@ -383,7 +383,6 @@
{
struct xua_msg *err = m3ua_gen_error(err_code);
struct xua_msg *xua;
- struct xua_msg_part *na_ie;
unsigned int len_max_40;

if (!err)
@@ -393,18 +392,27 @@
case M3UA_ERR_INVAL_NET_APPEAR:
/* Include NA IE in Error message. */
xua = xua_from_msg(M3UA_VERSION, msgb_length(msg), msgb_data(msg));
- na_ie = xua_msg_find_tag(xua, M3UA_IEI_NET_APPEAR);
- xua_msg_add_data(err, M3UA_IEI_NET_APPEAR, na_ie->len, na_ie->dat);
+ if (xua)
+ xua_msg_copy_part(err, M3UA_IEI_NET_APPEAR, xua, M3UA_IEI_NET_APPEAR);
+ xua_msg_free(xua);
+ break;
+ case M3UA_ERR_INVAL_ROUT_CTX:
+ /* Include Routing Context IE if available: */
+ xua = xua_from_msg(M3UA_VERSION, msgb_length(msg), msgb_data(msg));
+ if (xua)
+ xua_msg_copy_part(err, M3UA_IEI_ROUTE_CTX, xua, M3UA_IEI_ROUTE_CTX);
xua_msg_free(xua);
break;
default:
- len_max_40 = msgb_length(msg);
- if (len_max_40 > 40)
- len_max_40 = 40;
-
- xua_msg_add_data(err, M3UA_IEI_DIAG_INFO, len_max_40, msgb_data(msg));
+ break;
}

+ len_max_40 = msgb_length(msg);
+ if (len_max_40 > 40)
+ len_max_40 = 40;
+
+ xua_msg_add_data(err, M3UA_IEI_DIAG_INFO, len_max_40, msgb_data(msg));
+
return err;
}


To view, visit change 42536. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: If821109701e315d17f5334c680670ea6c7bce3bd
Gerrit-Change-Number: 42536
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: osmith <osmith@sysmocom.de>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>