diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-04-18 21:03:03 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-04-18 21:21:28 +0200 |
commit | a02f8ef1d2f4cd267224c9bc3b5e841d7fc943cc (patch) | |
tree | d795b55b0e2a2eef5ad4d51a5f738fd991681d46 /libavcodec/h263dec.c | |
parent | 601d072e68fb2967e561980336bea0b0625e629e (diff) | |
download | ffmpeg-streaming-a02f8ef1d2f4cd267224c9bc3b5e841d7fc943cc.zip ffmpeg-streaming-a02f8ef1d2f4cd267224c9bc3b5e841d7fc943cc.tar.gz |
h263dec: Prevent dimension changes from leaking on errors in header parsing.
This fixes crashes with frame threads caused by inconsistent context parameters.
Fixes Ticket1207
Found-by: John Villamil
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/h263dec.c')
-rw-r--r-- | libavcodec/h263dec.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 8669d14..50699c7 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -438,6 +438,14 @@ retry: ret = ff_h263_decode_picture_header(s); } + if (HAVE_THREADS && (s->avctx->active_thread_type&FF_THREAD_FRAME) && ret < 0) { + if ( s->width != avctx->coded_width + || s->height != avctx->coded_height) { + av_log(s->avctx, AV_LOG_WARNING, "Reverting picture dimensions change due to header decoding failure\n"); + s->width = avctx->coded_width; + s->height= avctx->coded_height; + } + } if(ret==FRAME_SKIPPED) return get_consumed_bytes(s, buf_size); /* skip if the header was thrashed */ |