msi: Fix a couple of leaks (coverity)

Frédéric Delanoy frederic.delanoy at gmail.com
Fri Nov 16 04:50:29 CST 2012


CIDs 713577-713578 713582
---
 dlls/msi/files.c   | 2 ++
 dlls/msi/package.c | 7 +++++++
 2 files changed, 9 insertions(+)

diff --git a/dlls/msi/files.c b/dlls/msi/files.c
index 11913ef..98d7513 100644
--- a/dlls/msi/files.c
+++ b/dlls/msi/files.c
@@ -336,6 +336,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
         if (rc != ERROR_SUCCESS)
         {
             ERR("Unable to load media info for %s (%u)\n", debugstr_w(file->File), rc);
+            msi_free(mi);
             return ERROR_FUNCTION_FAILED;
         }
         if (!file->Component->Enabled) continue;
@@ -513,6 +514,7 @@ UINT ACTION_PatchFiles( MSIPACKAGE *package )
         if (rc != ERROR_SUCCESS)
         {
             ERR("Unable to load media info for %s (%u)\n", debugstr_w(file->File), rc);
+            msi_free(mi);
             return ERROR_FUNCTION_FAILED;
         }
         comp->Action = msi_get_component_action( package, comp );
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 015af00..3055175 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1567,13 +1567,17 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE **pPackage)
         {
             r = msi_create_empty_local_file( localfile, dotmsi );
             if (r != ERROR_SUCCESS)
+            {
+                msi_free ( base_url );
                 return r;
+            }
 
             if (!CopyFileW( file, localfile, FALSE ))
             {
                 r = GetLastError();
                 WARN("unable to copy package %s to %s (%u)\n", debugstr_w(file), debugstr_w(localfile), r);
                 DeleteFileW( localfile );
+                msi_free ( base_url );
                 return r;
             }
             delete_on_close = TRUE;
@@ -1581,7 +1585,10 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, MSIPACKAGE **pPackage)
         TRACE("opening package %s\n", debugstr_w( localfile ));
         r = MSI_OpenDatabaseW( localfile, MSIDBOPEN_TRANSACT, &db );
         if (r != ERROR_SUCCESS)
+        {
+            msi_free ( base_url );
             return r;
+        }
     }
     package = MSI_CreatePackage( db, base_url );
     msi_free( base_url );
-- 
1.8.0




More information about the wine-patches mailing list