Skip to content

Commit e0efbd4

Browse files
henbosWebRTC LUCI CQ
authored andcommitted
[Merge-110] [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. # Mobile bots not running properly NOTRY=True (cherry picked from commit 124d7c3) Bug: chromium:1408392 Change-Id: I97a82786028e41c58ef8ef15002c3f959bbec7f1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291109 Reviewed-by: Mirko Bonadei <[email protected]> Commit-Queue: Henrik Boström <[email protected]> Cr-Original-Commit-Position: refs/heads/main@{#39159} Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291380 Cr-Commit-Position: refs/branch-heads/5481@{#2} Cr-Branched-From: 2e1a9a4-refs/heads/main@{#38901}
1 parent dc7333f commit e0efbd4

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
@@ -2192,16 +2192,17 @@ void RTCStatsCollector::ProduceTransportStats_n(
21922192
// exist.
21932193
const auto& certificate_stats_it =
21942194
transport_cert_stats.find(transport_name);
2195+
std::string local_certificate_id, remote_certificate_id;
21952196
RTC_DCHECK(certificate_stats_it != transport_cert_stats.cend());
2196-
std::string local_certificate_id;
2197-
if (certificate_stats_it->second.local) {
2198-
local_certificate_id = RTCCertificateIDFromFingerprint(
2199-
certificate_stats_it->second.local->fingerprint);
2200-
}
2201-
std::string remote_certificate_id;
2202-
if (certificate_stats_it->second.remote) {
2203-
remote_certificate_id = RTCCertificateIDFromFingerprint(
2204-
certificate_stats_it->second.remote->fingerprint);
2197+
if (certificate_stats_it != transport_cert_stats.cend()) {
2198+
if (certificate_stats_it->second.local) {
2199+
local_certificate_id = RTCCertificateIDFromFingerprint(
2200+
certificate_stats_it->second.local->fingerprint);
2201+
}
2202+
if (certificate_stats_it->second.remote) {
2203+
remote_certificate_id = RTCCertificateIDFromFingerprint(
2204+
certificate_stats_it->second.remote->fingerprint);
2205+
}
22052206
}
22062207

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

0 commit comments

Comments
 (0)