Fix buffer overflow in wxMSW stack walking code
VarSizedStruct buffer had a too small size in Unicode build as it forgot to multiply the name length by sizeof(TCHAR), resulting in overwriting memory on the stack after it when calling SymFromAddrW(). Closes #18127.
This commit is contained in:
@@ -90,6 +90,7 @@ wxMSW:
|
||||
- Fix hang after clearing wxTAB_TRAVERSAL style on a window with children.
|
||||
- Fix handling of AUX2 mouse button events (Trylz).
|
||||
- Fix saving/restoring window position for maximized windows.
|
||||
- Fix stack corruption when using wxStackWalker (srfisk).
|
||||
|
||||
|
||||
3.1.1: (released 2018-02-19)
|
||||
|
@@ -66,7 +66,7 @@ class VarSizedStruct
|
||||
public:
|
||||
VarSizedStruct()
|
||||
{
|
||||
::ZeroMemory(m_buffer, sizeof(T) + MAX_NAME_LEN);
|
||||
::ZeroMemory(m_buffer, sizeof(T) + MAX_NAME_LEN*sizeof(TCHAR));
|
||||
|
||||
(*this)->SizeOfStruct = sizeof(T);
|
||||
(*this)->MaxNameLen = MAX_NAME_LEN;
|
||||
@@ -87,7 +87,7 @@ private:
|
||||
// if we wanted.
|
||||
enum { MAX_NAME_LEN = 1024 };
|
||||
|
||||
BYTE m_buffer[sizeof(T) + MAX_NAME_LEN];
|
||||
BYTE m_buffer[sizeof(T) + MAX_NAME_LEN*sizeof(TCHAR)];
|
||||
};
|
||||
|
||||
} // anonymous namespace
|
||||
|
Reference in New Issue
Block a user