From 93475667a080bf5ea6fd0a4123c52b499ab32067 Mon Sep 17 00:00:00 2001 From: Detlef Riekenberg Date: Sun, 10 Jan 2010 20:51:21 +0100 Subject: [PATCH] commdlg: Fix PrintDlg parameter checks. --- dlls/commdlg.dll16/printdlg.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dlls/commdlg.dll16/printdlg.c b/dlls/commdlg.dll16/printdlg.c index 64bb3952351..ab6be7c0978 100644 --- a/dlls/commdlg.dll16/printdlg.c +++ b/dlls/commdlg.dll16/printdlg.c @@ -107,6 +107,8 @@ BOOL16 WINAPI PrintDlg16( LPPRINTDLG16 lppd ) PRINTDLGA pd32; BOOL ret; + if (!lppd) return PrintDlgA(NULL); /* generate failure with CDERR_INITIALIZATION */ + pd32.lStructSize = sizeof(pd32); pd32.Flags = lppd->Flags & ~(PD_ENABLEPRINTTEMPLATE | PD_ENABLEPRINTTEMPLATEHANDLE | PD_ENABLESETUPTEMPLATE | PD_ENABLESETUPTEMPLATEHANDLE | @@ -128,6 +130,9 @@ BOOL16 WINAPI PrintDlg16( LPPRINTDLG16 lppd ) if (lppd->Flags & PD_ENABLESETUPHOOK) FIXME( "custom setup hook %p no longer supported\n", lppd->lpfnSetupHook ); + /* Generate failure with CDERR_STRUCTSIZE, when needed */ + if (lppd->lStructSize != sizeof(PRINTDLG16)) pd32.lStructSize--; + if ((ret = PrintDlgA( &pd32 ))) { lppd->hDC = HDC_16( pd32.hDC );