summaryrefslogtreecommitdiffstats
path: root/chromecast
diff options
context:
space:
mode:
authorderekjchow <derekjchow@chromium.org>2016-03-10 21:20:12 -0800
committerCommit bot <commit-bot@chromium.org>2016-03-11 05:21:50 +0000
commit3192f6feedfeb689c7003f2984db2aae71e93714 (patch)
treebe06c55106e3fac13723b4b4629d02e400b7c951 /chromecast
parent51f7d244880eb22d403f2c9731c0e733541ab632 (diff)
downloadchromium_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.cc5
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_;