advapi32/tests: test_enum_provider_types test cleanup.
This commit is contained in:
parent
30a6f54dc9
commit
f714cf4bd1
@ -566,43 +566,51 @@ static BOOL FindProvTypesRegVals(DWORD dwIndex, DWORD *pdwProvType, LPSTR *pszTy
|
|||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
PSTR ch;
|
PSTR ch;
|
||||||
|
LPSTR szName;
|
||||||
|
DWORD cbName;
|
||||||
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Cryptography\\Defaults\\Provider Types", &hKey))
|
if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Cryptography\\Defaults\\Provider Types", &hKey))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (RegQueryInfoKey(hKey, NULL, NULL, NULL, pdwTypeCount, pcbTypeName, NULL,
|
if (RegQueryInfoKey(hKey, NULL, NULL, NULL, pdwTypeCount, &cbName, NULL,
|
||||||
NULL, NULL, NULL, NULL, NULL))
|
NULL, NULL, NULL, NULL, NULL))
|
||||||
return FALSE;
|
goto cleanup;
|
||||||
(*pcbTypeName)++;
|
cbName++;
|
||||||
|
|
||||||
if (!(*pszTypeName = ((LPSTR)LocalAlloc(LMEM_ZEROINIT, *pcbTypeName))))
|
if (!(szName = LocalAlloc(LMEM_ZEROINIT, cbName)))
|
||||||
return FALSE;
|
goto cleanup;
|
||||||
|
|
||||||
if (RegEnumKeyEx(hKey, dwIndex, *pszTypeName, pcbTypeName, NULL, NULL, NULL, NULL))
|
if (RegEnumKeyEx(hKey, dwIndex, szName, &cbName, NULL, NULL, NULL, NULL))
|
||||||
return FALSE;
|
goto cleanup;
|
||||||
(*pcbTypeName)++;
|
cbName++;
|
||||||
ch = *pszTypeName + strlen(*pszTypeName);
|
ch = szName + strlen(szName);
|
||||||
/* Convert "Type 000" to 0, etc/ */
|
/* Convert "Type 000" to 0, etc/ */
|
||||||
*pdwProvType = *(--ch) - '0';
|
*pdwProvType = *(--ch) - '0';
|
||||||
*pdwProvType += (*(--ch) - '0') * 10;
|
*pdwProvType += (*(--ch) - '0') * 10;
|
||||||
*pdwProvType += (*(--ch) - '0') * 100;
|
*pdwProvType += (*(--ch) - '0') * 100;
|
||||||
|
|
||||||
if (RegOpenKey(hKey, *pszTypeName, &hSubKey))
|
if (RegOpenKey(hKey, szName, &hSubKey))
|
||||||
return FALSE;
|
goto cleanup;
|
||||||
|
|
||||||
if (RegQueryValueEx(hSubKey, "TypeName", NULL, NULL, NULL, pcbTypeName))
|
if (RegQueryValueEx(hSubKey, "TypeName", NULL, NULL, NULL, pcbTypeName))
|
||||||
return FALSE;
|
goto cleanup;
|
||||||
|
|
||||||
if (!(*pszTypeName = ((LPSTR)LocalAlloc(LMEM_ZEROINIT, *pcbTypeName))))
|
if (!(*pszTypeName = LocalAlloc(LMEM_ZEROINIT, *pcbTypeName)))
|
||||||
return FALSE;
|
goto cleanup;
|
||||||
|
|
||||||
if (RegQueryValueEx(hSubKey, "TypeName", NULL, NULL, (LPBYTE)*pszTypeName, pcbTypeName))
|
if (!RegQueryValueEx(hSubKey, "TypeName", NULL, NULL, (LPBYTE)*pszTypeName, pcbTypeName))
|
||||||
return FALSE;
|
ret = TRUE;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if (!ret)
|
||||||
|
LocalFree(*pszTypeName);
|
||||||
|
LocalFree(szName);
|
||||||
|
|
||||||
RegCloseKey(hSubKey);
|
RegCloseKey(hSubKey);
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
|
|
||||||
return TRUE;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_enum_provider_types(void)
|
static void test_enum_provider_types(void)
|
||||||
@ -637,29 +645,31 @@ static void test_enum_provider_types(void)
|
|||||||
|
|
||||||
/* check pdwReserved for NULL */
|
/* check pdwReserved for NULL */
|
||||||
result = pCryptEnumProviderTypesA(index, ¬Null, 0, &provType, typeName, &typeNameSize);
|
result = pCryptEnumProviderTypesA(index, ¬Null, 0, &provType, typeName, &typeNameSize);
|
||||||
ok(!result && GetLastError()==ERROR_INVALID_PARAMETER, "expected %i, got %d\n",
|
ok(!result && GetLastError()==ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %d\n",
|
||||||
ERROR_INVALID_PARAMETER, GetLastError());
|
GetLastError());
|
||||||
|
|
||||||
/* check dwFlags == zero */
|
/* check dwFlags == zero */
|
||||||
result = pCryptEnumProviderTypesA(index, NULL, notZeroFlags, &provType, typeName, &typeNameSize);
|
result = pCryptEnumProviderTypesA(index, NULL, notZeroFlags, &provType, typeName, &typeNameSize);
|
||||||
ok(!result && GetLastError()==NTE_BAD_FLAGS, "expected %i, got %d\n",
|
ok(!result && GetLastError()==NTE_BAD_FLAGS, "expected ERROR_INVALID_PARAMETER, got %d\n",
|
||||||
ERROR_INVALID_PARAMETER, GetLastError());
|
GetLastError());
|
||||||
|
|
||||||
|
/* This test fails under Win2k SP4:
|
||||||
|
* result = TRUE, GetLastError() == 0xdeadbeef */
|
||||||
|
if (0)
|
||||||
|
{
|
||||||
/* alloc provider type to half the size required
|
/* alloc provider type to half the size required
|
||||||
* cbTypeName holds the size required */
|
* cbTypeName holds the size required */
|
||||||
typeNameSize = cbTypeName / 2;
|
typeNameSize = cbTypeName / 2;
|
||||||
if (!(typeName = ((LPSTR)LocalAlloc(LMEM_ZEROINIT, typeNameSize))))
|
if (!(typeName = ((LPSTR)LocalAlloc(LMEM_ZEROINIT, typeNameSize))))
|
||||||
return;
|
goto cleanup;
|
||||||
|
|
||||||
/* This test fails under Win2k SP4:
|
|
||||||
result = TRUE, GetLastError() == 0xdeadbeef
|
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
result = pCryptEnumProviderTypesA(index, NULL, 0, &provType, typeName, &typeNameSize);
|
result = pCryptEnumProviderTypesA(index, NULL, 0, &provType, typeName, &typeNameSize);
|
||||||
ok(!result && GetLastError()==ERROR_MORE_DATA, "expected 0/ERROR_MORE_DATA, got %d/%08lx\n",
|
ok(!result && GetLastError()==ERROR_MORE_DATA, "expected 0/ERROR_MORE_DATA, got %d/%d\n",
|
||||||
result, GetLastError());
|
result, GetLastError());
|
||||||
*/
|
|
||||||
|
|
||||||
LocalFree(typeName);
|
LocalFree(typeName);
|
||||||
|
}
|
||||||
|
|
||||||
/* loop through the provider types to get the number of provider types
|
/* loop through the provider types to get the number of provider types
|
||||||
* after loop ends, count should be dwTypeCount + 1 so subtract 1
|
* after loop ends, count should be dwTypeCount + 1 so subtract 1
|
||||||
@ -674,15 +684,14 @@ static void test_enum_provider_types(void)
|
|||||||
* ERROR_NO_MORE_ITEMS */
|
* ERROR_NO_MORE_ITEMS */
|
||||||
for (typeCount = 0; typeCount < dwTypeCount + 1; typeCount++)
|
for (typeCount = 0; typeCount < dwTypeCount + 1; typeCount++)
|
||||||
result = pCryptEnumProviderTypesA(typeCount, NULL, 0, &provType, NULL, &typeNameSize);
|
result = pCryptEnumProviderTypesA(typeCount, NULL, 0, &provType, NULL, &typeNameSize);
|
||||||
ok(!result && GetLastError()==ERROR_NO_MORE_ITEMS, "expected %i, got %d\n",
|
ok(!result && GetLastError()==ERROR_NO_MORE_ITEMS, "expected ERROR_NO_MORE_ITEMS, got %d\n",
|
||||||
ERROR_NO_MORE_ITEMS, GetLastError());
|
GetLastError());
|
||||||
|
|
||||||
|
|
||||||
/* check expected versus actual values returned */
|
/* check expected versus actual values returned */
|
||||||
result = pCryptEnumProviderTypesA(index, NULL, 0, &provType, NULL, &typeNameSize);
|
result = pCryptEnumProviderTypesA(index, NULL, 0, &provType, NULL, &typeNameSize);
|
||||||
ok(result && typeNameSize==cbTypeName, "expected %d, got %d\n", cbTypeName, typeNameSize);
|
ok(result && typeNameSize==cbTypeName, "expected %d, got %d\n", cbTypeName, typeNameSize);
|
||||||
if (!(typeName = ((LPSTR)LocalAlloc(LMEM_ZEROINIT, typeNameSize))))
|
if (!(typeName = ((LPSTR)LocalAlloc(LMEM_ZEROINIT, typeNameSize))))
|
||||||
return;
|
goto cleanup;
|
||||||
|
|
||||||
typeNameSize = 0xdeadbeef;
|
typeNameSize = 0xdeadbeef;
|
||||||
result = pCryptEnumProviderTypesA(index, NULL, 0, &provType, typeName, &typeNameSize);
|
result = pCryptEnumProviderTypesA(index, NULL, 0, &provType, typeName, &typeNameSize);
|
||||||
@ -693,6 +702,8 @@ static void test_enum_provider_types(void)
|
|||||||
ok(typeNameSize==cbTypeName, "expected %d, got %d\n", cbTypeName, typeNameSize);
|
ok(typeNameSize==cbTypeName, "expected %d, got %d\n", cbTypeName, typeNameSize);
|
||||||
|
|
||||||
LocalFree(typeName);
|
LocalFree(typeName);
|
||||||
|
cleanup:
|
||||||
|
LocalFree(pszTypeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL FindDfltProvRegVals(DWORD dwProvType, DWORD dwFlags, LPSTR *pszProvName, DWORD *pcbProvName)
|
static BOOL FindDfltProvRegVals(DWORD dwProvType, DWORD dwFlags, LPSTR *pszProvName, DWORD *pcbProvName)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user