Possible buffer overrun in Foundation/EventLogChannel

This commit is contained in:
mar-na
2013-04-18 13:28:16 +02:00
parent cbb17638a7
commit f154497a9f

View File

@@ -56,7 +56,7 @@ EventLogChannel::EventLogChannel():
_logFile("Application"), _logFile("Application"),
_h(0) _h(0)
{ {
static const int length = 256; static const int length = MAX_PATH + 1;
#if defined(POCO_WIN32_UTF8) #if defined(POCO_WIN32_UTF8)
wchar_t name[length]; wchar_t name[length];
int n = GetModuleFileNameW(NULL, name, length); int n = GetModuleFileNameW(NULL, name, length);
@@ -289,8 +289,9 @@ std::wstring EventLogChannel::findLibrary(const wchar_t* name)
HMODULE dll = LoadLibraryW(name); HMODULE dll = LoadLibraryW(name);
if (dll) if (dll)
{ {
wchar_t name[MAX_PATH + 1]; static const int length = MAX_PATH + 1;
int n = GetModuleFileNameW(dll, name, sizeof(name)); wchar_t name[length];
int n = GetModuleFileNameW(dll, name, length);
if (n > 0) path = name; if (n > 0) path = name;
FreeLibrary(dll); FreeLibrary(dll);
} }
@@ -303,8 +304,9 @@ std::string EventLogChannel::findLibrary(const char* name)
HMODULE dll = LoadLibraryA(name); HMODULE dll = LoadLibraryA(name);
if (dll) if (dll)
{ {
char name[MAX_PATH + 1]; static const int length = MAX_PATH + 1;
int n = GetModuleFileNameA(dll, name, sizeof(name)); char name[length];
int n = GetModuleFileNameA(dll, name, length);
if (n > 0) path = name; if (n > 0) path = name;
FreeLibrary(dll); FreeLibrary(dll);
} }