Bug 1335390 - prevent nul pointer dereference in parameter initialisation. r?baku draft
authorAndi-Bogdan Postelnicu <bpostelnicu@mozilla.com>
Wed, 01 Feb 2017 15:20:45 +0200
changeset 468954 4849477cca71255370ac6673e01d74132508ebfc
parent 468392 9c06e744b1befb3a2e2fdac7414ce18220774a1d
child 544070 9c0fae57948ec8202ec4b44b4616a70d2bc5ddff
push id43592
push userbmo:bpostelnicu@mozilla.com
push dateWed, 01 Feb 2017 13:21:30 +0000
reviewersbaku
bugs1335390
milestone54.0a1
Bug 1335390 - prevent nul pointer dereference in parameter initialisation. r?baku MozReview-Commit-ID: H2RrwojBug
dom/media/MediaFormatReader.cpp
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -786,33 +786,38 @@ TrackTypeToStr(TrackInfo::TrackType aTra
 MediaFormatReader::MediaFormatReader(AbstractMediaDecoder* aDecoder,
                                      MediaDataDemuxer* aDemuxer,
                                      VideoFrameContainer* aVideoFrameContainer)
   : MediaDecoderReader(aDecoder)
   , mAudio(this, MediaData::AUDIO_DATA,
            Preferences::GetUint("media.audio-max-decode-error", 3))
   , mVideo(this, MediaData::VIDEO_DATA,
            Preferences::GetUint("media.video-max-decode-error", 2))
-  , mDemuxer(new DemuxerProxy(aDemuxer, aDecoder->AbstractMainThread()))
+  , mDemuxer(nullptr)
   , mDemuxerInitDone(false)
   , mLastReportedNumDecodedFrames(0)
   , mPreviousDecodedKeyframeTime_us(sNoPreviousDecodedKeyframe)
   , mInitDone(false)
   , mTrackDemuxersMayBlock(false)
   , mSeekScheduled(false)
   , mVideoFrameContainer(aVideoFrameContainer)
   , mDecoderFactory(new DecoderFactory(this))
 {
   MOZ_ASSERT(aDemuxer);
   MOZ_COUNT_CTOR(MediaFormatReader);
 
-  if (aDecoder && aDecoder->CompositorUpdatedEvent()) {
-    mCompositorUpdatedListener =
-      aDecoder->CompositorUpdatedEvent()->Connect(
-        mTaskQueue, this, &MediaFormatReader::NotifyCompositorUpdated);
+  if (aDecoder) {
+    mDemuxer = MakeUnique<DemuxerProxy>(aDemuxer,
+      aDecoder->AbstractMainThread());
+
+    if (aDecoder->CompositorUpdatedEvent()) {
+      mCompositorUpdatedListener =
+        aDecoder->CompositorUpdatedEvent()->Connect(
+          mTaskQueue, this, &MediaFormatReader::NotifyCompositorUpdated);
+    }
   }
 }
 
 MediaFormatReader::~MediaFormatReader()
 {
   MOZ_COUNT_DTOR(MediaFormatReader);
 }