[external/conscrypt] Prevent duplicate certificates in TrustedCertificateIndex

With the separate caching of intermediate certificates in
TrustManagerImpl a given intermediate may be passed into .index multiple
times. Avoid adding the certificate to the list each time.

(cherry-picked from commit d080e064abba665e2dde2a8c113f837ba4d9a85e)
Bug: 26232830
Change-Id: I6bed2c65d9e42e052b9b1b129200a997e7dca745
(cherry picked from commit 4c9f9c2201116acf790fca25af43995d29980ee0)
This commit is contained in:
Firefly
2015-12-20 20:49:24 -08:00
committed by cjp
parent 3c6c8f1953
commit f4e4b93cbb

View File

@ -68,6 +68,15 @@ public final class TrustedCertificateIndex {
if (anchors == null) {
anchors = new ArrayList<TrustAnchor>(1);
subjectToTrustAnchors.put(subject, anchors);
} else {
// Avoid indexing the same certificate multiple times
if (cert != null) {
for (TrustAnchor entry : anchors) {
if (cert.equals(entry.getTrustedCert())) {
return;
}
}
}
}
anchors.add(anchor);
}