From 8ef1d7b1f93fbed0f14e7c92adf978b715a7ac5a Mon Sep 17 00:00:00 2001 From: Mirta Dvornicic Date: Mon, 22 Feb 2021 12:23:42 +0100 Subject: [PATCH] Add a missing lock in VideoBroadcaster::OnDiscardedFrame(). VideoBroadcaster is marked as thread-safe, but that is currently not the case as OnDiscardedFrame() iterates through an std::vector of sinks in VideoSourceBase that is not thread-safe and elements of that std::vector are added/removed in AddOrUpdateSink()/RemoveSink() that could be called on a different thread. Bug: None Change-Id: I5b61127f7ea6ce7f1322c5e770ab56643d7bd0d3 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208404 Reviewed-by: Ilya Nikolaevskiy Commit-Queue: Mirta Dvornicic Cr-Commit-Position: refs/heads/master@{#33313} --- media/base/video_broadcaster.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/media/base/video_broadcaster.cc b/media/base/video_broadcaster.cc index e6a91368fc..3c20eca963 100644 --- a/media/base/video_broadcaster.cc +++ b/media/base/video_broadcaster.cc @@ -94,6 +94,7 @@ void VideoBroadcaster::OnFrame(const webrtc::VideoFrame& frame) { } void VideoBroadcaster::OnDiscardedFrame() { + webrtc::MutexLock lock(&sinks_and_wants_lock_); for (auto& sink_pair : sink_pairs()) { sink_pair.sink->OnDiscardedFrame(); }