aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/h263dec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-04-18 21:03:03 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-04-18 21:21:28 +0200
commita02f8ef1d2f4cd267224c9bc3b5e841d7fc943cc (patch)
treed795b55b0e2a2eef5ad4d51a5f738fd991681d46 /libavcodec/h263dec.c
parent601d072e68fb2967e561980336bea0b0625e629e (diff)
downloadffmpeg-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.c8
1 files changed, 8 insertions, 0 deletions
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 */