ff_alloc_picture: free tables in case of dimension mismatches
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 11 Mar 2013 20:29:14 +0000 (21:29 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 12 Mar 2013 02:23:55 +0000 (03:23 +0100)
Fixes memory corruption
In theory this should not be needed but its better to check at
one place than to hope 50 other places set the flags correctly

libavcodec/mpegvideo.c

index 9fe93bf..d0c8262 100644 (file)
@@ -411,6 +411,11 @@ int ff_alloc_picture(MpegEncContext *s, Picture *pic, int shared)
 {
     int i, ret;
 
 {
     int i, ret;
 
+    if (pic->qscale_table_buf)
+        if (pic->mbskip_table_buf->size < s->mb_stride * s->mb_height + 2 ||
+            pic->qscale_table_buf->size < s->mb_stride * (s->mb_height + 1) + 1 + s->mb_stride)
+            free_picture_tables(pic);
+
     if (shared) {
         assert(pic->f.data[0]);
         pic->shared = 1;
     if (shared) {
         assert(pic->f.data[0]);
         pic->shared = 1;