Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 30 Mar 2012 04:03:30 +0000 (06:03 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 30 Mar 2012 04:05:39 +0000 (06:05 +0200)
* qatar/master:
  mp3dec: perform I/S and M/S only when frame mode is joint stereo.
  id3v2: add another mimetype for JPEG image
  lzw: prevent buffer overreads.
  WMAL: Remove inaccurate and unnecessary doxy
  h264: fix cabac-on-stack after safe cabac reader.
  truemotion2: convert packet header reading to bytestream2.

Conflicts:
libavcodec/lzw.c
libavcodec/truemotion2.c
libavformat/id3v2.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/lzw.c
libavcodec/mpegaudiodec.c
libavcodec/truemotion2.c
libavcodec/wmalosslessdec.c
libavformat/id3v2.c

Simple merge
Simple merge
@@@ -251,18 -249,14 +252,19 @@@ static int tm2_read_deltas(TM2Context *
  static int tm2_read_stream(TM2Context *ctx, const uint8_t *buf, int stream_id, int buf_size)
  {
      int i;
-     int cur = 0;
      int skip = 0;
-     int len, toks;
+     int len, toks, pos;
      TM2Codes codes;
+     GetByteContext gb;
  
-         return -1;
 +    if (buf_size < 4) {
 +        av_log(ctx->avctx, AV_LOG_ERROR, "not enough space for len left\n");
++        return AVERROR_INVALIDDATA;
 +    }
 +
      /* get stream length in dwords */
-     len = AV_RB32(buf); buf += 4; cur += 4;
+     bytestream2_init(&gb, buf, buf_size);
+     len  = bytestream2_get_be32(&gb);
      skip = len * 4 + 4;
  
      if(len == 0)
@@@ -805,8 -794,13 +809,12 @@@ static int decode_frame(AVCodecContext 
      }
  
      for(i = 0; i < TM2_NUM_STREAMS; i++){
 -            av_free(swbuf);
+         if (skip >= buf_size) {
 -        t = tm2_read_stream(l, swbuf + skip, tm2_stream_order[i], buf_size - skip);
++            av_log(avctx, AV_LOG_ERROR, "no space for tm2_read_stream\n");
+             return AVERROR_INVALIDDATA;
+         }
 +        t = tm2_read_stream(l, l->buffer + skip, tm2_stream_order[i], buf_size - skip);
          if(t == -1){
 -            av_free(swbuf);
              return -1;
          }
          skip += t;
Simple merge
Simple merge