diff options
author | Petr Štetiar <ynezz@true.cz> | 2022-05-23 21:02:38 +0200 |
---|---|---|
committer | rofl0r <rofl0r@users.noreply.github.com> | 2022-09-16 01:34:26 +0000 |
commit | ca1c7757d884f8eaaf039282a98dc852427f4e2e (patch) | |
tree | 69bfd0338dc51d5ef0733f7d7fc18408599db840 /include | |
parent | 46f0acba8141c8d49a8b2358f6436779e486d150 (diff) | |
download | libnl-tiny-ca1c7757d884f8eaaf039282a98dc852427f4e2e.tar.gz |
genl_family: explicitly null terminate strncpy destination buffer
The strncpy() function doesn't null terminate the destination string if
the source string is at least as long as the destination. (This behavior
is defined by the C99 specification.) As a result, the destination
string must be null terminated after calling strncpy().
And clang11 static analyzer thus reports following:
genl_family.c:148:2: error: ‘strncpy’ output may be truncated copying 15 bytes from a string of length 15 [-Werror=stringop-truncation]
148 | strncpy(grp->name, name, GENL_NAMSIZ - 1);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
References: https://gitlab.com/openwrt/project/libnl-tiny/-/jobs/2495301251#L197
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Diffstat (limited to 'include')
-rw-r--r-- | include/netlink/genl/family.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/netlink/genl/family.h b/include/netlink/genl/family.h index 777c16e..946c376 100644 --- a/include/netlink/genl/family.h +++ b/include/netlink/genl/family.h @@ -82,6 +82,7 @@ static inline char *genl_family_get_name(struct genl_family *family) static inline void genl_family_set_name(struct genl_family *family, const char *name) { strncpy(family->gf_name, name, GENL_NAMSIZ-1); + family->gf_name[GENL_NAMSIZ - 1] = '\0'; family->ce_mask |= FAMILY_ATTR_NAME; } |