Merge remote-tracking branch 'qatar/release/0.8' into release/0.10
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 29 Jul 2013 02:05:13 +0000 (04:05 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 29 Jul 2013 02:26:30 +0000 (04:26 +0200)
* qatar/release/0.8:
  swfdec: do better validation of tag length
  Changelog for 0.8.8
  kmvc: Clip pixel position to valid range
  kmvc: use fixed sized arrays in the context
  indeo: use a typedef for the mc function pointer
  lavc: check for overflow in init_get_bits
  indeo: check for reference when inheriting mvs
  indeo: use proper error code
  indeo: Properly forward the error codes
  wmapro: error out on impossible scale factor offsets
  wmapro: check the min_samples_per_subframe
  wmapro: return early on unsupported condition
  wmapro: check num_vec_coeffs against the actual available buffer

Conflicts:
Changelog
libavformat/swfdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
Changelog
libavcodec/get_bits.h
libavcodec/ivi_common.c
libavcodec/kmvc.c
libavcodec/wmaprodec.c
libavformat/swfdec.c

diff --cc Changelog
+++ b/Changelog
@@@ -1,11 -1,41 +1,38 @@@
  Entries are sorted chronologically from oldest to youngest within each release,
  releases are sorted from youngest to oldest.
  
 +version next:
  
 -version 0.8.8:
  
 +version 0.10.8
 -
 -
 -version 0.8.7:
 -
+ - kmvc: Clip pixel position to valid range
+ - kmvc: use fixed sized arrays in the context
+ - indeo: use a typedef for the mc function pointer
+ - lavc: check for overflow in init_get_bits
+ - mjpegdec: properly report unsupported disabled features
+ - jpegls: return meaningful errors
+ - jpegls: factorize return paths
+ - jpegls: check the scan offset
+ - wavpack: validate samples size parsed in wavpack_decode_block
+ - ljpeg: use the correct number of components in yuv
+ - mjpeg: Validate sampling factors
+ - mjpegdec: validate parameters in mjpeg_decode_scan_progressive_ac
+ - wavpack: check packet size early
+ - wavpack: return meaningful errors
+ - apetag: use int64_t for filesize
+ - tiff: do not overread the source buffer
+ - Prepare for 0.8.8 Release
+ - smacker: fix an off by one in huff.length computation
+ - smacker: check the return value of smacker_decode_tree
+ - smacker: pad the extradata allocation
+ - smacker: check frame size validity
+ - vmdav: convert to bytestream2
+ - 4xm: don't rely on get_buffer() initializing the frame.
+ - 4xm: check the return value of read_huffman_tables().
+ - 4xm: use the correct logging context
+ - 4xm: reject frames not compatible with the declared version
+ - 4xm: check bitstream_size boundary before using it
+ - 4xm: do not overread the source buffer in decode_p_block
  - avfiltergraph: check for sws opts being non-NULL before using them
  - bmv: check for len being valid in bmv_decode_frame()
  - dfa: check for invalid access in decode_wdlt()
@@@ -342,25 -344,35 +342,33 @@@ static inline int check_marker(GetBitCo
  }
  
  /**
-  * Inititalize GetBitContext.
-  * @param buffer bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE bytes larger than the actual read bits
-  * because some optimized bitstream readers read 32 or 64 bit at once and could read over the end
+  * Initialize GetBitContext.
+  * @param buffer bitstream buffer, must be FF_INPUT_BUFFER_PADDING_SIZE bytes
+  *        larger than the actual read bits because some optimized bitstream
+  *        readers read 32 or 64 bit at once and could read over the end
   * @param bit_size the size of the buffer in bits
+  * @return 0 on success, AVERROR_INVALIDDATA if the buffer_size would overflow.
   */
- static inline void init_get_bits(GetBitContext *s, const uint8_t *buffer,
-                                  int bit_size)
+ static inline int init_get_bits(GetBitContext *s, const uint8_t *buffer,
+                                 int bit_size)
  {
-     int buffer_size = (bit_size+7)>>3;
-     if (buffer_size < 0 || bit_size < 0) {
+     int buffer_size;
+     int ret = 0;
 -    if (bit_size > INT_MAX - 7 || bit_size <= 0) {
++    if (bit_size > INT_MAX - 7 || bit_size < 0) {
          buffer_size = bit_size = 0;
          buffer = NULL;
+         ret = AVERROR_INVALIDDATA;
      }
  
+     buffer_size = (bit_size + 7) >> 3;
      s->buffer       = buffer;
      s->size_in_bits = bit_size;
 -#if !UNCHECKED_BITSTREAM_READER
      s->size_in_bits_plus8 = bit_size + 8;
 -#endif
      s->buffer_end   = buffer + buffer_size;
      s->index        = 0;
+     return ret;
  }
  
  static inline void align_get_bits(GetBitContext *s)
Simple merge
Simple merge
Simple merge
@@@ -90,7 -90,11 +90,11 @@@ static int swf_read_packet(AVFormatCont
          uint64_t pos = avio_tell(pb);
          tag = get_swf_tag(pb, &len);
          if (tag < 0)
 -            return AVERROR(EIO);
 +            return tag;
+         if (len < 0) {
+             av_log(s, AV_LOG_ERROR, "invalid tag length: %d\n", len);
+             return AVERROR_INVALIDDATA;
+         }
          if (tag == TAG_VIDEOSTREAM) {
              int ch_id = avio_rl16(pb);
              len -= 2;