James Hawkins : msi: Validate MsiQueryProductCode parameters.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jun 27 09:11:18 CDT 2007


Module: wine
Branch: master
Commit: e92f66558a8f415cee051d8752438726dbd64bc1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e92f66558a8f415cee051d8752438726dbd64bc1

Author: James Hawkins <truiken at gmail.com>
Date:   Tue Jun 26 16:30:40 2007 -0700

msi: Validate MsiQueryProductCode parameters.

---

 dlls/msi/msi.c       |    9 ++++++---
 dlls/msi/tests/msi.c |   15 +++------------
 2 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index 2042695..05d3bbf 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -764,13 +764,16 @@ INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct)
     UINT rc;
     INSTALLSTATE rrc = INSTALLSTATE_UNKNOWN;
     HKEY hkey = 0;
-    static const WCHAR szWindowsInstaller[] = {
-         'W','i','n','d','o','w','s','I','n','s','t','a','l','l','e','r',0 };
     DWORD sz;
 
+    static const int GUID_LEN = 38;
+    static const WCHAR szWindowsInstaller[] = {
+            'W','i','n','d','o','w','s','I','n','s','t','a','l','l','e','r',0
+    };
+
     TRACE("%s\n", debugstr_w(szProduct));
 
-    if (!szProduct)
+    if (!szProduct || !*szProduct || lstrlenW(szProduct) != GUID_LEN)
         return INSTALLSTATE_INVALIDARG;
 
     rc = MSIREG_OpenUserProductsKey(szProduct,&hkey,FALSE);
diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c
index d905824..06c7276 100644
--- a/dlls/msi/tests/msi.c
+++ b/dlls/msi/tests/msi.c
@@ -347,24 +347,15 @@ static void test_MsiQueryProductState(void)
 
     /* empty prodcode */
     state = MsiQueryProductStateA("");
-    todo_wine
-    {
-        ok(state == INSTALLSTATE_INVALIDARG, "Expected INSTALLSTATE_INVALIDARG, got %d\n", state);
-    }
+    ok(state == INSTALLSTATE_INVALIDARG, "Expected INSTALLSTATE_INVALIDARG, got %d\n", state);
 
     /* garbage prodcode */
     state = MsiQueryProductStateA("garbage");
-    todo_wine
-    {
-        ok(state == INSTALLSTATE_INVALIDARG, "Expected INSTALLSTATE_INVALIDARG, got %d\n", state);
-    }
+    ok(state == INSTALLSTATE_INVALIDARG, "Expected INSTALLSTATE_INVALIDARG, got %d\n", state);
 
     /* guid without brackets */
     state = MsiQueryProductStateA("6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D");
-    todo_wine
-    {
-        ok(state == INSTALLSTATE_INVALIDARG, "Expected INSTALLSTATE_INVALIDARG, got %d\n", state);
-    }
+    ok(state == INSTALLSTATE_INVALIDARG, "Expected INSTALLSTATE_INVALIDARG, got %d\n", state);
 
     /* guid with brackets */
     state = MsiQueryProductStateA("{6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D}");




More information about the wine-cvs mailing list