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


Change subject: xua_msg: return M3UA_ERR in xua_dialect_check_all_ies()
......................................................................

xua_msg: return M3UA_ERR in xua_dialect_check_all_ies()

This way we can provide better information to peer on what went wrong.
Furthermore, the return values now become much clearer.

Change-Id: I9df00f9b10f7341171912cf32e8ba57344ae8b4a
---
M src/m3ua.c
M src/sua.c
M src/xua_msg.c
3 files changed, 11 insertions(+), 10 deletions(-)



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

diff --git a/src/m3ua.c b/src/m3ua.c
index 5c7c4ef..d1a7e27 100644
--- a/src/m3ua.c
+++ b/src/m3ua.c
@@ -1054,8 +1054,8 @@
        LOGPASP(asp, DLM3UA, LOGL_DEBUG, "Received M3UA Message (%s)\n",
                xua_hdr_dump(xua, &xua_dialect_m3ua));

-       if (!xua_dialect_check_all_ies(&xua_dialect_m3ua, xua)) {
-               rc = M3UA_ERR_MISSING_PARAM;
+       rc = xua_dialect_check_all_ies(&xua_dialect_m3ua, xua);
+       if (rc > 0) {
                xua_msg_free(xua);
                goto out;
        }
diff --git a/src/sua.c b/src/sua.c
index 53ca3b8..2011f86 100644
--- a/src/sua.c
+++ b/src/sua.c
@@ -937,9 +937,9 @@
        LOGPASP(asp, DLSUA, LOGL_DEBUG, "Received SUA Message (%s)\n",
                xua_hdr_dump(xua, &xua_dialect_sua));

-       if (!xua_dialect_check_all_ies(&xua_dialect_sua, xua)) {
-               /* FIXME: Return error? */
-               err = sua_gen_error_msg(SUA_ERR_MISSING_PARAM, msg);
+       rc = xua_dialect_check_all_ies(&xua_dialect_sua, xua);
+       if (rc > 0) {
+               err = sua_gen_error_msg(rc, msg);
                goto out;
        }

diff --git a/src/xua_msg.c b/src/xua_msg.c
index 2ec1497..44b173d 100644
--- a/src/xua_msg.c
+++ b/src/xua_msg.c
@@ -535,6 +535,7 @@
        return buf;
 }

+/* Validate incoming xua_msg. returns 0 on success, M3UA_ERR_* on failure. */
 int xua_dialect_check_all_ies(const struct xua_dialect *dialect, const struct 
xua_msg *xua)
 {
        uint8_t msg_class = xua->hdr.msg_class;
@@ -545,12 +546,12 @@

        /* unknown class? */
        if (!xmc)
-               return 1;
+               return 0;

        ies = &xmc->ies[msg_type][0];
        /* no mandatory IEs? */
        if (!ies)
-               return 1;
+               return 0;

        for (ie = ies; ie->tag; ie = ies++) {
                struct xua_msg_part *part = xua_msg_find_tag(xua, ie->tag);
@@ -562,7 +563,7 @@
                                dialect->name, xmc->name,
                                xua_class_msg_name(xmc, msg_type),
                                xua_class_iei_name(xmc, ie->tag));
-                       return 0;
+                       return M3UA_ERR_MISSING_PARAM;
                }

                if (part->len < ie->len_min || part->len > ie->len_max) {
@@ -573,11 +574,11 @@
                                xua_class_msg_name(xmc, msg_type),
                                xua_class_iei_name(xmc, ie->tag),
                                part->len, ie->len_min, ie->len_max);
-                       return 0;
+                       return M3UA_ERR_PARAM_FIELD_ERR;
                }
        }

-       return 1;
+       return 0;
 }

 char *xua_msg_dump(const struct xua_msg *xua, const struct xua_dialect 
*dialect)

--
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/43389?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: I9df00f9b10f7341171912cf32e8ba57344ae8b4a
Gerrit-Change-Number: 43389
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to