From be7544be237b279e45be73963e84ab59916b8ac2 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 8 Dec 2015 10:04:10 -0500 Subject: [PATCH] crypto/x509: handle CRLDistributionPoints without FullNames Fixes #12910. Change-Id: If446e5dce236483bbb898cc5959baf8371f05142 Reviewed-on: https://go-review.googlesource.com/17550 Reviewed-by: Brad Fitzpatrick Reviewed-by: Adam Langley --- src/crypto/x509/x509.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/crypto/x509/x509.go b/src/crypto/x509/x509.go index 948565ce3e..d9288bb30e 100644 --- a/src/crypto/x509/x509.go +++ b/src/crypto/x509/x509.go @@ -1048,7 +1048,7 @@ func parseCertificate(in *certificate) (*Certificate, error) { } case 31: - // RFC 5280, 4.2.1.14 + // RFC 5280, 4.2.1.13 // CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint // @@ -1069,6 +1069,11 @@ func parseCertificate(in *certificate) (*Certificate, error) { } for _, dp := range cdp { + // Per RFC 5280, 4.2.1.13, one of distributionPoint or cRLIssuer may be empty. + if len(dp.DistributionPoint.FullName.Bytes) == 0 { + continue + } + var n asn1.RawValue if _, err := asn1.Unmarshal(dp.DistributionPoint.FullName.Bytes, &n); err != nil { return nil, err -- 2.50.0