From 709fecac83c86de956befbfcc029da1dba332a6d Mon Sep 17 00:00:00 2001 From: Adrian Grange <agrange@google.com> Date: Mon, 24 Feb 2014 10:15:21 -0800 Subject: [PATCH] Trap request to display non-existant frame If show_existing_frame indicates that the decoder should display an existing (previously decoded) frame, add a check to make sure that the signaled buffer does contain a valid decoded frame. Change-Id: Iac8c686b321827414d69a3f2d0467566911bcba2 --- vp9/decoder/vp9_decodeframe.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c index 791d0f2e74..4f3aca1d2b 100644 --- a/vp9/decoder/vp9_decodeframe.c +++ b/vp9/decoder/vp9_decodeframe.c @@ -1120,6 +1120,12 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi, if (cm->show_existing_frame) { // Show an existing frame directly. const int frame_to_show = cm->ref_frame_map[vp9_rb_read_literal(rb, 3)]; + + if (cm->frame_bufs[frame_to_show].ref_count < 1) + vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM, + "Buffer %d does not contain a decoded frame", + frame_to_show); + ref_cnt_fb(cm->frame_bufs, &cm->new_fb_idx, frame_to_show); pbi->refresh_frame_flags = 0; cm->lf.filter_level = 0; -- GitLab