mirror of
https://github.com/reactos/reactos.git
synced 2024-10-03 16:05:37 +00:00
[CRT]
Fix a bug in streamout(), that could cause a buffer overrun and made msvcrt_winetest crash. svn path=/trunk/; revision=49513
This commit is contained in:
parent
87def142b6
commit
49cee181ca
|
@ -551,7 +551,6 @@ streamout(FILE *stream, const TCHAR *format, va_list argptr)
|
||||||
}
|
}
|
||||||
while (val64);
|
while (val64);
|
||||||
|
|
||||||
while (precision-- > 0) *--string = '0';
|
|
||||||
len = _tcslen(string);
|
len = _tcslen(string);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -563,7 +562,8 @@ streamout(FILE *stream, const TCHAR *format, va_list argptr)
|
||||||
|
|
||||||
/* Calculate padding */
|
/* Calculate padding */
|
||||||
prefixlen = prefix ? _tcslen(prefix) : 0;
|
prefixlen = prefix ? _tcslen(prefix) : 0;
|
||||||
padding = fieldwidth - len - prefixlen;
|
if (precision < 0) precision = 0;
|
||||||
|
padding = fieldwidth - len - prefixlen - precision;
|
||||||
|
|
||||||
/* Optional left space padding */
|
/* Optional left space padding */
|
||||||
if ((flags & (FLAG_ALIGN_LEFT | FLAG_PAD_ZERO)) == 0)
|
if ((flags & (FLAG_ALIGN_LEFT | FLAG_PAD_ZERO)) == 0)
|
||||||
|
@ -584,14 +584,12 @@ streamout(FILE *stream, const TCHAR *format, va_list argptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Optional left '0' padding */
|
/* Optional left '0' padding */
|
||||||
if ((flags & (FLAG_ALIGN_LEFT | FLAG_PAD_ZERO)) == FLAG_PAD_ZERO)
|
if ((flags & FLAG_ALIGN_LEFT) == 0) precision += padding;
|
||||||
{
|
while (precision-- > 0)
|
||||||
while (padding-- > 0)
|
|
||||||
{
|
{
|
||||||
if ((written = streamout_char(stream, _T('0'))) == -1) return -4;
|
if ((written = streamout_char(stream, _T('0'))) == -1) return -4;
|
||||||
written_all += written;
|
written_all += written;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Output the string */
|
/* Output the string */
|
||||||
if (flags & FLAG_WIDECHAR)
|
if (flags & FLAG_WIDECHAR)
|
||||||
|
|
Loading…
Reference in a new issue