Zhiyi Zhang : winex11.drv: 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: 440fab3870b3c9ea778031ec51db69f8c3a687f5
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=440fab3870b3c9ea778031ec51db69f8c3a687f5

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

winex11.drv: 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/winex11.drv/settings.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/dlls/winex11.drv/settings.c b/dlls/winex11.drv/settings.c
index a64d1de650..2d1fc7220d 100644
--- a/dlls/winex11.drv/settings.c
+++ b/dlls/winex11.drv/settings.c
@@ -501,6 +501,7 @@ static LONG get_display_settings(struct x11drv_display_setting **new_displays,
 
         if (!dev_mode)
         {
+            memset(&registry_mode, 0, sizeof(registry_mode));
             registry_mode.dmSize = sizeof(registry_mode);
             if (!EnumDisplaySettingsExW(display_device.DeviceName, ENUM_REGISTRY_SETTINGS, &registry_mode, 0))
                 goto done;
@@ -512,6 +513,7 @@ static LONG get_display_settings(struct x11drv_display_setting **new_displays,
             displays[display_idx].desired_mode = *dev_mode;
             if (!(dev_mode->dmFields & DM_POSITION))
             {
+                memset(&current_mode, 0, sizeof(current_mode));
                 current_mode.dmSize = sizeof(current_mode);
                 if (!EnumDisplaySettingsExW(display_device.DeviceName, ENUM_CURRENT_SETTINGS, &current_mode, 0))
                     goto done;
@@ -522,6 +524,7 @@ static LONG get_display_settings(struct x11drv_display_setting **new_displays,
         }
         else
         {
+            memset(&current_mode, 0, sizeof(current_mode));
             current_mode.dmSize = sizeof(current_mode);
             if (!EnumDisplaySettingsExW(display_device.DeviceName, ENUM_CURRENT_SETTINGS, &current_mode, 0))
                 goto done;




More information about the wine-cvs mailing list