From e73a7fe9bc897db2cfe44a7b763070aec25b41e0 Mon Sep 17 00:00:00 2001 From: Andrew McCallum Date: Fri, 31 May 1996 15:10:53 +0000 Subject: [PATCH] ([NSString -initWithFormat:arguments:]): Increase bsprintf buffer size, and assert that we haven't overrun the buffer. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1606 72102866-910b-0410-8b05-ffd578937521 --- Source/NSString.m | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/NSString.m b/Source/NSString.m index 00b84ab19..ee77cb549 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -300,8 +300,15 @@ handle_printf_atsign (FILE *stream, arguments: (va_list)argList { #if HAVE_VSPRINTF - char buf[128]; /* xxx horrible, disgusting, fix this! */ - vsprintf(buf, [format _cStringContents], argList); +#define BUFFER_EXTRA 1024 + const char *format_cp = [format cStringNoCopy]); + int format_len = strlen (format_cp); + char buf[format_len + BUFFER_EXTRA]; /* xxx horrible disgusting, fix this! */ + int printed_len; + + printed_len = vsprintf (buf, format_cp, argList); + /* Signal error if we overran our buffer. */ + NSParameterAssert (printed_len < format_len + BUFFER_EXTRA - 1); return [self initWithCString:buf]; #else [self notImplemented:_cmd];