Mike McCormack : msi: Fix some possible NULL pointer dereferences
(Coverity ).
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Apr 17 05:55:33 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: a92fe55cce1e23dcf252f6bcdb9a08d62ed4370b
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=a92fe55cce1e23dcf252f6bcdb9a08d62ed4370b
Author: Mike McCormack <mike at codeweavers.com>
Date: Mon Apr 17 18:17:52 2006 +0900
msi: Fix some possible NULL pointer dereferences (Coverity).
---
dlls/msi/msi.c | 3 +++
dlls/msi/package.c | 3 +++
dlls/msi/registry.c | 3 +++
dlls/msi/tests/msi.c | 16 ++++++++++++++++
4 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index b80fe91..b2038a1 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -667,6 +667,9 @@ INSTALLSTATE WINAPI MsiQueryProductState
TRACE("%s\n", debugstr_w(szProduct));
+ if (!szProduct)
+ return INSTALLSTATE_INVALIDARG;
+
rc = MSIREG_OpenUserProductsKey(szProduct,&hkey,FALSE);
if (rc != ERROR_SUCCESS)
goto end;
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 24a23d6..aaf93e9 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -514,6 +514,9 @@ UINT WINAPI MsiOpenPackageExW(LPCWSTR sz
TRACE("%s %08lx %p\n", debugstr_w(szPackage), dwOptions, phPackage );
+ if( szPackage == NULL )
+ return ERROR_INVALID_PARAMETER;
+
if( dwOptions )
FIXME("dwOptions %08lx not supported\n", dwOptions);
diff --git a/dlls/msi/registry.c b/dlls/msi/registry.c
index 528070e..3ff8d3f 100644
--- a/dlls/msi/registry.c
+++ b/dlls/msi/registry.c
@@ -675,6 +675,9 @@ UINT WINAPI MsiEnumFeaturesW(LPCWSTR szP
TRACE("%s %ld %p %p\n",debugstr_w(szProduct),index,szFeature,szParent);
+ if( !szProduct )
+ return ERROR_INVALID_PARAMETER;
+
r = MSIREG_OpenFeaturesKey(szProduct,&hkeyProduct,FALSE);
if( r != ERROR_SUCCESS )
return ERROR_NO_MORE_ITEMS;
diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c
index c9afdca..e6fd855 100644
--- a/dlls/msi/tests/msi.c
+++ b/dlls/msi/tests/msi.c
@@ -66,6 +66,21 @@ static void test_usefeature(void)
}
+static void test_null(void)
+{
+ MSIHANDLE hpkg;
+ UINT r;
+
+ r = MsiOpenPackageExW(NULL, 0, &hpkg);
+ ok( r == ERROR_INVALID_PARAMETER,"wrong error");
+
+ r = MsiQueryProductStateW(NULL);
+ ok( r == INSTALLSTATE_INVALIDARG, "wrong return\n");
+
+ r = MsiEnumFeaturesW(NULL,0,NULL,NULL);
+ ok( r == ERROR_INVALID_PARAMETER,"wrong error");
+}
+
START_TEST(msi)
{
HMODULE hmod = GetModuleHandle("msi.dll");
@@ -73,4 +88,5 @@ START_TEST(msi)
GetProcAddress(hmod, "MsiUseFeatureExA");
test_usefeature();
+ test_null();
}
More information about the wine-cvs
mailing list