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