| Index: net/cert/internal/parse_certificate.cc
|
| diff --git a/net/cert/internal/parse_certificate.cc b/net/cert/internal/parse_certificate.cc
|
| index d9413b3b4d310a812d198b5be4c12f307df6d748..644734cfebe344b7c40a3b68bb688e532e83a0e3 100644
|
| --- a/net/cert/internal/parse_certificate.cc
|
| +++ b/net/cert/internal/parse_certificate.cc
|
| @@ -219,7 +219,9 @@ bool ParseCertificate(const der::Input& certificate_tlv,
|
| // extensions [3] EXPLICIT Extensions OPTIONAL
|
| // -- If present, version MUST be v3
|
| // }
|
| -bool ParseTbsCertificate(const der::Input& tbs_tlv, ParsedTbsCertificate* out) {
|
| +bool ParseTbsCertificate(const der::Input& tbs_tlv,
|
| + const ParseCertificateOptions& options,
|
| + ParsedTbsCertificate* out) {
|
| der::Parser parser(tbs_tlv);
|
|
|
| // Certificate ::= SEQUENCE {
|
| @@ -249,8 +251,10 @@ bool ParseTbsCertificate(const der::Input& tbs_tlv, ParsedTbsCertificate* out) {
|
| // serialNumber CertificateSerialNumber,
|
| if (!tbs_parser.ReadTag(der::kInteger, &out->serial_number))
|
| return false;
|
| - if (!VerifySerialNumber(out->serial_number))
|
| + if (!options.allow_invalid_serial_numbers &&
|
| + !VerifySerialNumber(out->serial_number)) {
|
| return false;
|
| + }
|
|
|
| // signature AlgorithmIdentifier,
|
| if (!ReadSequenceTLV(&tbs_parser, &out->signature_algorithm_tlv))
|
|
|