Dan Kegel : msi: Callers of alloc_msihandle should handle failure.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Aug 29 07:19:31 CDT 2006
Module: wine
Branch: master
Commit: 337e1e202f636404933cbb721366306f0d59b788
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=337e1e202f636404933cbb721366306f0d59b788
Author: Dan Kegel <dank at kegel.com>
Date: Mon Aug 28 09:44:35 2006 -0700
msi: Callers of alloc_msihandle should handle failure.
---
dlls/msi/action.c | 4 ++++
dlls/msi/database.c | 2 ++
dlls/msi/msi.c | 2 ++
dlls/msi/msiquery.c | 8 ++++++++
dlls/msi/package.c | 6 ++++++
dlls/msi/preview.c | 2 ++
dlls/msi/suminfo.c | 2 ++
7 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index ce47d31..da7d7e8 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -3146,6 +3146,10 @@ static UINT ACTION_PublishProduct(MSIPAC
/* FIXME: Need to write more keys to the user registry */
hDb= alloc_msihandle( &package->db->hdr );
+ if (!hDb) {
+ rc = ERROR_NOT_ENOUGH_MEMORY;
+ goto end;
+ }
rc = MsiGetSummaryInformationW(hDb, NULL, 0, &hSumInfo);
MsiCloseHandle(hDb);
if (rc == ERROR_SUCCESS)
diff --git a/dlls/msi/database.c b/dlls/msi/database.c
index 0dc3f85..609db23 100644
--- a/dlls/msi/database.c
+++ b/dlls/msi/database.c
@@ -190,6 +190,8 @@ UINT WINAPI MsiOpenDatabaseW(LPCWSTR szD
if( ret == ERROR_SUCCESS )
{
*phDB = alloc_msihandle( &db->hdr );
+ if (! *phDB)
+ ret = ERROR_NOT_ENOUGH_MEMORY;
msiobj_release( &db->hdr );
}
diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index 7b100a1..d15f222 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -124,6 +124,8 @@ UINT WINAPI MsiOpenProductW( LPCWSTR szP
if( r == ERROR_SUCCESS )
{
*phProduct = alloc_msihandle( &package->hdr );
+ if (! *phProduct)
+ r = ERROR_NOT_ENOUGH_MEMORY;
msiobj_release( &package->hdr );
}
return r;
diff --git a/dlls/msi/msiquery.c b/dlls/msi/msiquery.c
index 06c6bf9..27d93f6 100644
--- a/dlls/msi/msiquery.c
+++ b/dlls/msi/msiquery.c
@@ -254,6 +254,8 @@ UINT WINAPI MsiDatabaseOpenViewW(MSIHAND
if( ret == ERROR_SUCCESS )
{
*phView = alloc_msihandle( &query->hdr );
+ if (! *phView)
+ ret = ERROR_NOT_ENOUGH_MEMORY;
msiobj_release( &query->hdr );
}
msiobj_release( &db->hdr );
@@ -365,6 +367,8 @@ UINT WINAPI MsiViewFetch(MSIHANDLE hView
if( ret == ERROR_SUCCESS )
{
*record = alloc_msihandle( &rec->hdr );
+ if (! *record)
+ ret = ERROR_NOT_ENOUGH_MEMORY;
msiobj_release( &rec->hdr );
}
msiobj_release( &query->hdr );
@@ -532,6 +536,8 @@ UINT WINAPI MsiViewGetColumnInfo(MSIHAND
}
*hRec = alloc_msihandle( &rec->hdr );
+ if (! *hRec)
+ r = ERROR_NOT_ENOUGH_MEMORY;
out:
msiobj_release( &query->hdr );
@@ -830,6 +836,8 @@ UINT WINAPI MsiDatabaseGetPrimaryKeysW(
if( r == ERROR_SUCCESS )
{
*phRec = alloc_msihandle( &rec->hdr );
+ if (! *phRec)
+ r = ERROR_NOT_ENOUGH_MEMORY;
msiobj_release( &rec->hdr );
}
msiobj_release( &db->hdr );
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 5a22957..871ccbf 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -365,6 +365,10 @@ static UINT msi_get_word_count( MSIPACKA
MSIHANDLE suminfo;
MSIHANDLE hdb = alloc_msihandle( &package->db->hdr );
+ if (!hdb) {
+ ERR("Unable to allocate handle\n");
+ return 0;
+ }
rc = MsiGetSummaryInformationW( hdb, NULL, 0, &suminfo );
MsiCloseHandle(hdb);
if (rc != ERROR_SUCCESS)
@@ -584,6 +588,8 @@ UINT WINAPI MsiOpenPackageExW(LPCWSTR sz
if( ret == ERROR_SUCCESS )
{
*phPackage = alloc_msihandle( &package->hdr );
+ if (! *phPackage)
+ ret = ERROR_NOT_ENOUGH_MEMORY;
msiobj_release( &package->hdr );
}
diff --git a/dlls/msi/preview.c b/dlls/msi/preview.c
index 7ee6c22..161bcc7 100644
--- a/dlls/msi/preview.c
+++ b/dlls/msi/preview.c
@@ -76,6 +76,8 @@ UINT WINAPI MsiEnableUIPreview( MSIHANDL
*phPreview = alloc_msihandle( &preview->hdr );
msiobj_release( &preview->hdr );
r = ERROR_SUCCESS;
+ if (! *phPreview)
+ r = ERROR_NOT_ENOUGH_MEMORY;
}
msiobj_release( &db->hdr );
diff --git a/dlls/msi/suminfo.c b/dlls/msi/suminfo.c
index 6e07a3a..7b54752 100644
--- a/dlls/msi/suminfo.c
+++ b/dlls/msi/suminfo.c
@@ -468,6 +468,8 @@ UINT WINAPI MsiGetSummaryInformationW( M
*pHandle = alloc_msihandle( &si->hdr );
if( *pHandle )
ret = ERROR_SUCCESS;
+ else
+ ret = ERROR_NOT_ENOUGH_MEMORY;
msiobj_release( &si->hdr );
}
More information about the wine-cvs
mailing list