diff options
author | Fedor <fedor@mail.ru> | 2020-05-27 09:01:53 +0300 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-06-01 11:47:44 +0000 |
commit | b6db7da98af264b55161bc93e6020fe404cfc627 (patch) | |
tree | 27cf63e9febef29d260c153aca1eb1074a5175d6 /media/webrtc/signaling | |
parent | 9805ddc483efa19ea7e2846f41b9037ed139548c (diff) | |
download | UXP-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-x | media/webrtc/signaling/src/media-conduit/VideoConduit.cpp | 7 |
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. |