[FFmpeg-cvslog] h264: improve checks before calling ff_h264_decode_extradata

Alexander Strasser git at videolan.org
Sun Sep 25 17:20:25 CEST 2011


ffmpeg | branch: master | Alexander Strasser <eclipse7 at gmx.net> | Sat Sep 24 18:23:38 2011 +0200| [baad01d8b4bfe63c7c4e571ed553f7845d78d9c0] | committer: Alexander Strasser

h264: improve checks before calling ff_h264_decode_extradata

  The ff_h264_decode_extradata routine now checks for the buffer size
and pointer internally. This makes it possible to remove the external
checks in ff_h264_decode_init.

  In decode_frame there was a size check missing because the buffer
gets tested prior to the invocation of ff_h264_decode_extradata().

Signed-off-by: Alexander Strasser <eclipse7 at gmx.net>

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

 libavcodec/h264.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 1924f36..7d16688 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -1083,8 +1083,7 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx){
         avctx->ticks_per_frame = 2;
     }
 
-    if(avctx->extradata_size > 0 && avctx->extradata &&
-        ff_h264_decode_extradata(h, avctx->extradata, avctx->extradata_size))
+    if(ff_h264_decode_extradata(h, avctx->extradata, avctx->extradata_size))
         return -1;
 
     if(h->sps.bitstream_restriction_flag && s->avctx->has_b_frames < h->sps.num_reorder_frames){
@@ -3918,7 +3917,7 @@ static int decode_frame(AVCodecContext *avctx,
 
         return 0;
     }
-    if(h->is_avc && AV_RB32(buf)==0x0164001F && buf[5] && buf[8]==0x67)
+    if(h->is_avc && buf_size >= 9 && AV_RB32(buf)==0x0164001F && buf[5] && buf[8]==0x67)
         return ff_h264_decode_extradata(h, buf, buf_size);
 
     buf_index=decode_nal_units(h, buf, buf_size);



More information about the ffmpeg-cvslog mailing list