diff --git a/dlls/msi/registry.c b/dlls/msi/registry.c index 1bee58d8e4..daa01e3e51 100644 --- a/dlls/msi/registry.c +++ b/dlls/msi/registry.c @@ -1284,6 +1284,9 @@ UINT WINAPI MsiEnumClientsA(LPCSTR szComponent, DWORD index, LPSTR szProduct) TRACE("%s %d %p\n", debugstr_a(szComponent), index, szProduct); + if ( !szProduct ) + return ERROR_INVALID_PARAMETER; + if( szComponent ) { szwComponent = strdupAtoW( szComponent ); @@ -1311,7 +1314,7 @@ UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent, DWORD index, LPWSTR szProduct) TRACE("%s %d %p\n", debugstr_w(szComponent), index, szProduct); - if (!szComponent || !szProduct) + if (!szComponent || !*szComponent || !szProduct) return ERROR_INVALID_PARAMETER; r = MSIREG_OpenComponentsKey(szComponent,&hkeyComp,FALSE); diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c index e98788462d..61c7ddfd9d 100644 --- a/dlls/msi/tests/msi.c +++ b/dlls/msi/tests/msi.c @@ -1618,18 +1618,12 @@ static void test_MsiEnumClients(void) /* empty szComponent */ product[0] = '\0'; r = MsiEnumClientsA("", 0, product); - 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(product, ""), "Expected product to be unchanged, got %s\n", product); /* NULL lpProductBuf */ r = MsiEnumClientsA(component, 0, 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); /* all params correct, component missing */ product[0] = '\0';