Hans Leidekker : msi: Avoid a crash in ControlEvent_SetTargetPath.

Alexandre Julliard julliard at winehq.org
Tue Aug 2 14:18:25 CDT 2011


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Aug  2 09:24:05 2011 +0200

msi: Avoid a crash in ControlEvent_SetTargetPath.

---

 dlls/msi/events.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/dlls/msi/events.c b/dlls/msi/events.c
index 3047d1d..2c0431d 100644
--- a/dlls/msi/events.c
+++ b/dlls/msi/events.c
@@ -215,18 +215,19 @@ static UINT ControlEvent_AddSource( MSIPACKAGE *package, LPCWSTR argument, msi_d
 static UINT ControlEvent_SetTargetPath(MSIPACKAGE* package, LPCWSTR argument, 
                                    msi_dialog* dialog)
 {
+    static const WCHAR szSelectionPath[] = {'S','e','l','e','c','t','i','o','n','P','a','t','h',0};
     LPWSTR path = msi_dup_property( package->db, argument );
     MSIRECORD *rec = MSI_CreateRecord( 1 );
-    UINT r;
-
-    static const WCHAR szSelectionPath[] = {'S','e','l','e','c','t','i','o','n','P','a','t','h',0};
+    UINT r = ERROR_SUCCESS;
 
     MSI_RecordSetStringW( rec, 1, path );
     ControlEvent_FireSubscribedEvent( package, szSelectionPath, rec );
-
-    /* failure to set the path halts the executing of control events */
-    r = MSI_SetTargetPathW(package, argument, path);
-    msi_free(path);
+    if (path)
+    {
+        /* failure to set the path halts the executing of control events */
+        r = MSI_SetTargetPathW(package, argument, path);
+        msi_free(path);
+    }
     msi_free(&rec->hdr);
     return r;
 }




More information about the wine-cvs mailing list