From 0d37c815d90cf9a41be95f7fa9a91773e9770ea6 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Sun, 20 Aug 2006 13:39:48 +0000 Subject: [PATCH] Fix crash when printing large 64-bit values on Win32 using the %I64x 2006-08-20 Tor Lillqvist * glib/gnulib/vasnprintf.c (vasnprintf): Fix crash when printing large 64-bit values on Win32 using the %I64x format. (#351034, Neil Piercy) --- ChangeLog | 6 ++++++ ChangeLog.pre-2-12 | 6 ++++++ glib/gnulib/vasnprintf.c | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/ChangeLog b/ChangeLog index cdd11954c..4259a134d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-08-20 Tor Lillqvist + + * glib/gnulib/vasnprintf.c (vasnprintf): Fix crash when printing + large 64-bit values on Win32 using the %I64x format. (#351034, + Neil Piercy) + Wed Aug 16 13:59:07 2006 Tim Janik * tests/gobject/Makefile.am: diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index cdd11954c..4259a134d 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,9 @@ +2006-08-20 Tor Lillqvist + + * glib/gnulib/vasnprintf.c (vasnprintf): Fix crash when printing + large 64-bit values on Win32 using the %I64x format. (#351034, + Neil Piercy) + Wed Aug 16 13:59:07 2006 Tim Janik * tests/gobject/Makefile.am: diff --git a/glib/gnulib/vasnprintf.c b/glib/gnulib/vasnprintf.c index 1b468001d..e279fc09b 100644 --- a/glib/gnulib/vasnprintf.c +++ b/glib/gnulib/vasnprintf.c @@ -479,6 +479,16 @@ vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) + 1 /* turn floor into ceil */ + 2; /* account for leading sign or alternate form */ else +# endif +# ifdef HAVE_INT64_AND_I64 + if (type == TYPE_INT64 || type == TYPE_UINT64) + tmp_length = + (unsigned int) (sizeof (unsigned __int64) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1 /* turn floor into ceil */ + + 2; /* account for leading sign or alternate form */ + else # endif if (type == TYPE_LONGINT || type == TYPE_ULONGINT) tmp_length =