[Project64] Make sure Recompiler_Log_Message can not buffer overflow
This commit is contained in:
parent
f036c7825c
commit
2c802bd638
|
@ -23,12 +23,19 @@ void Recompiler_Log_Message(const char * strFormat, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, strFormat);
|
va_start(args, strFormat);
|
||||||
size_t nlen = _vscprintf(strFormat, args) + 3;
|
size_t nlen = _vscprintf(strFormat, args);
|
||||||
char * buffer = (char *)alloca(nlen * sizeof(char));
|
char * buffer = (char *)alloca((nlen + 3) * sizeof(char));
|
||||||
if (buffer != NULL)
|
if (buffer != NULL)
|
||||||
{
|
{
|
||||||
buffer[nlen - 1] = 0;
|
if (nlen > 0)
|
||||||
vsprintf(buffer, strFormat, args);
|
{
|
||||||
|
vsnprintf(buffer, nlen, strFormat, args);
|
||||||
|
buffer[nlen - 1] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buffer[0] = '\0';
|
||||||
|
}
|
||||||
strcat(buffer, "\r\n");
|
strcat(buffer, "\r\n");
|
||||||
g_CPULogFile->Log(buffer);
|
g_CPULogFile->Log(buffer);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue