diff options
author | derekjchow <derekjchow@chromium.org> | 2016-03-10 21:20:12 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-11 05:21:50 +0000 |
commit | 3192f6feedfeb689c7003f2984db2aae71e93714 (patch) | |
tree | be06c55106e3fac13723b4b4629d02e400b7c951 /chromecast | |
parent | 51f7d244880eb22d403f2c9731c0e733541ab632 (diff) | |
download | chromium_src-3192f6feedfeb689c7003f2984db2aae71e93714.zip chromium_src-3192f6feedfeb689c7003f2984db2aae71e93714.tar.gz chromium_src-3192f6feedfeb689c7003f2984db2aae71e93714.tar.bz2 |
[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}
Diffstat (limited to 'chromecast')
-rw-r--r-- | chromecast/media/cma/backend/media_pipeline_backend_wrapper.cc | 5 |
1 files changed, 4 insertions, 1 deletions
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_; |