From 05a6cb1bb28a148fa59f33414606e4fc7adc5778 Mon Sep 17 00:00:00 2001 From: Keith Marshall Date: Wed, 27 Aug 2008 20:23:42 +0000 Subject: [PATCH] Avoid access violations, passing NULL to printf( "...%s..." ). --- winsup/mingw/ChangeLog | 9 +++++++++ winsup/mingw/mingwex/stdio/pformat.c | 8 ++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog index dcc57c62a..0d6c2f677 100644 --- a/winsup/mingw/ChangeLog +++ b/winsup/mingw/ChangeLog @@ -1,3 +1,12 @@ +2008-08-27 Keith Marshall + + Avoid access violations, passing NULL to printf( "...%s..." ); + (inconsistencency with MSVCRT and glibc, reported by Colin Harrison). + + * mingwex/stdio/pformat.c (__pformat_puts): Substitute "(null)" + for argument value, if caller passes a NULL pointer. + (__pformat_wcputs): Likewise, substitute L"(null)". + 2008-08-14 Keith Marshall Add missing dependencies for building libmingwex.a. diff --git a/winsup/mingw/mingwex/stdio/pformat.c b/winsup/mingw/mingwex/stdio/pformat.c index 82dbcd741..2e2411606 100644 --- a/winsup/mingw/mingwex/stdio/pformat.c +++ b/winsup/mingw/mingwex/stdio/pformat.c @@ -356,8 +356,10 @@ void __pformat_puts( const char *s, __pformat_t *stream ) * to the `__pformat()' output stream. * * This is implemented as a trivial call to `__pformat_putchars()', - * passing the length of the input string as the character count. + * passing the length of the input string as the character count, + * (after first verifying that the input pointer is not NULL). */ + if( s == NULL ) s = "(null)"; __pformat_putchars( s, strlen( s ), stream ); } @@ -434,8 +436,10 @@ void __pformat_wcputs( const wchar_t *s, __pformat_t *stream ) * the input string, to the `__pformat()' output stream. * * This is implemented as a trivial call to `__pformat_wputchars()', - * passing the length of the input string as the character count. + * passing the length of the input string as the character count, + * (after first verifying that the input pointer is not NULL). */ + if( s == NULL ) s = L"(null)"; __pformat_wputchars( s, wcslen( s ), stream ); }