]> granicus.if.org Git - libvpx/commitdiff
Trap request to display non-existant frame
authorAdrian Grange <agrange@google.com>
Mon, 24 Feb 2014 18:15:21 +0000 (10:15 -0800)
committerAdrian Grange <agrange@google.com>
Mon, 24 Feb 2014 18:19:31 +0000 (10:19 -0800)
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

index 791d0f2e7424d3d6afe82ed478d51326916c4d3c..4f3aca1d2b13ad0d317ef86a4fdd7b6759730adc 100644 (file)
@@ -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;