Merge remote-tracking branch 'qatar/release/0.8' into release/0.10
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 4 Jun 2012 11:40:13 +0000 (13:40 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 4 Jun 2012 11:40:13 +0000 (13:40 +0200)
* qatar/release/0.8:
  Update Changelog for the 0.8.3 Release
  Prepare for 0.8.3 Release
  ea: check chunk_size for validity.
  png: check bit depth for PAL8/Y400A pixel formats.
  qdm2: clip array indices returned by qdm2_get_vlc().
  tqi: Pass errors from the MB decoder
  h264: Add check for invalid chroma_format_idc
  h263dec: Disallow width/height changing with frame threads.

Conflicts:
Changelog
RELEASE
libavcodec/eatqi.c
libavcodec/h264_ps.c
libavcodec/pngdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
Changelog
libavcodec/eatqi.c
libavcodec/h263dec.c
libavcodec/h264_ps.c
libavcodec/pngdec.c
libavcodec/qdm2.c
libavformat/electronicarts.c

diff --cc Changelog
+++ b/Changelog
@@@ -1,14 -1,14 +1,19 @@@
  Entries are sorted chronologically from oldest to youngest within each release,
  releases are sorted from youngest to oldest.
  
 +version next:
  
 -version 0.8.3:
  
 -- Several bugs and crashes have been fixed in the following codecs: PNG,
 -  Electronic Arts TQI, H.264 (CVE-2012-0851) and H.263 (CVE-2011-3937)
++version 0.10.4:
++- Several bugs and crashes have been fixed
++  Note, CVE-2012-0851 and CVE-2011-3937 have been fixed in previous releases
 -version 0.8.2:
 +version 0.10.3:
 +
 +- Security fixes in the 4xm demuxer, avi demuxer, cook decoder,
 +  mm demuxer, mpegvideo decoder, vqavideo decoder (CVE-2012-0947) and
 +  xmv demuxer.
  
  - Several bugs and crashes have been fixed in the following codecs: AAC,
    APE, H.263, H.264, Indeo 4, Mimic, MJPEG, Motion Pixels Video, RAW,
Simple merge
Simple merge
@@@ -348,19 -332,14 +348,19 @@@ int ff_h264_decode_seq_parameter_set(H2
  
      if(sps->profile_idc >= 100){ //high profile
          sps->chroma_format_idc= get_ue_golomb_31(&s->gb);
 -        if(sps->chroma_format_idc > 3) {
 -            av_log(h->s.avctx, AV_LOG_ERROR, "chroma_format_idc (%u) out of range\n", sps->chroma_format_idc);
 -            return -1;
 +        if (sps->chroma_format_idc > 3U) {
 +            av_log(h->s.avctx, AV_LOG_ERROR, "chroma_format_idc %d is illegal\n", sps->chroma_format_idc);
 +            goto fail;
-         }
-         if(sps->chroma_format_idc == 3)
+         } else if(sps->chroma_format_idc == 3) {
              sps->residual_color_transform_flag = get_bits1(&s->gb);
+         }
          sps->bit_depth_luma   = get_ue_golomb(&s->gb) + 8;
          sps->bit_depth_chroma = get_ue_golomb(&s->gb) + 8;
 +        if (sps->bit_depth_luma > 12U || sps->bit_depth_chroma > 12U) {
 +            av_log(h->s.avctx, AV_LOG_ERROR, "illegal bit depth value (%d, %d)\n",
 +                   sps->bit_depth_luma, sps->bit_depth_chroma);
 +            goto fail;
 +        }
          sps->transform_bypass = get_bits1(&s->gb);
          decode_scaling_matrices(h, sps, NULL, 1, sps->scaling_matrix4, sps->scaling_matrix8);
      }else{
@@@ -479,17 -476,16 +479,18 @@@ static int decode_frame(AVCodecContext 
                  } else if (s->bit_depth == 16 &&
                             s->color_type == PNG_COLOR_TYPE_RGB) {
                      avctx->pix_fmt = PIX_FMT_RGB48BE;
-                 } else if (s->color_type == PNG_COLOR_TYPE_PALETTE) {
 -                } else if (s->bit_depth == 1 &&
 -                           s->color_type == PNG_COLOR_TYPE_GRAY) {
 -                    avctx->pix_fmt = PIX_FMT_MONOBLACK;
 -                } else if (s->bit_depth == 8 &&
++                } else if ((s->bits_per_pixel == 1 || s->bits_per_pixel == 2 || s->bits_per_pixel == 4 || s->bits_per_pixel == 8) &&
+                            s->color_type == PNG_COLOR_TYPE_PALETTE) {
                      avctx->pix_fmt = PIX_FMT_PAL8;
 +                } else if (s->bit_depth == 1) {
 +                    avctx->pix_fmt = PIX_FMT_MONOBLACK;
                  } else if (s->bit_depth == 8 &&
                             s->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
-                     avctx->pix_fmt = PIX_FMT_GRAY8A;
+                     avctx->pix_fmt = PIX_FMT_Y400A;
                  } else {
 +                    av_log(avctx, AV_LOG_ERROR, "unsupported bit depth %d "
 +                                                "and color type %d\n",
 +                                                 s->bit_depth, s->color_type);
                      goto fail;
                  }
                  if(p->data[0])
Simple merge
Simple merge