Commit 3e56d78f authored by James Hawkins's avatar James Hawkins Committed by Alexandre Julliard

msi: Validate MsiSourceListGetInfo parameters.

parent 1ff40d15
...@@ -214,11 +214,23 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid, ...@@ -214,11 +214,23 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
TRACE("%s %s\n", debugstr_w(szProduct), debugstr_w(szProperty)); TRACE("%s %s\n", debugstr_w(szProduct), debugstr_w(szProperty));
if (!szProduct || lstrlenW(szProduct) > 39) if (!szProduct || !*szProduct)
return ERROR_INVALID_PARAMETER;
if (lstrlenW(szProduct) != GUID_SIZE - 1 ||
(szProduct[0] != '{' && szProduct[GUID_SIZE - 2] != '}'))
return ERROR_INVALID_PARAMETER; return ERROR_INVALID_PARAMETER;
if (szValue && !pcchValue) if (szValue && !pcchValue)
return ERROR_INVALID_PARAMETER; return ERROR_INVALID_PARAMETER;
if (dwContext != MSIINSTALLCONTEXT_USERMANAGED &&
dwContext != MSIINSTALLCONTEXT_USERUNMANAGED &&
dwContext != MSIINSTALLCONTEXT_MACHINE)
return ERROR_INVALID_PARAMETER;
if (!szProperty)
return ERROR_INVALID_PARAMETER;
if (dwOptions == MSICODE_PATCH) if (dwOptions == MSICODE_PATCH)
{ {
......
...@@ -118,34 +118,22 @@ static void test_MsiSourceListGetInfo(void) ...@@ -118,34 +118,22 @@ static void test_MsiSourceListGetInfo(void)
/* empty szProductCodeOrPatchCode */ /* empty szProductCodeOrPatchCode */
r = MsiSourceListGetInfoA("", usersid, MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA("", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL); MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
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);
}
/* garbage szProductCodeOrPatchCode */ /* garbage szProductCodeOrPatchCode */
r = MsiSourceListGetInfoA("garbage", usersid, MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA("garbage", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL); MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
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);
}
/* szProductCodeOrPatchCode */ /* szProductCodeOrPatchCode */
r = MsiSourceListGetInfoA("garbage", usersid, MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA("garbage", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL); MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
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);
}
/* guid without brackets */ /* guid without brackets */
r = MsiSourceListGetInfoA("51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA", usersid, MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA("51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL); MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
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);
}
/* guid with brackets */ /* guid with brackets */
r = MsiSourceListGetInfoA("{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}", usersid, MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA("{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
...@@ -155,42 +143,27 @@ static void test_MsiSourceListGetInfo(void) ...@@ -155,42 +143,27 @@ static void test_MsiSourceListGetInfo(void)
/* same length as guid, but random */ /* same length as guid, but random */
r = MsiSourceListGetInfoA("ADKD-2KSDFF2-DKK1KNFJASD9GLKWME-1I3KAD", usersid, MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA("ADKD-2KSDFF2-DKK1KNFJASD9GLKWME-1I3KAD", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL); MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
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);
}
/* invalid context */ /* invalid context */
r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_NONE, r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_NONE,
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL); MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
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);
}
/* another invalid context */ /* another invalid context */
r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_ALLUSERMANAGED, r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_ALLUSERMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL); MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
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);
}
/* yet another invalid context */ /* yet another invalid context */
r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_ALL, r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_ALL,
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL); MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
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);
}
/* mix two valid contexts */ /* mix two valid contexts */
r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL); MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
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);
}
/* invalid option */ /* invalid option */
r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
...@@ -200,10 +173,7 @@ static void test_MsiSourceListGetInfo(void) ...@@ -200,10 +173,7 @@ static void test_MsiSourceListGetInfo(void)
/* NULL property */ /* NULL property */
r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
MSICODE_PRODUCT, NULL, NULL, NULL); MSICODE_PRODUCT, NULL, NULL, NULL);
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);
}
/* empty property */ /* empty property */
r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED, r = MsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment