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:
parent
aff9f26290
commit
4250117308
@ -415,7 +415,7 @@ process_flags:
|
|||||||
{
|
{
|
||||||
register int iarg;
|
register int iarg;
|
||||||
size_t length2;
|
size_t length2;
|
||||||
char buff[17];
|
char buff[32];
|
||||||
|
|
||||||
iarg = va_arg(args, int);
|
iarg = va_arg(args, int);
|
||||||
if (*fmt == 'd')
|
if (*fmt == 'd')
|
||||||
@ -450,7 +450,7 @@ process_flags:
|
|||||||
{
|
{
|
||||||
register long iarg;
|
register long iarg;
|
||||||
size_t length2;
|
size_t length2;
|
||||||
char buff[17];
|
char buff[32];
|
||||||
|
|
||||||
iarg = va_arg(args, long);
|
iarg = va_arg(args, long);
|
||||||
if (*++fmt == 'd')
|
if (*++fmt == 'd')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user