summaryrefslogtreecommitdiffstats
path: root/media/webrtc/signaling
diff options
context:
space:
mode:
authorFedor <fedor@mail.ru>2020-05-27 09:01:53 +0300
committerMoonchild <moonchild@palemoon.org>2020-06-01 11:47:44 +0000
commitb6db7da98af264b55161bc93e6020fe404cfc627 (patch)
tree27cf63e9febef29d260c153aca1eb1074a5175d6 /media/webrtc/signaling
parent9805ddc483efa19ea7e2846f41b9037ed139548c (diff)
downloadUXP-b6db7da98af264b55161bc93e6020fe404cfc627.tar
UXP-b6db7da98af264b55161bc93e6020fe404cfc627.tar.gz
UXP-b6db7da98af264b55161bc93e6020fe404cfc627.tar.lz
UXP-b6db7da98af264b55161bc93e6020fe404cfc627.tar.xz
UXP-b6db7da98af264b55161bc93e6020fe404cfc627.zip
Issue #1558 - Prevent null deref crash in WebrtcVideoConduit DTOR
Diffstat (limited to 'media/webrtc/signaling')
-rwxr-xr-xmedia/webrtc/signaling/src/media-conduit/VideoConduit.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/media/webrtc/signaling/src/media-conduit/VideoConduit.cpp b/media/webrtc/signaling/src/media-conduit/VideoConduit.cpp
index b406fded5..95f599be4 100755
--- a/media/webrtc/signaling/src/media-conduit/VideoConduit.cpp
+++ b/media/webrtc/signaling/src/media-conduit/VideoConduit.cpp
@@ -521,6 +521,8 @@ WebrtcVideoConduit::DeleteStreams()
mVideoCodecStat->EndOfCallStats();
}
mVideoCodecStat = nullptr;
+ //This does Release AudioConduit before mPtrViEBase set nullptr.
+ SyncTo(nullptr);
// We can't delete the VideoEngine until all these are released!
// And we can't use a Scoped ptr, since the order is arbitrary
mPtrViEBase = nullptr;
@@ -543,6 +545,11 @@ WebrtcVideoConduit::SyncTo(WebrtcAudioConduit *aConduit)
{
CSFLogDebug(logTag, "%s Synced to %p", __FUNCTION__, aConduit);
+ if (!mPtrViEBase) {
+ // ViEBase has already been released; we no longer have a conduit.
+ mSyncedTo = nullptr;
+ return;
+ }
// SyncTo(value) syncs to the AudioConduit, and if already synced replaces
// the current sync target. SyncTo(nullptr) cancels any existing sync and
// releases the strong ref to AudioConduit.