From af9835b858b2d369578d0ee4b4ca6a43b45cf1f8 Mon Sep 17 00:00:00 2001 From: Joachim Henze Date: Sun, 1 Nov 2020 01:46:47 +0100 Subject: [PATCH] [0.4.7][WIN32SS] Require at least the amount of extra memory, not exact amount Fixes 3 application crashes: CORE-15576 "Civilization II Multiplayer Gold Edition crashes when trying to open a map" CORE-13924 "Click-n-type Virtual Keyboard 3.03.4012 from rapps crash when opening program preferences" CORE-8790 "IceChat crashes with OutofMemory" It regressed around SVN r56947, r56948, r56949. cherry picked from commit 0.4.12-dev-417-g e022d8d7cb72bc611d6990062ad0f2962c0cab1d --- win32ss/user/ntuser/scrollbar.c | 2 +- win32ss/user/user32/controls/scrollbar.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/win32ss/user/ntuser/scrollbar.c b/win32ss/user/ntuser/scrollbar.c index a8f7c66dd50..3b2023f9326 100644 --- a/win32ss/user/ntuser/scrollbar.c +++ b/win32ss/user/ntuser/scrollbar.c @@ -86,7 +86,7 @@ IntGetSBData(PWND pwnd, INT Bar) case SB_VERT: return &pSBInfo->Vert; case SB_CTL: - if ( pwnd->cbwndExtra != (sizeof(SBWND)-sizeof(WND)) ) + if ( pwnd->cbwndExtra < (sizeof(SBWND)-sizeof(WND)) ) { ERR("IntGetSBData Wrong Extra bytes for CTL Scrollbar!\n"); return 0; diff --git a/win32ss/user/user32/controls/scrollbar.c b/win32ss/user/user32/controls/scrollbar.c index 496985a03a6..dc4475d5702 100644 --- a/win32ss/user/user32/controls/scrollbar.c +++ b/win32ss/user/user32/controls/scrollbar.c @@ -105,7 +105,7 @@ IntGetSBData(PWND pwnd, INT Bar) case SB_VERT: return &pSBInfo->Vert; case SB_CTL: - if ( pwnd->cbwndExtra != (sizeof(SBWND)-sizeof(WND)) ) + if ( pwnd->cbwndExtra < (sizeof(SBWND)-sizeof(WND)) ) { ERR("IntGetSBData Wrong Extra bytes for CTL Scrollbar!\n"); return 0; @@ -1191,7 +1191,7 @@ ScrollBarWndProc_common(WNDPROC DefWindowProc, HWND Wnd, UINT Msg, WPARAM wParam if (!pWnd->fnid) { TRACE("ScrollBar CTL size %d\n", (sizeof(SBWND)-sizeof(WND))); - if ( pWnd->cbwndExtra != (sizeof(SBWND)-sizeof(WND)) ) + if ( pWnd->cbwndExtra < (sizeof(SBWND)-sizeof(WND)) ) { ERR("Wrong Extra bytes for Scrollbar!\n"); return 0;