From 06fa5817489adb9728f8a29d4cb7602fb48b8bdb Mon Sep 17 00:00:00 2001 From: Yuriy M. Kaminskiy Date: Sat, 27 Feb 2016 19:27:29 +0300 Subject: misc: safer (and uniform) handling of return value When `rc` is `INT_MAX`, `rc + 1` result in signed integer overflow. Signed-off-by: Karel Zak --- term-utils/wall.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'term-utils/wall.c') diff --git a/term-utils/wall.c b/term-utils/wall.c index 7d0dfe772..1253d32cd 100644 --- a/term-utils/wall.c +++ b/term-utils/wall.c @@ -217,8 +217,8 @@ static void buf_printf(struct buffer *bs, const char *fmt, ...) rc = vsnprintf(bs->data + bs->used, limit, fmt, ap); va_end(ap); - if (rc > 0 && (size_t) rc + 1 > limit) { /* not enoght, enlarge */ - buf_enlarge(bs, rc + 1); + if (rc >= 0 && (size_t) rc >= limit) { /* not enoght, enlarge */ + buf_enlarge(bs, (size_t)rc + 1); limit = bs->sz - bs->used; va_start(ap, fmt); rc = vsnprintf(bs->data + bs->used, limit, fmt, ap);; -- cgit v1.2.3-55-g7522