Juan Lang : crypt32: Fail decoding a CRL entry if the serial number is empty.
Alexandre Julliard
julliard at winehq.org
Thu Nov 8 07:07:31 CST 2007
Module: wine
Branch: master
Commit: c5d5c5b63aa296439531dfa1da1692280593bf48
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c5d5c5b63aa296439531dfa1da1692280593bf48
Author: Juan Lang <juan.lang at gmail.com>
Date: Wed Nov 7 14:00:10 2007 -0800
crypt32: Fail decoding a CRL entry if the serial number is empty.
---
dlls/crypt32/decode.c | 6 ++++++
dlls/crypt32/tests/encode.c | 2 +-
2 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c
index db2a3b3..8ceceac 100644
--- a/dlls/crypt32/decode.c
+++ b/dlls/crypt32/decode.c
@@ -1065,6 +1065,12 @@ static BOOL CRYPT_AsnDecodeCRLEntry(const BYTE *pbEncoded, DWORD cbEncoded,
ret = CRYPT_AsnDecodeSequence(items, sizeof(items) / sizeof(items[0]),
pbEncoded, cbEncoded, dwFlags, NULL, entry, pcbStructInfo, pcbDecoded,
entry ? entry->SerialNumber.pbData : NULL);
+ if (ret && entry && !entry->SerialNumber.cbData)
+ {
+ WARN("empty CRL entry serial number\n");
+ SetLastError(CRYPT_E_ASN1_CORRUPT);
+ ret = FALSE;
+ }
return ret;
}
diff --git a/dlls/crypt32/tests/encode.c b/dlls/crypt32/tests/encode.c
index 74ebe3c..82d0344 100644
--- a/dlls/crypt32/tests/encode.c
+++ b/dlls/crypt32/tests/encode.c
@@ -4269,7 +4269,7 @@ static void test_decodeCRLToBeSigned(DWORD dwEncoding)
ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED,
v1CRLWithIssuerAndEmptyEntry, v1CRLWithIssuerAndEmptyEntry[1] + 2,
CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size);
- todo_wine ok(!ret && GetLastError() == CRYPT_E_ASN1_CORRUPT,
+ ok(!ret && GetLastError() == CRYPT_E_ASN1_CORRUPT,
"Expected CRYPT_E_ASN1_CORRUPT, got %08x\n", GetLastError());
/* with a real CRL entry */
ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED,
More information about the wine-cvs
mailing list