Change in libosmo-sccp[master]: xua_msg: Add xua_msg*_get_str() to obtain string IE

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Mon Feb 8 10:40:46 UTC 2021


laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sccp/+/22772 )

Change subject: xua_msg: Add xua_msg*_get_str() to obtain string IE
......................................................................

xua_msg: Add xua_msg*_get_str() to obtain string IE

We copy the contents to a static thread-local buffer to ensure
zero termination of the string received by a remote entity.

Change-Id: I8cbb7aeaf0cb64db0ce01c21e5fca9ab3cd932b6
---
M include/osmocom/sigtran/xua_msg.h
M src/xua_msg.c
2 files changed, 25 insertions(+), 0 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/include/osmocom/sigtran/xua_msg.h b/include/osmocom/sigtran/xua_msg.h
index a2cdbf2..329ba96 100644
--- a/include/osmocom/sigtran/xua_msg.h
+++ b/include/osmocom/sigtran/xua_msg.h
@@ -91,6 +91,8 @@
 int xua_msg_add_u32(struct xua_msg *xua, uint16_t iei, uint32_t val);
 uint32_t xua_msg_part_get_u32(const struct xua_msg_part *part);
 uint32_t xua_msg_get_u32(const struct xua_msg *xua, uint16_t iei);
+const char *xua_msg_part_get_str(const struct xua_msg_part *part);
+const char *xua_msg_get_str(const struct xua_msg *xua, uint16_t iei);
 void xua_part_add_gt(struct msgb *msg, const struct osmo_sccp_gt *gt);
 int xua_msg_add_sccp_addr(struct xua_msg *xua, uint16_t iei, const struct osmo_sccp_addr *addr);
 
diff --git a/src/xua_msg.c b/src/xua_msg.c
index 79c358c..42c580d 100644
--- a/src/xua_msg.c
+++ b/src/xua_msg.c
@@ -297,6 +297,29 @@
 	return xua_msg_part_get_u32(part);
 }
 
+const char *xua_msg_part_get_str(const struct xua_msg_part *part)
+{
+	static char __thread buf[256];
+
+	if (part->len == 0)
+		return "";
+	/* RFC3868 3.9.4: Length of the INFO String parameter is from 0 to 255 octets */
+	if (part->len > 255)
+		return "<invalid-string-len>";
+
+	memcpy(buf, part->dat, part->len);
+	buf[part->len] = '\0';
+	return buf;
+}
+
+const char *xua_msg_get_str(const struct xua_msg *xua, uint16_t iei)
+{
+	struct xua_msg_part *part = xua_msg_find_tag(xua, iei);
+	if (!part)
+		return NULL;
+	return xua_msg_part_get_str(part);
+}
+
 void xua_part_add_gt(struct msgb *msg, const struct osmo_sccp_gt *gt)
 {
 	uint16_t *len_ptr;

-- 
To view, visit https://gerrit.osmocom.org/c/libosmo-sccp/+/22772
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Change-Id: I8cbb7aeaf0cb64db0ce01c21e5fca9ab3cd932b6
Gerrit-Change-Number: 22772
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210208/7ea8975d/attachment.htm>


More information about the gerrit-log mailing list