From 3192f6feedfeb689c7003f2984db2aae71e93714 Mon Sep 17 00:00:00 2001 From: derekjchow Date: Thu, 10 Mar 2016 21:20:12 -0800 Subject: [Chromecast] Fix potential nullptr dereference. Guard call to SetStreamTypeVolume in MediaPipelineBackendWrapper with a check for audio_decoder_wrapper_. An audio decoder wrapper is not guarenteed to be initialized. Also adds DCHECKs to enforce correct API usage of Create*Decoder and Initialize. R=halliwell@chromium.org BUG=internal b/27596803 TEST=Play video content with no audio track Review URL: https://codereview.chromium.org/1786563002 Cr-Commit-Position: refs/heads/master@{#380522} --- chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'chromecast') diff --git a/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc b/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc index 447981f..ef86099 100644 --- a/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc +++ b/chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc @@ -28,6 +28,7 @@ MediaPipelineBackendWrapper::~MediaPipelineBackendWrapper() { MediaPipelineBackend::AudioDecoder* MediaPipelineBackendWrapper::CreateAudioDecoder() { + DCHECK(!is_initialized_); if (audio_decoder_wrapper_) return nullptr; @@ -38,12 +39,14 @@ MediaPipelineBackendWrapper::CreateAudioDecoder() { MediaPipelineBackend::VideoDecoder* MediaPipelineBackendWrapper::CreateVideoDecoder() { + DCHECK(!is_initialized_); return backend_->CreateVideoDecoder(); } bool MediaPipelineBackendWrapper::Initialize() { + DCHECK(!is_initialized_); is_initialized_ = backend_->Initialize(); - if (is_initialized_) + if (is_initialized_ && audio_decoder_wrapper_) audio_decoder_wrapper_->SetStreamTypeVolume(stream_type_volume_); return is_initialized_; -- cgit v1.1