Chromium Code Reviews| Index: net/base/crl_set.cc |
| diff --git a/net/base/crl_set.cc b/net/base/crl_set.cc |
| index 5b28be752d9ec3e345120e3ebabe7aeeac110af6..b76fd87e0b52422bc7178bd6f87466369de0b119 100644 |
| --- a/net/base/crl_set.cc |
| +++ b/net/base/crl_set.cc |
| @@ -408,6 +408,18 @@ bool CRLSet::ApplyDelta(base::StringPiece data, |
| CRLSet::Result CRLSet::CheckCertificate( |
| const base::StringPiece& serial_number, |
| const base::StringPiece& parent_spki) const { |
| + base::StringPiece serial(serial_number); |
| + |
| + if (!serial.empty() && serial[0] >= 0x80) { |
| + // This serial number is negative but the process which generates CRL sets |
| + // will reject any certificates with negative serial numbers as invalid. |
| + return UNKNOWN; |
| + } |
| + |
| + // Remove any leading zero bytes. |
| + while (!serial.empty() && serial[0] == 0x00) |
|
wtc
2011/10/25 21:14:44
BUG(?): !serial.empty() => serial.size() > 1
to av
agl
2011/10/28 20:29:07
Done.
|
| + serial.remove_prefix(1); |
| + |
| std::map<std::string, size_t>::const_iterator i = |
| crls_index_by_issuer_.find(parent_spki.as_string()); |
| if (i == crls_index_by_issuer_.end()) |