pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/libosmo-sigtran/+/42536?usp=email )

Change subject: m3ua: m3ua_gen_error_msg(): include Routing Context IE in cause 
Invalid Routing Context
......................................................................

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(-)

Approvals:
  pespin: Looks good to me, approved
  Jenkins Builder: Verified




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 https://gerrit.osmocom.org/c/libosmo-sigtran/+/42536?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: If821109701e315d17f5334c680670ea6c7bce3bd
Gerrit-Change-Number: 42536
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>

Reply via email to