Nikolay Sivov : comctl32/propsheet: Enforce minimal PROPSHEETPAGE structure size when creating a page.
Alexandre Julliard
julliard at winehq.org
Thu Mar 2 16:09:55 CST 2017
Module: wine
Branch: master
Commit: a3aa217f030cbc77614c56948615fdba1624fbdc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a3aa217f030cbc77614c56948615fdba1624fbdc
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed Mar 1 22:47:20 2017 +0300
comctl32/propsheet: Enforce minimal PROPSHEETPAGE structure size when creating a page.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/comctl32/propsheet.c | 12 ++++++++++--
dlls/comctl32/tests/propsheet.c | 2 --
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c
index a3a6a5c..88a44cd 100644
--- a/dlls/comctl32/propsheet.c
+++ b/dlls/comctl32/propsheet.c
@@ -2957,8 +2957,12 @@ static LPWSTR load_string( HINSTANCE instance, LPCWSTR str )
HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(
LPCPROPSHEETPAGEA lpPropSheetPage)
{
- PROPSHEETPAGEW* ppsp = Alloc(sizeof(PROPSHEETPAGEW));
+ PROPSHEETPAGEW *ppsp;
+ if (lpPropSheetPage->dwSize < PROPSHEETPAGEA_V1_SIZE)
+ return NULL;
+
+ ppsp = Alloc(sizeof(PROPSHEETPAGEW));
memcpy(ppsp,lpPropSheetPage,min(lpPropSheetPage->dwSize,sizeof(PROPSHEETPAGEA)));
ppsp->dwFlags &= ~ PSP_INTERNAL_UNICODE;
@@ -3023,8 +3027,12 @@ HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(
*/
HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW lpPropSheetPage)
{
- PROPSHEETPAGEW* ppsp = Alloc(sizeof(PROPSHEETPAGEW));
+ PROPSHEETPAGEW *ppsp;
+
+ if (lpPropSheetPage->dwSize < PROPSHEETPAGEW_V1_SIZE)
+ return NULL;
+ ppsp = Alloc(sizeof(PROPSHEETPAGEW));
memcpy(ppsp,lpPropSheetPage,min(lpPropSheetPage->dwSize,sizeof(PROPSHEETPAGEW)));
ppsp->dwFlags |= PSP_INTERNAL_UNICODE;
diff --git a/dlls/comctl32/tests/propsheet.c b/dlls/comctl32/tests/propsheet.c
index 0b1c45c..8a4e6d1 100644
--- a/dlls/comctl32/tests/propsheet.c
+++ b/dlls/comctl32/tests/propsheet.c
@@ -1076,7 +1076,6 @@ static void test_CreatePropertySheetPage(void)
hpsp = CreatePropertySheetPageA(&page.u.pageA);
if (page.u.pageA.dwSize < PROPSHEETPAGEA_V1_SIZE)
- todo_wine
ok(hpsp == NULL, "Expected failure, size %u\n", page.u.pageA.dwSize);
else
{
@@ -1108,7 +1107,6 @@ static void test_CreatePropertySheetPage(void)
hpsp = CreatePropertySheetPageW(&page.u.pageW);
if (page.u.pageW.dwSize < PROPSHEETPAGEW_V1_SIZE)
- todo_wine
ok(hpsp == NULL, "Expected failure, size %u\n", page.u.pageW.dwSize);
else
{
More information about the wine-cvs
mailing list