Merge commit '486c45767587151b517bb6fde602d43d178da203' into release/0.10
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 16 Jan 2014 20:47:09 +0000 (21:47 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 16 Jan 2014 20:50:17 +0000 (21:50 +0100)
* commit '486c45767587151b517bb6fde602d43d178da203':
  mpc8: Check the seek table size parsed from the bitstream
  zmbvdec: Check the buffer size for uncompressed data
  ape: Don't allow the seektable to be omitted
  shorten: Break out of loop looking for fmt chunk if none is found
  shorten: Use a checked bytestream reader for the wave header
  smacker: Make sure we don't fill in huffman codes out of range

Conflicts:
libavcodec/shorten.c
libavcodec/smacker.c
libavcodec/zmbv.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/shorten.c
libavcodec/smacker.c
libavcodec/zmbv.c
libavformat/ape.c
libavformat/mpc8.c

Simple merge
Simple merge
@@@ -484,26 -483,26 +484,29 @@@ static int decode_frame(AVCodecContext 
          if (zret != Z_OK) {
              av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret);
              return -1;
 -         }
 +        }
  
 -         c->cur  = av_realloc(c->cur, avctx->width * avctx->height * (c->bpp / 8));
 -         c->prev = av_realloc(c->prev, avctx->width * avctx->height * (c->bpp / 8));
 -         c->bx = (c->width + c->bw - 1) / c->bw;
 -         c->by = (c->height+ c->bh - 1) / c->bh;
 -     }
 +        c->cur  = av_realloc_f(c->cur, avctx->width * avctx->height,  (c->bpp / 8));
 +        c->prev = av_realloc_f(c->prev, avctx->width * avctx->height,  (c->bpp / 8));
 +        c->bx = (c->width + c->bw - 1) / c->bw;
 +        c->by = (c->height+ c->bh - 1) / c->bh;
 +        if (!c->cur || !c->prev)
 +            return -1;
 +        c->decode_intra= decode_intra;
 +    }
  
 -     if (c->decode_intra == NULL) {
 -         av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n");
 -         return -1;
 -     }
 +    if (c->decode_intra == NULL) {
 +        av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no keyframe!\n");
 +        return -1;
 +    }
  
-     if (c->comp == 0) { //Uncompressed data
-         memcpy(c->decomp_buf, buf, len);
-         c->decomp_size = 1;
-     } else { // ZLIB-compressed data
+      if (c->comp == 0) { //Uncompressed data
+          if (c->decomp_size < len) {
+              av_log(avctx, AV_LOG_ERROR, "Buffer too small\n");
+              return AVERROR_INVALIDDATA;
+          }
+          memcpy(c->decomp_buf, buf, len);
+      } else { // ZLIB-compressed data
          c->zstream.total_in = c->zstream.total_out = 0;
          c->zstream.next_in = buf;
          c->zstream.avail_in = len;
Simple merge
Simple merge