laforge has submitted this change. (
https://gerrit.osmocom.org/c/libosmo-sigtran/+/43389?usp=email )
Change subject: xua_msg: return M3UA_ERR in xua_dialect_check_all_mand_ies()
......................................................................
xua_msg: return M3UA_ERR in xua_dialect_check_all_mand_ies()
This way we can provide better information to peer on what went wrong,
specially since we'll be adding more checks in follow-up commits.
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, 10 insertions(+), 9 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
osmith: Looks good to me, but someone else must approve
diff --git a/src/m3ua.c b/src/m3ua.c
index 46e145b..c232f02 100644
--- a/src/m3ua.c
+++ b/src/m3ua.c
@@ -897,8 +897,8 @@
LOGPASP(asp, DLM3UA, LOGL_DEBUG, "Received M3UA Message (%s)\n",
xua_hdr_dump(xua, &xua_dialect_m3ua));
- if (!xua_dialect_check_all_mand_ies(&xua_dialect_m3ua, xua)) {
- rc = M3UA_ERR_MISSING_PARAM;
+ rc = xua_dialect_check_all_mand_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 f11bc9e..8578647 100644
--- a/src/sua.c
+++ b/src/sua.c
@@ -780,9 +780,9 @@
LOGPASP(asp, DLSUA, LOGL_DEBUG, "Received SUA Message (%s)\n",
xua_hdr_dump(xua, &xua_dialect_sua));
- if (!xua_dialect_check_all_mand_ies(&xua_dialect_sua, xua)) {
- /* FIXME: Return error? */
- err = sua_gen_error_msg(SUA_ERR_MISSING_PARAM, msg);
+ rc = xua_dialect_check_all_mand_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 c254d83..8364a48 100644
--- a/src/xua_msg.c
+++ b/src/xua_msg.c
@@ -534,6 +534,7 @@
return buf;
}
+/* Validate incoming xua_msg. returns 0 on success, M3UA_ERR_* on failure. */
int xua_dialect_check_all_mand_ies(const struct xua_dialect *dialect, const
struct xua_msg *xua)
{
uint8_t msg_class = xua->hdr.msg_class;
@@ -544,12 +545,12 @@
/* unknown class? */
if (!xmc)
- return 1;
+ return 0;
ies = xmc->mand_ies[msg_type];
/* no mandatory IEs? */
if (!ies)
- return 1;
+ return 0;
for (ie = *ies; ie; ie = *ies++) {
if (!xua_msg_find_tag(xua, ie)) {
@@ -559,11 +560,11 @@
dialect->name, xmc->name,
xua_class_msg_name(xmc, msg_type),
xua_class_iei_name(xmc, ie));
- return 0;
+ return M3UA_ERR_MISSING_PARAM;
}
}
- 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: merged
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: I9df00f9b10f7341171912cf32e8ba57344ae8b4a
Gerrit-Change-Number: 43389
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>