From 4f7956c206501691ad8e1e27dc959fd13e68aee4 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Thu, 22 Apr 2004 21:19:33 +0000 Subject: (v)snprintf() wrote past buffer end if string length was equal to buffer size git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4549 a1c6a512-1295-4272-9138-f99709370657 --- firmware/common/sprintf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'firmware/common/sprintf.c') diff --git a/firmware/common/sprintf.c b/firmware/common/sprintf.c index 00084acf0a..6542c9d993 100644 --- a/firmware/common/sprintf.c +++ b/firmware/common/sprintf.c @@ -154,7 +154,7 @@ int snprintf(char *buf, size_t size, const char *fmt, ...) va_end(ap); /* make sure it ends with a trailing zero */ - pr.ptr[ok?0:-1]='\0'; + pr.ptr[(pr.bytes < pr.max) ? 0 : -1] = '\0'; return pr.bytes; } @@ -171,7 +171,7 @@ int vsnprintf(char *buf, int size, const char *fmt, va_list ap) ok = format(sprfunc, &pr, fmt, ap); /* make sure it ends with a trailing zero */ - pr.ptr[ok?0:-1]='\0'; + pr.ptr[(pr.bytes < pr.max) ? 0 : -1] = '\0'; return pr.bytes; } -- cgit v1.2.3