Module: wine Branch: master Commit: 0695b0dc73e004a78744541d72e817a6d94d88dd URL: http://source.winehq.org/git/wine.git/?a=commit;h=0695b0dc73e004a78744541d72...
Author: Juan Lang juan.lang@gmail.com Date: Tue Nov 10 11:47:59 2009 -0800
crypt32: Fix test failures across Windows versions.
---
dlls/crypt32/tests/encode.c | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/dlls/crypt32/tests/encode.c b/dlls/crypt32/tests/encode.c index 934aceb..9c2d739 100644 --- a/dlls/crypt32/tests/encode.c +++ b/dlls/crypt32/tests/encode.c @@ -1391,11 +1391,35 @@ static void test_decodeNameValue(DWORD dwEncoding) embeddedNullNameValue.value.dwValueType, GetLastError()); if (ret) { - CERT_NAME_VALUE value = { CERT_RDN_ENCODED_BLOB, + CERT_NAME_VALUE rdnEncodedValue = { CERT_RDN_ENCODED_BLOB, { sizeof(ia5EmbeddedNull), ia5EmbeddedNull } }; - - todo_wine - compareNameValues(&value, (const CERT_NAME_VALUE *)buf); + CERT_NAME_VALUE embeddedNullValue = { CERT_RDN_IA5_STRING, + { sizeof(embedded_null) - 1, (BYTE *)embedded_null } }; + const CERT_NAME_VALUE *got = (const CERT_NAME_VALUE *)buf, + *expected = NULL; + + /* Some Windows versions decode name values with embedded NULLs, + * others leave them encoded, even with the same version of crypt32. + * Accept either. + */ + ok(got->dwValueType == CERT_RDN_ENCODED_BLOB || + got->dwValueType == CERT_RDN_IA5_STRING, + "Expected CERT_RDN_ENCODED_BLOB or CERT_RDN_IA5_STRING, got %d\n", + got->dwValueType); + if (got->dwValueType == CERT_RDN_ENCODED_BLOB) + expected = &rdnEncodedValue; + else if (got->dwValueType == CERT_RDN_IA5_STRING) + expected = &embeddedNullValue; + if (expected) + { + ok(got->Value.cbData == expected->Value.cbData, + "String type %d: unexpected data size, got %d, expected %d\n", + got->dwValueType, got->Value.cbData, expected->Value.cbData); + if (got->Value.cbData && got->Value.pbData) + ok(!memcmp(got->Value.pbData, expected->Value.pbData, + min(got->Value.cbData, expected->Value.cbData)), + "String type %d: unexpected value\n", expected->dwValueType); + } LocalFree(buf); } }