Index: net/cert/x509_util_nss.cc |
diff --git a/net/cert/x509_util_nss.cc b/net/cert/x509_util_nss.cc |
index 2988417673b0a2fadb044217032857bee4f7a15d..1175bd8054d27c9d56568de2e3a5650187e771fd 100644 |
--- a/net/cert/x509_util_nss.cc |
+++ b/net/cert/x509_util_nss.cc |
@@ -89,7 +89,7 @@ CERTName* CreateCertNameFromEncoded(PLArenaPool* arena, |
namespace x509_util { |
-void ParsePrincipal(CERTName* name, CertPrincipal* principal) { |
+bool ParsePrincipal(CERTName* name, CertPrincipal* principal) { |
// Starting in NSS 3.15, CERTGetNameFunc takes a const CERTName* argument. |
#if NSS_VMINOR >= 15 |
typedef char* (*CERTGetNameFunc)(const CERTName* name); |
@@ -120,7 +120,7 @@ void ParsePrincipal(CERTName* name, CertPrincipal* principal) { |
if (kOIDs[oid] == tag) { |
SECItem* decode_item = CERT_DecodeAVAValue(&avas[pair]->value); |
if (!decode_item) |
- break; |
+ return false; |
// TODO(wtc): Pass decode_item to CERT_RFC1485_EscapeAndQuote. |
std::string value(reinterpret_cast<char*>(decode_item->data), |
decode_item->len); |
@@ -145,13 +145,17 @@ void ParsePrincipal(CERTName* name, CertPrincipal* principal) { |
PORT_Free(value); |
} |
} |
+ |
+ return true; |
} |
-void ParseDate(const SECItem* der_date, base::Time* result) { |
+bool ParseDate(const SECItem* der_date, base::Time* result) { |
PRTime prtime; |
SECStatus rv = DER_DecodeTimeChoice(&prtime, der_date); |
- DCHECK_EQ(SECSuccess, rv); |
+ if (rv != SECSuccess) |
+ return false; |
*result = crypto::PRTimeToBaseTime(prtime); |
+ return true; |
} |
std::string ParseSerialNumber(const CERTCertificate* certificate) { |