Skip to content

Commit 6b8aca7

Browse files
committed
sprintf: hopefully fix the snprintf handling of \0
1 parent faab597 commit 6b8aca7

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

Library/libs/sprintf.c

+8-2
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,12 @@ int snprintf(char *sp, size_t size, const char *fmt, ...)
6060
int rv;
6161
unsigned char *p = string->bufpos;
6262

63+
if (size == 0)
64+
return 0;
65+
6366
va_start(ptr, fmt);
6467
string->bufpos = (unsigned char *) sp;
65-
rv = _vfnprintf(string, size, fmt, ptr);
68+
rv = _vfnprintf(string, size - 1, fmt, ptr);
6669
va_end(ptr);
6770
*(string->bufpos) = 0;
6871

@@ -82,8 +85,11 @@ int vsnprintf(char *sp, size_t size, const char *fmt, va_list ptr)
8285
int rv;
8386
unsigned char *p = string->bufpos;
8487

88+
if (size == 0)
89+
return 0;
90+
8591
string->bufpos = (unsigned char *) sp;
86-
rv = _vfnprintf(string, size, fmt, ptr);
92+
rv = _vfnprintf(string, size - 1, fmt, ptr);
8793
*(string->bufpos) = 0;
8894

8995
string->bufpos = p;

0 commit comments

Comments
 (0)