kernel32: Avoid unprotected sprintf on registry/user-supplied format string.

This commit is contained in:
Jörg Höhle 2009-07-01 09:53:15 +02:00 committed by Alexandre Julliard
parent 62a2196887
commit c3b8026789

View File

@ -265,15 +265,16 @@ static BOOL start_debugger(PEXCEPTION_POINTERS epointers, HANDLE hEvent)
if (format) if (format)
{ {
cmdline = HeapAlloc(GetProcessHeap(), 0, strlen(format) + 2*20); size_t format_size = strlen(format) + 2*20;
sprintf(cmdline, format, GetCurrentProcessId(), hEvent); cmdline = HeapAlloc(GetProcessHeap(), 0, format_size);
snprintf(cmdline, format_size, format, (long)GetCurrentProcessId(), (long)HandleToLong(hEvent));
HeapFree(GetProcessHeap(), 0, format); HeapFree(GetProcessHeap(), 0, format);
} }
else else
{ {
cmdline = HeapAlloc(GetProcessHeap(), 0, 80); cmdline = HeapAlloc(GetProcessHeap(), 0, 80);
sprintf(cmdline, "winedbg --auto %d %ld", snprintf(cmdline, 80, "winedbg --auto %ld %ld", /* as in tools/wine.inf */
GetCurrentProcessId(), (ULONG_PTR)hEvent); (long)GetCurrentProcessId(), (long)HandleToLong(hEvent));
} }
if (!bAuto) if (!bAuto)