Zhiyi Zhang : user32: 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: 04d1a184e5db3320243afefb0de1f80fbe8436ff
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=04d1a184e5db3320243afefb0de1f80fbe8436ff

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

user32: Zero initialize DEVMODE before passing it to EnumDisplaySettings().

EnumDisplaySettings() on Wine does not write beyond the end of DEVMODE because it doesn't use
dmDriverExtra currently, but this implementation detail should not be relied on.

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

---

 dlls/user32/sysparams.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index 79f938a3c2..0c0f8fac5d 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -3369,6 +3369,7 @@ LONG WINAPI ChangeDisplaySettingsExW( LPCWSTR devname, LPDEVMODEW devmode, HWND
 
     if (def_mode)
     {
+        memset(&dm, 0, sizeof(dm));
         dm.dmSize = sizeof(dm);
         if (!EnumDisplaySettingsExW(devname, ENUM_REGISTRY_SETTINGS, &dm, 0))
         {
@@ -3428,6 +3429,8 @@ BOOL WINAPI EnumDisplaySettingsExA(LPCSTR lpszDeviceName, DWORD iModeNum,
     if (lpszDeviceName) RtlCreateUnicodeStringFromAsciiz(&nameW, lpszDeviceName);
     else nameW.Buffer = NULL;
 
+    memset(&devmodeW, 0, sizeof(devmodeW));
+    devmodeW.dmSize = sizeof(devmodeW);
     ret = EnumDisplaySettingsExW(nameW.Buffer,iModeNum,&devmodeW,dwFlags);
     if (ret)
     {
@@ -4808,6 +4811,7 @@ LONG WINAPI QueryDisplayConfig(UINT32 flags, UINT32 *numpathelements, DISPLAYCON
                                        &type, (BYTE *)device_name, sizeof(device_name), NULL, 0))
             goto done;
 
+        memset(&devmode, 0, sizeof(devmode));
         devmode.dmSize = sizeof(devmode);
         if (!EnumDisplaySettingsW(device_name, ENUM_CURRENT_SETTINGS, &devmode))
             goto done;




More information about the wine-cvs mailing list