From cf4aec0cbd7333dc0662055bb394f4f24c77c627 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Tue, 2 Aug 2011 09:24:05 +0200 Subject: [PATCH] msi: Avoid a crash in ControlEvent_SetTargetPath. --- dlls/msi/events.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/dlls/msi/events.c b/dlls/msi/events.c index 3047d1df8aa..2c0431d32ec 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; } -- 2.11.4.GIT