[FFmpeg-cvslog] vaapi: do not assert on value read from input bitstream

Diego Biurrun git at videolan.org
Sat Jul 16 19:49:07 CEST 2011


ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Fri Jul 15 01:06:16 2011 +0200| [f20418c3491b745b0f82e6eb1a7debae4cfff126] | committer: Diego Biurrun

vaapi: do not assert on value read from input bitstream

User-provided data should never trigger an assert; return error instead.
Also fix an instance of get_bits where get_bits_long should have been used.

This eliminates the following warning:
libavcodec/vaapi_mpeg2.c:112:14: warning: variable 'start_code' set but not used

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f20418c3491b745b0f82e6eb1a7debae4cfff126
---

 libavcodec/vaapi_mpeg2.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c
index 561f4bf..b608246 100644
--- a/libavcodec/vaapi_mpeg2.c
+++ b/libavcodec/vaapi_mpeg2.c
@@ -109,14 +109,14 @@ static int vaapi_mpeg2_decode_slice(AVCodecContext *avctx, const uint8_t *buffer
     MpegEncContext * const s = avctx->priv_data;
     VASliceParameterBufferMPEG2 *slice_param;
     GetBitContext gb;
-    uint32_t start_code, quantiser_scale_code, intra_slice_flag, macroblock_offset;
+    uint32_t quantiser_scale_code, intra_slice_flag, macroblock_offset;
 
     av_dlog(avctx, "vaapi_mpeg2_decode_slice(): buffer %p, size %d\n", buffer, size);
 
     /* Determine macroblock_offset */
     init_get_bits(&gb, buffer, 8 * size);
-    start_code = get_bits(&gb, 32);
-    assert((start_code & 0xffffff00) == 0x00000100);
+    if (get_bits_long(&gb, 32) >> 8 != 1) /* start code */
+        return AVERROR_INVALIDDATA;
     quantiser_scale_code = get_bits(&gb, 5);
     intra_slice_flag = get_bits1(&gb);
     if (intra_slice_flag) {



More information about the ffmpeg-cvslog mailing list