Fixed potential buffer overrun in Win32 OpenGL error handling

This fixes issue #1245.
This commit is contained in:
Mario Liebisch 2017-06-22 11:24:53 +02:00 committed by Lukas Dürrenberger
parent bf92efe9a4
commit 0980e90ee4

View File

@ -66,15 +66,19 @@ void ensureExtensionsInit(HDC deviceContext)
////////////////////////////////////////////////////////////
String getErrorString(DWORD errorCode)
{
std::basic_ostringstream<TCHAR, std::char_traits<TCHAR> > ss;
TCHAR errBuff[256];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorCode, 0, errBuff, sizeof(errBuff), NULL);
ss << errBuff;
String errMsg(ss.str());
PTCHAR buffer;
if (FormatMessage(FORMAT_MESSAGE_MAX_WIDTH_MASK | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errorCode, 0, reinterpret_cast<LPTSTR>(&buffer), 256, NULL) != 0)
{
String errMsg(buffer);
LocalFree(buffer);
return errMsg;
}
std::ostringstream ss;
ss << "Error " << errorCode;
return String(ss.str());
}
////////////////////////////////////////////////////////////
WglContext::WglContext(WglContext* shared) :