diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-07-21 19:34:28 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-07-22 02:48:13 +0200 |
commit | 682e8a694f6ce0fd83af73b828593d99412ad928 (patch) | |
tree | 467cdd9a669e16f844b51cb58f0164cea3bd014c /libavcodec/h264_sei.c | |
parent | f9f7f4c9bbd180ea80ffc31d187ceb4b68e94d90 (diff) | |
download | ffmpeg-682e8a694f6ce0fd83af73b828593d99412ad928.tar.gz |
avcodec/h264_sei: Try to make code more robust by jumping to the specified SEI ends
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/h264_sei.c')
-rw-r--r-- | libavcodec/h264_sei.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index 9c97c185c2..999fce7b34 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -245,7 +245,7 @@ static int decode_frame_packing(H264Context *h, int size){ int ff_h264_decode_sei(H264Context *h){ while (get_bits_left(&h->gb) > 16) { int type; - unsigned size; + unsigned size, next; type=0; do{ @@ -268,6 +268,7 @@ int ff_h264_decode_sei(H264Context *h){ av_log(h->avctx, AV_LOG_ERROR, "SEI truncated\n"); return AVERROR_INVALIDDATA; } + next = get_bits_count(&h->gb) + 8*size; switch(type){ case SEI_TYPE_PIC_TIMING: // Picture timing SEI @@ -293,9 +294,8 @@ int ff_h264_decode_sei(H264Context *h){ case SEI_TYPE_FRAME_PACKING: if(decode_frame_packing(h, size) < 0) return -1; - default: - skip_bits_long(&h->gb, 8*size); } + skip_bits_long(&h->gb, next - get_bits_count(&h->gb)); //FIXME check bits here align_get_bits(&h->gb); |