Module: wine Branch: master Commit: 8be5dd162c27c15712b0159f87eb2b2075e6382d URL: http://source.winehq.org/git/wine.git/?a=commit;h=8be5dd162c27c15712b0159f87...
Author: Patrick Rudolph siro@das-labor.org Date: Thu Apr 17 18:26:24 2014 +0200
user32: Check for valid cbSize in GetMonitorInfoA.
---
dlls/user32/misc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/misc.c b/dlls/user32/misc.c index 34e1d81..d9eec26 100644 --- a/dlls/user32/misc.c +++ b/dlls/user32/misc.c @@ -419,6 +419,9 @@ BOOL WINAPI GetMonitorInfoA(HMONITOR hMonitor, LPMONITORINFO lpMonitorInfo) MONITORINFOEXA *miA = (MONITORINFOEXA*)lpMonitorInfo; BOOL ret;
+ if((miA->cbSize != sizeof(MONITORINFOEXA)) && (miA->cbSize != sizeof(MONITORINFO))) + return FALSE; + miW.cbSize = sizeof(miW);
ret = GetMonitorInfoW(hMonitor, (MONITORINFO*)&miW); @@ -427,7 +430,7 @@ BOOL WINAPI GetMonitorInfoA(HMONITOR hMonitor, LPMONITORINFO lpMonitorInfo) miA->rcMonitor = miW.rcMonitor; miA->rcWork = miW.rcWork; miA->dwFlags = miW.dwFlags; - if(miA->cbSize >= offsetof(MONITORINFOEXA, szDevice) + sizeof(miA->szDevice)) + if(miA->cbSize == sizeof(MONITORINFOEXA)) WideCharToMultiByte(CP_ACP, 0, miW.szDevice, -1, miA->szDevice, sizeof(miA->szDevice), NULL, NULL); return ret; }