From a02f8ef1d2f4cd267224c9bc3b5e841d7fc943cc Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Wed, 18 Apr 2012 21:03:03 +0200 Subject: [PATCH] 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 --- libavcodec/h263dec.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 8669d14d14..50699c7695 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 */