Bug #16978278 : BUFFER OVERFLOW WHEN PRINTING A LARGE 64-BIT INTEGER

WITH MY_B_VPRINTF()
Issue         : In LP 64 machine max long value can be 20 digit
                decimal value. But in my_b_vprintf() the intermediate
                buffer storage used is 17 bytes length. This will lead to
                buffer overflow.
Solution      : Increased the buffer storage from 17 to 32 bytes.
                code is backported from 5.6


mysys/mf_iocache2.c:
  In function my_b_vprintf increased the size of local buff from 17 to
  32 bytes.
This commit is contained in:
mithun 2013-09-10 15:32:27 +05:30
parent aff9f26290
commit 4250117308

View File

@ -415,7 +415,7 @@ process_flags:
{
register int iarg;
size_t length2;
char buff[17];
char buff[32];
iarg = va_arg(args, int);
if (*fmt == 'd')
@ -450,7 +450,7 @@ process_flags:
{
register long iarg;
size_t length2;
char buff[17];
char buff[32];
iarg = va_arg(args, long);
if (*++fmt == 'd')