From: Simon Josefsson Date: Tue, 12 Sep 2006 13:11:23 +0000 (+0000) Subject: Permit empty parameters field too, found after adding self tests. X-Git-Tag: gnutls_1_5_1~27 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b463a58f0b6f5bc41922791eae1fa2f1eaf2fbe4;p=thirdparty%2Fgnutls.git Permit empty parameters field too, found after adding self tests. --- diff --git a/lib/x509/verify.c b/lib/x509/verify.c index 853d4ade41..b8080333ba 100644 --- a/lib/x509/verify.c +++ b/lib/x509/verify.c @@ -507,11 +507,15 @@ decode_ber_digest_info (const gnutls_datum_t * info, len = sizeof (str) - 1; result = asn1_read_value (dinfo, "digestAlgorithm.parameters", str, &len); - if (result != ASN1_ELEMENT_NOT_FOUND) + /* To avoid permitting garbage in the parameters field, either the + parameters field is not present, or it contains 0x05 0x00. */ + if (!(result == ASN1_ELEMENT_NOT_FOUND || + (result == ASN1_SUCCESS && len == 2 && + str[0] == 0x05 && str[1] == 0x00))) { gnutls_assert (); asn1_delete_structure (&dinfo); - return _gnutls_asn2err (result); + return GNUTLS_E_ASN1_GENERIC_ERROR; } result = asn1_read_value (dinfo, "digest", digest, digest_size);