Skip to content

Commit 124d7c3

Browse files
henbosWebRTC LUCI CQ
authored andcommitted
[Stats] Handle the case of missing certificates.
Certificates being missing is a sign of a bug (e.g. webrtc:14844, to be fixed separately) which is why we have a DCHECK. But this DCHECK does not protect against accessing the invalid iterator if it is a release build. This CL makes that safe. Bug: chromium:1408392 Change-Id: I97a82786028e41c58ef8ef15002c3f959bbec7f1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291109 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/main@{#39159}
1 parent bf27f35 commit 124d7c3

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

pc/rtc_stats_collector.cc

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2209,16 +2209,17 @@ void RTCStatsCollector::ProduceTransportStats_n(
22092209
// exist.
22102210
const auto& certificate_stats_it =
22112211
transport_cert_stats.find(transport_name);
2212+
std::string local_certificate_id, remote_certificate_id;
22122213
RTC_DCHECK(certificate_stats_it != transport_cert_stats.cend());
2213-
std::string local_certificate_id;
2214-
if (certificate_stats_it->second.local) {
2215-
local_certificate_id = RTCCertificateIDFromFingerprint(
2216-
certificate_stats_it->second.local->fingerprint);
2217-
}
2218-
std::string remote_certificate_id;
2219-
if (certificate_stats_it->second.remote) {
2220-
remote_certificate_id = RTCCertificateIDFromFingerprint(
2221-
certificate_stats_it->second.remote->fingerprint);
2214+
if (certificate_stats_it != transport_cert_stats.cend()) {
2215+
if (certificate_stats_it->second.local) {
2216+
local_certificate_id = RTCCertificateIDFromFingerprint(
2217+
certificate_stats_it->second.local->fingerprint);
2218+
}
2219+
if (certificate_stats_it->second.remote) {
2220+
remote_certificate_id = RTCCertificateIDFromFingerprint(
2221+
certificate_stats_it->second.remote->fingerprint);
2222+
}
22222223
}
22232224

22242225
// There is one transport stats for each channel.

0 commit comments

Comments
 (0)