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 (precision-- > 0) *--string = '0';
|
||||
len = _tcslen(string);
|
||||
break;
|
||||
|
||||
|
@ -563,7 +562,8 @@ streamout(FILE *stream, const TCHAR *format, va_list argptr)
|
|||
|
||||
/* Calculate padding */
|
||||
prefixlen = prefix ? _tcslen(prefix) : 0;
|
||||
padding = fieldwidth - len - prefixlen;
|
||||
if (precision < 0) precision = 0;
|
||||
padding = fieldwidth - len - prefixlen - precision;
|
||||
|
||||
/* Optional left space padding */
|
||||
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 */
|
||||
if ((flags & (FLAG_ALIGN_LEFT | FLAG_PAD_ZERO)) == FLAG_PAD_ZERO)
|
||||
{
|
||||
while (padding-- > 0)
|
||||
if ((flags & FLAG_ALIGN_LEFT) == 0) precision += padding;
|
||||
while (precision-- > 0)
|
||||
{
|
||||
if ((written = streamout_char(stream, _T('0'))) == -1) return -4;
|
||||
written_all += written;
|
||||
}
|
||||
}
|
||||
|
||||
/* Output the string */
|
||||
if (flags & FLAG_WIDECHAR)
|
||||
|
|
Loading…
Reference in a new issue