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