summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-02-17 10:11:46 +0100
committerThomas Haller <thaller@redhat.com>2023-02-28 12:08:06 +0100
commitd73a5d692b3a25cf6946ce2ec4c940efcc6d2cd9 (patch)
treee1cd3d7f0bac7b2247807ae5893307405fe927a7
parent90cc458d31a44c9ab07294cd34691cfb53d5bafc (diff)
downloadNetworkManager-d73a5d692b3a25cf6946ce2ec4c940efcc6d2cd9.tar.gz
platform/netlink: assert for valid string in nla_get_string()
-rw-r--r--src/libnm-platform/nm-netlink.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/libnm-platform/nm-netlink.h b/src/libnm-platform/nm-netlink.h
index cdb8a81c32..2919d432d8 100644
--- a/src/libnm-platform/nm-netlink.h
+++ b/src/libnm-platform/nm-netlink.h
@@ -238,7 +238,18 @@ nla_get_be64(const struct nlattr *nla)
static inline char *
nla_get_string(const struct nlattr *nla)
{
- return nla_data(nla);
+ char *s;
+
+ /* nla_get_string() requires that nla contains a NUL terminated string.
+ * It cannot return NULL. Only use it with attributes that validate as NLA_STRING. */
+
+ nm_assert(nla_len(nla) > 0);
+
+ s = nla_data(nla);
+
+ nm_assert(memchr(s, 0, nla_len(nla)));
+
+ return s;
}
size_t nla_strlcpy(char *dst, const struct nlattr *nla, size_t dstsize);