From: Evgeny Vereshchagin Date: Mon, 3 May 2021 20:44:05 +0000 (+0000) Subject: string_utils: get around GCC-11 false positives X-Git-Tag: lxc-5.0.0~179^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F3823%2Fhead;p=thirdparty%2Flxc.git string_utils: get around GCC-11 false positives by getting rid of stpncpy Tested with gcc (GCC) 11.1.1 20210428 (Red Hat 11.1.1-1) Closes https://github.com/lxc/lxc/issues/3752 Signed-off-by: Evgeny Vereshchagin --- diff --git a/src/lxc/string_utils.c b/src/lxc/string_utils.c index 366cbd9ed..9c54819a0 100644 --- a/src/lxc/string_utils.c +++ b/src/lxc/string_utils.c @@ -877,14 +877,18 @@ int parse_byte_size_string(const char *s, long long int *converted) char *end; char dup[INTTYPE_TO_STRLEN(long long int)] = {0}; char suffix[3] = {0}; + size_t len; - if (is_empty_string(s)) + if (!s) return ret_errno(EINVAL); - end = stpncpy(dup, s, sizeof(dup) - 1); - if (*end != '\0') + len = strlen(s); + if (len == 0 || len > sizeof(dup) - 1) return ret_errno(EINVAL); + memcpy(dup, s, len); + + end = dup + len; if (isdigit(*(end - 1))) suffix_len = 0; else if (isalpha(*(end - 1)))