comdlg32: Avoid NULL access in a TRACE

Detlef Riekenberg wine.dev at web.de
Fri Aug 10 00:19:27 CDT 2007


Our tests crash with WINEDEBUG="+commdlg"

Changelog:
comdlg32: Avoid NULL access in a TRACE


Depends on:
comdlg32-Return-defaults-for-hDevMode-and-hDevNames


-- 
 
By by ... Detlef

-------------- next part --------------
>From 9b844cac1fcfd10a03d08e50ea68682bb34916ea Mon Sep 17 00:00:00 2001
From: Detlef Riekenberg <wine.dev at web.de>
Date: Fri, 10 Aug 2007 06:56:41 +0200
Subject: [PATCH] comdlg32: Avoid NULL access
---
 dlls/comdlg32/printdlg.c |   62 +++++++++++++++++++++++++---------------------
 1 files changed, 34 insertions(+), 28 deletions(-)

diff --git a/dlls/comdlg32/printdlg.c b/dlls/comdlg32/printdlg.c
index c9ad147..2bd5650 100644
--- a/dlls/comdlg32/printdlg.c
+++ b/dlls/comdlg32/printdlg.c
@@ -3345,27 +3345,29 @@ BOOL WINAPI PageSetupDlgA(LPPAGESETUPDLG
     PageSetupDataA	*pda;
     PRINTDLGA		pdlg;
 
+    TRACE("(%p)\n", setupdlg);
+    if (setupdlg == NULL) {
+	   COMDLG32_SetCommDlgExtendedError(CDERR_INITIALIZATION);
+	   return FALSE;
+    }
+
     /* TRACE */
     if(TRACE_ON(commdlg)) {
         char flagstr[1000] = "";
-	const struct pd_flags *pflag = psd_flags;
-	for( ; pflag->name; pflag++) {
-	    if(setupdlg->Flags & pflag->flag) {
-	        strcat(flagstr, pflag->name);
-	        strcat(flagstr, "|");
-	    }
-	}
-	TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n"
-              "hinst %p, flags %08x (%s)\n",
-	      setupdlg, setupdlg->hwndOwner, setupdlg->hDevMode,
-	      setupdlg->hDevNames,
-	      setupdlg->hInstance, setupdlg->Flags, flagstr);
+        const struct pd_flags *pflag = psd_flags;
+        for( ; pflag->name; pflag++) {
+            if(setupdlg->Flags & pflag->flag) {
+                strcat(flagstr, pflag->name);
+                strcat(flagstr, "|");
+            }
+        }
+        TRACE(".hwndOwner = %p, .hDevMode = %p, .hDevNames = %p\n"
+              ".hinst %p, .flags %08x (%s)\n",
+            setupdlg->hwndOwner, setupdlg->hDevMode, setupdlg->hDevNames,
+            setupdlg->hInstance, setupdlg->Flags, flagstr);
     }
+
     /* Checking setupdlg structure */
-    if (setupdlg == NULL) {
-	   COMDLG32_SetCommDlgExtendedError(CDERR_INITIALIZATION);
-	   return FALSE;
-    }
     if(setupdlg->lStructSize != sizeof(PAGESETUPDLGA)) {
 	   COMDLG32_SetCommDlgExtendedError(CDERR_STRUCTSIZE);
 	   return FALSE;
@@ -3450,20 +3452,24 @@ BOOL WINAPI PageSetupDlgW(LPPAGESETUPDLG
     PRINTDLGW		pdlg;
 
     FIXME("Unicode implementation is not done yet\n");
+    TRACE("(%p)\n", setupdlg);
+    if (setupdlg == NULL) {
+	   COMDLG32_SetCommDlgExtendedError(CDERR_INITIALIZATION);
+	   return FALSE;
+    }
     if(TRACE_ON(commdlg)) {
         char flagstr[1000] = "";
-	const struct pd_flags *pflag = psd_flags;
-	for( ; pflag->name; pflag++) {
-	    if(setupdlg->Flags & pflag->flag) {
-	        strcat(flagstr, pflag->name);
-	        strcat(flagstr, "|");
-	    }
-	}
-	TRACE("(%p): hwndOwner = %p, hDevMode = %p, hDevNames = %p\n"
-              "hinst %p, flags %08x (%s)\n",
-	      setupdlg, setupdlg->hwndOwner, setupdlg->hDevMode,
-	      setupdlg->hDevNames,
-	      setupdlg->hInstance, setupdlg->Flags, flagstr);
+        const struct pd_flags *pflag = psd_flags;
+        for( ; pflag->name; pflag++) {
+        if(setupdlg->Flags & pflag->flag) {
+            strcat(flagstr, pflag->name);
+            strcat(flagstr, "|");
+            }
+        }
+        TRACE(".hwndOwner = %p, .hDevMode = %p, .hDevNames = %p\n"
+              ".hinst %p, .flags %08x (%s)\n",
+            setupdlg->hwndOwner, setupdlg->hDevMode, setupdlg->hDevNames,
+            setupdlg->hInstance, setupdlg->Flags, flagstr);
     }
 
     /* Initialize default printer struct. If no printer device info is specified
-- 
1.4.1



More information about the wine-patches mailing list