From a6cef4c7ae198292e4b41e4862be6c02b05c6590 Mon Sep 17 00:00:00 2001 From: Carmelo Amoroso Date: Tue, 9 Sep 2008 12:19:19 +0000 Subject: Fix problem in vfprintf when assertion are enabled. Here follow the output of my analysis: __stdio_fwrite expects at least 1 bytes. fputs_unlocked(S,F) calls fwrite_unlocked and this calls __stdio_fwrite only if bytes to be written are > 0, otherwise simply returs 0 (that is correct). During the parsing of format spec it could happen that __stdio_fwrite is called passing an empty string and with assertion enabled it will abort. Signed-off-by: Carmelo Amoroso --- libc/stdio/_vfprintf.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'libc/stdio') diff --git a/libc/stdio/_vfprintf.c b/libc/stdio/_vfprintf.c index 2b642fc35..61a730d75 100644 --- a/libc/stdio/_vfprintf.c +++ b/libc/stdio/_vfprintf.c @@ -1212,8 +1212,7 @@ static size_t _charpad(FILE * __restrict stream, int padchar, size_t numpad); #define OUTNSTR _outnstr #define STRLEN strlen #define _PPFS_init _ppfs_init -/* Pulls in fseek: #define OUTPUT(F,S) fputs_unlocked(S,F) */ -#define OUTPUT(F,S) __stdio_fwrite((const unsigned char *)(S),strlen(S),(F)) +#define OUTPUT(F,S) fputs_unlocked(S,F) /* #define _outnstr(stream, string, len) __stdio_fwrite(string, len, stream) */ #define _outnstr(stream, string, len) ((len > 0) ? __stdio_fwrite(string, len, stream) : 0) #define FP_OUT _fp_out_narrow -- cgit v1.2.3