Detlef Riekenberg : commdlg: Fix PrintDlg parameter checks.

Alexandre Julliard julliard at winehq.org
Mon Jan 11 15:59:36 CST 2010


Module: wine
Branch: master
Commit: 93475667a080bf5ea6fd0a4123c52b499ab32067
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=93475667a080bf5ea6fd0a4123c52b499ab32067

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Sun Jan 10 20:51:21 2010 +0100

commdlg: Fix PrintDlg parameter checks.

---

 dlls/commdlg.dll16/printdlg.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/dlls/commdlg.dll16/printdlg.c b/dlls/commdlg.dll16/printdlg.c
index 64bb395..ab6be7c 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 );




More information about the wine-cvs mailing list