crypt32: Fix CryptFreeTls when calling with a freed index.

This commit is contained in:
Reece Dunn 2010-03-02 21:31:46 +00:00 committed by Alexandre Julliard
parent 1b46c0660d
commit a15dbfac22
2 changed files with 8 additions and 5 deletions

View File

@ -161,8 +161,13 @@ BOOL WINAPI I_CryptSetTls(DWORD dwTlsIndex, LPVOID lpTlsValue)
BOOL WINAPI I_CryptFreeTls(DWORD dwTlsIndex, DWORD unknown) BOOL WINAPI I_CryptFreeTls(DWORD dwTlsIndex, DWORD unknown)
{ {
BOOL ret;
TRACE("(%d, %d)\n", dwTlsIndex, unknown); TRACE("(%d, %d)\n", dwTlsIndex, unknown);
return TlsFree(dwTlsIndex);
ret = TlsFree(dwTlsIndex);
if (!ret) SetLastError( E_INVALIDARG );
return ret;
} }
BOOL WINAPI I_CryptGetOssGlobal(DWORD x) BOOL WINAPI I_CryptGetOssGlobal(DWORD x)

View File

@ -254,10 +254,8 @@ static void test_cryptTls(void)
ret = pI_CryptFreeTls(index, 0); ret = pI_CryptFreeTls(index, 0);
ok(ret, "I_CryptFreeTls failed: %08x\n", GetLastError()); ok(ret, "I_CryptFreeTls failed: %08x\n", GetLastError());
ret = pI_CryptFreeTls(index, 0); ret = pI_CryptFreeTls(index, 0);
/* Not sure if this fails because TlsFree should fail, so leave as ok(!ret, "I_CryptFreeTls succeeded\n");
* todo for now. ok(GetLastError() == E_INVALIDARG,
*/
todo_wine ok(!ret && GetLastError() == E_INVALIDARG,
"Expected E_INVALIDARG, got %08x\n", GetLastError()); "Expected E_INVALIDARG, got %08x\n", GetLastError());
} }
/* Similar pass, check I_CryptDetachTls */ /* Similar pass, check I_CryptDetachTls */