James Hawkins : msi: Return ERROR_INVALID_PARAMETER if szProduct is invalid .

Alexandre Julliard julliard at winehq.org
Mon Feb 11 14:19:32 CST 2008


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

Author: James Hawkins <truiken at gmail.com>
Date:   Mon Feb 11 01:16:49 2008 -0600

msi: Return ERROR_INVALID_PARAMETER if szProduct is invalid.

---

 dlls/msi/msi.c       |    6 +++++-
 dlls/msi/tests/msi.c |   21 ++++++---------------
 2 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index 643f9cc..93a4e0f 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -567,6 +567,7 @@ static UINT WINAPI MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
     UINT r;
     HKEY hkey;
     LPWSTR val = NULL;
+    WCHAR squished_pc[GUID_SIZE];
 
     TRACE("%s %s %p %p\n", debugstr_w(szProduct),
           debugstr_w(szAttribute), szValue, pcchValueBuf);
@@ -575,7 +576,10 @@ static UINT WINAPI MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
      * FIXME: Values seem scattered/duplicated in the registry. Is there a system?
      */
 
-    if ((szValue->str.w && !pcchValueBuf) || !szProduct || !szProduct[0] || !szAttribute)
+    if ((szValue->str.w && !pcchValueBuf) || !szProduct || !szAttribute)
+        return ERROR_INVALID_PARAMETER;
+
+    if (!squash_guid(szProduct, squished_pc))
         return ERROR_INVALID_PARAMETER;
 
     /* check for special properties */
diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c
index d64f35e..71461a4 100644
--- a/dlls/msi/tests/msi.c
+++ b/dlls/msi/tests/msi.c
@@ -2080,11 +2080,8 @@ static void test_MsiGetProductInfo(void)
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
     r = MsiGetProductInfoA("garbage", INSTALLPROPERTY_HELPLINK, buf, &sz);
-    todo_wine
-    {
-        ok(r == ERROR_INVALID_PARAMETER,
-           "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
-    }
+    ok(r == ERROR_INVALID_PARAMETER,
+       "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
     ok(sz == MAX_PATH, "Expected MAX_PATH, got %d\n", sz);
 
@@ -2093,11 +2090,8 @@ static void test_MsiGetProductInfo(void)
     lstrcpyA(buf, "apple");
     r = MsiGetProductInfoA("6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D",
                            INSTALLPROPERTY_HELPLINK, buf, &sz);
-    todo_wine
-    {
-        ok(r == ERROR_INVALID_PARAMETER,
-           "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
-    }
+    ok(r == ERROR_INVALID_PARAMETER,
+       "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
     ok(sz == MAX_PATH, "Expected MAX_PATH, got %d\n", sz);
 
@@ -2116,11 +2110,8 @@ static void test_MsiGetProductInfo(void)
     lstrcpyA(buf, "apple");
     r = MsiGetProductInfoA("A938G02JF-2NF3N93-VN3-2NNF-3KGKALDNF93",
                            INSTALLPROPERTY_HELPLINK, buf, &sz);
-    todo_wine
-    {
-        ok(r == ERROR_INVALID_PARAMETER,
-           "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
-    }
+    ok(r == ERROR_INVALID_PARAMETER,
+       "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
     ok(sz == MAX_PATH, "Expected MAX_PATH, got %d\n", sz);
 




More information about the wine-cvs mailing list