[PATCH] commdlg: Fix PrintDlg parameter checks

Detlef Riekenberg wine.dev at web.de
Sun Jan 10 13:51:21 CST 2010


Validated with the win16 tests

--
By by ... Detlef
---
 dlls/commdlg.dll16/printdlg.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/dlls/commdlg.dll16/printdlg.c b/dlls/commdlg.dll16/printdlg.c
index 64bb395..74fc5e7 100644
--- a/dlls/commdlg.dll16/printdlg.c
+++ b/dlls/commdlg.dll16/printdlg.c
@@ -107,6 +107,13 @@ BOOL16 WINAPI PrintDlg16( LPPRINTDLG16 lppd )
     PRINTDLGA pd32;
     BOOL ret;
 
+    if (!lppd)
+    {
+        /* CommDlgExtendedError is managed only in comdlg32
+           Generate failure with CDERR_INITIALIZATION */
+        return PrintDlgA(NULL);
+    }
+
     pd32.lStructSize = sizeof(pd32);
     pd32.Flags       = lppd->Flags & ~(PD_ENABLEPRINTTEMPLATE | PD_ENABLEPRINTTEMPLATEHANDLE |
                                        PD_ENABLESETUPTEMPLATE | PD_ENABLESETUPTEMPLATEHANDLE |
@@ -128,6 +135,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 );
-- 
1.6.5




More information about the wine-patches mailing list