Patrick Rudolph : user32: Check for valid cbSize in GetMonitorInfoA.
Alexandre Julliard
julliard at winehq.org
Tue Apr 22 13:23:20 CDT 2014
Module: wine
Branch: master
Commit: 8be5dd162c27c15712b0159f87eb2b2075e6382d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8be5dd162c27c15712b0159f87eb2b2075e6382d
Author: Patrick Rudolph <siro at 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;
}
More information about the wine-cvs
mailing list