From: Christian Brauner Date: Sat, 9 Dec 2017 18:16:25 +0000 (+0100) Subject: coverity: #1425870 X-Git-Tag: lxc-3.0.0.beta1~113^2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de429548c46d9b668388777198715853be6ae46d;p=thirdparty%2Flxc.git coverity: #1425870 check snprintf() return value Signed-off-by: Christian Brauner --- diff --git a/src/lxc/tools/lxc_top.c b/src/lxc/tools/lxc_top.c index cc0ed0c1a..5d5c08a25 100644 --- a/src/lxc/tools/lxc_top.c +++ b/src/lxc/tools/lxc_top.c @@ -206,21 +206,26 @@ static void sig_handler(int sig) static void size_humanize(unsigned long long val, char *buf, size_t bufsz) { + int ret; + if (val > 1 << 30) { - snprintf(buf, bufsz, "%u.%2.2u GiB", + ret = snprintf(buf, bufsz, "%u.%2.2u GiB", (unsigned int)(val >> 30), (unsigned int)(val & ((1 << 30) - 1)) / 10737419); } else if (val > 1 << 20) { unsigned int x = val + 5243; /* for rounding */ - snprintf(buf, bufsz, "%u.%2.2u MiB", + ret = snprintf(buf, bufsz, "%u.%2.2u MiB", x >> 20, ((x & ((1 << 20) - 1)) * 100) >> 20); } else if (val > 1 << 10) { unsigned int x = val + 5; /* for rounding */ - snprintf(buf, bufsz, "%u.%2.2u KiB", + ret = snprintf(buf, bufsz, "%u.%2.2u KiB", x >> 10, ((x & ((1 << 10) - 1)) * 100) >> 10); } else { - snprintf(buf, bufsz, "%3u.00 ", (unsigned int)val); + ret = snprintf(buf, bufsz, "%3u.00 ", (unsigned int)val); } + + if (ret < 0 || (size_t)ret >= bufsz) + fprintf(stderr, "Failed to create string\n"); } static uint64_t stat_get_int(struct lxc_container *c, const char *item)