From e3b558887d353ceadd952d148d59e98ae07127d0 Mon Sep 17 00:00:00 2001
From: Hans Leidekker <hans@codeweavers.com>
Date: Tue, 31 Mar 2009 11:31:28 +0200
Subject: [PATCH] msi: Build a proper source path in MsiConfigureProductExW.

We were passing uninitialized data which would ultimately end up in the
registry.
---
 dlls/msi/msi.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index 445d1359edc..90c7ba6c5d8 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -476,7 +476,7 @@ UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct, int iInstallLevel,
     MSIINSTALLCONTEXT context;
     UINT r;
     DWORD sz;
-    WCHAR sourcepath[MAX_PATH];
+    WCHAR sourcepath[MAX_PATH], filename[MAX_PATH];
     LPWSTR commandline;
 
     static const WCHAR szInstalled[] = {
@@ -538,6 +538,16 @@ UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct, int iInstallLevel,
     if (context == MSIINSTALLCONTEXT_MACHINE)
         lstrcatW(commandline, szMachine);
 
+    sz = sizeof(sourcepath);
+    MsiSourceListGetInfoW(szProduct, NULL, context, MSICODE_PRODUCT,
+                          INSTALLPROPERTY_LASTUSEDSOURCEW, sourcepath, &sz);
+
+    sz = sizeof(filename);
+    MsiSourceListGetInfoW(szProduct, NULL, context, MSICODE_PRODUCT,
+                          INSTALLPROPERTY_PACKAGENAMEW, filename, &sz);
+
+    strcatW(sourcepath, filename);
+
     r = MSI_InstallPackage( package, sourcepath, commandline );
 
     msi_free(commandline);
-- 
GitLab