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