From: Patrick Rudolph Subject: [PATCH 2/2] user32: add tests for valid cbSize in GetMonitorInfoA Message-Id: <8f8d0a3ee9ac2bf4abc8e6e2d0a0b47a@das-labor.org> Date: Fri, 18 Apr 2014 11:16:54 +0200 check for valid cbSize in user32.GetMonitorInfoA fixes bug http://bugs.winehq.org/show_bug.cgi?id=35788 From 1a85027dd8fe0fd66b9deba27dba0e28c9bddbe6 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Thu, 17 Apr 2014 18:29:01 +0200 Subject: add tests for GetMonitorInfoA --- dlls/user32/tests/monitor.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c index a2df20e..7b6190c 100644 --- a/dlls/user32/tests/monitor.c +++ b/dlls/user32/tests/monitor.c @@ -296,6 +296,9 @@ static void test_monitors(void) HMONITOR monitor, primary, nearest; POINT pt; RECT rc; + BOOL ret; + MONITORINFO mi; + MONITORINFOEXA miex; if (!pMonitorFromPoint || !pMonitorFromWindow || !pMonitorFromRect) { @@ -351,8 +354,6 @@ static void test_monitors(void) nearest = primary; while (monitor != NULL) { - MONITORINFO mi; - BOOL ret; ok( monitor != primary, "got primary %p\n", monitor ); nearest = monitor; mi.cbSize = sizeof(mi); @@ -362,6 +363,21 @@ static void test_monitors(void) monitor = pMonitorFromRect( &rc, MONITOR_DEFAULTTONULL ); } + /* sanity check */ + monitor = pMonitorFromRect( &rc, MONITOR_DEFAULTTONEAREST ); + mi.cbSize = sizeof(mi); + ret = pGetMonitorInfoA( monitor, &mi ); + ok( ret, "GetMonitorInfo failed\n" ); + + miex.cbSize = sizeof(miex); + ret = pGetMonitorInfoA( monitor, (LPMONITORINFO)&miex ); + ok( ret, "GetMonitorInfo failed\n" ); + + /* specify invalid cbSize */ + mi.cbSize = 0xdeadbeef; + ret = pGetMonitorInfoA( monitor, &mi ); + ok( !ret, "GetMonitorInfo succeded\n" ); + SetRect( &rc, rc.left+1, rc.top+1, rc.left+2, rc.top+2 ); monitor = pMonitorFromRect( &rc, MONITOR_DEFAULTTONULL ); -- 1.8.5.3