msi: Validate MsiSourceListGetInfo parameters.
This commit is contained in:
parent
1ff40d1558
commit
3e56d78f2e
|
@ -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)
|
||||||
/* 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)
|
||||||
/* 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)
|
||||||
/* 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,
|
||||||
|
|
Loading…
Reference in New Issue