From ee414d90b046e3e7feb4130b0567091a43c36702 Mon Sep 17 00:00:00 2001 From: philipel Date: Tue, 29 Nov 2016 07:01:23 -0800 Subject: [PATCH] Added sanity check to VCMDecodingState::UsingFlexibleMode to prevent OOB error. BUG=chromium:667504 Review-Url: https://codereview.webrtc.org/2534883003 Cr-Commit-Position: refs/heads/master@{#15298} --- webrtc/modules/video_coding/decoding_state.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/webrtc/modules/video_coding/decoding_state.cc b/webrtc/modules/video_coding/decoding_state.cc index 229555287c..0c45ae3b39 100644 --- a/webrtc/modules/video_coding/decoding_state.cc +++ b/webrtc/modules/video_coding/decoding_state.cc @@ -291,8 +291,15 @@ bool VCMDecodingState::UsingPictureId(const VCMFrameBuffer* frame) const { } bool VCMDecodingState::UsingFlexibleMode(const VCMFrameBuffer* frame) const { - return frame->CodecSpecific()->codecType == kVideoCodecVP9 && - frame->CodecSpecific()->codecSpecific.VP9.flexible_mode; + bool is_flexible_mode = + frame->CodecSpecific()->codecType == kVideoCodecVP9 && + frame->CodecSpecific()->codecSpecific.VP9.flexible_mode; + if (is_flexible_mode && frame->PictureId() == kNoPictureId) { + LOG(LS_WARNING) << "Frame is marked as using flexible mode but no" + << "picture id is set."; + return false; + } + return is_flexible_mode; } // TODO(philipel): change how check work, this check practially