diff --git a/base/setup/usetup/consup.c b/base/setup/usetup/consup.c index 15e0fa69d99..9c3c799e63f 100644 --- a/base/setup/usetup/consup.c +++ b/base/setup/usetup/consup.c @@ -429,32 +429,26 @@ CONSOLE_SetStatusTextXV( IN LPCSTR fmt, IN va_list args) { + INT nLength; COORD coPos; DWORD Written; CHAR Buffer[128]; - vsprintf(Buffer, fmt, args); + memset(Buffer, ' ', min(sizeof(Buffer), xScreen)); + nLength = vsprintf(&Buffer[x], fmt, args); + ASSERT(x + nLength < sizeof(Buffer)); + Buffer[x + nLength] = ' '; coPos.X = 0; coPos.Y = yScreen - 1; - FillConsoleOutputAttribute(StdOutput, BACKGROUND_WHITE, xScreen, coPos, &Written); - - FillConsoleOutputCharacterA(StdOutput, - ' ', - xScreen, - coPos, - &Written); - - coPos.X = x; - WriteConsoleOutputCharacterA(StdOutput, Buffer, - (ULONG)strlen(Buffer), + min(sizeof(Buffer), xScreen), coPos, &Written); }