Zhiyi Zhang : gdi32/tests: Zero initialize DEVMODE before passing it to EnumDisplaySettings().

Alexandre Julliard julliard at winehq.org
Tue Aug 11 16:26:50 CDT 2020


Module: wine
Branch: master
Commit: ee1880a756ca0ebd75252bb870c1136ab0e67693
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=ee1880a756ca0ebd75252bb870c1136ab0e67693

Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date:   Tue Aug 11 18:15:19 2020 +0800

gdi32/tests: Zero initialize DEVMODE before passing it to EnumDisplaySettings().

Zero initialize DEVMODE before passing it to EnumDisplaySettings(), which may write beyond the end
of the DEVMODE structure on Windows because the dmDriverExtra field is uninitialized.

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/tests/dc.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/dlls/gdi32/tests/dc.c b/dlls/gdi32/tests/dc.c
index 6640134d1f..b4a89b213d 100644
--- a/dlls/gdi32/tests/dc.c
+++ b/dlls/gdi32/tests/dc.c
@@ -242,6 +242,8 @@ static void test_GdiConvertToDevmodeW(void)
         return;
     }
 
+    memset(&dmA, 0, sizeof(dmA));
+    dmA.dmSize = sizeof(dmA);
     ret = EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dmA);
     ok(ret, "EnumDisplaySettingsExA error %u\n", GetLastError());
     ok(dmA.dmSize >= FIELD_OFFSET(DEVMODEA, dmICMMethod), "dmSize is too small: %04x\n", dmA.dmSize);
@@ -591,6 +593,8 @@ static void test_CreateCompatibleDC(void)
 
     bitmap = CreateBitmap( 10, 10, 1, 1, NULL );
 
+    memset(&dm, 0, sizeof(dm));
+    dm.dmSize = sizeof(dm);
     bRet = EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dm);
     ok(bRet, "EnumDisplaySettingsEx failed\n");
     dm.u1.s1.dmScale = 200;




More information about the wine-cvs mailing list