Merge commit '43d676432740c6d5e5234ed343f13902909fd124' into release/1.1
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 8 Aug 2014 12:38:20 +0000 (14:38 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 8 Aug 2014 12:38:20 +0000 (14:38 +0200)
* commit '43d676432740c6d5e5234ed343f13902909fd124':
  huffyuv: Check and propagate function return values

Conflicts:
libavcodec/huffyuvdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/huffyuvdec.c

@@@ -337,18 -341,8 +346,18 @@@ static av_cold int decode_init(AVCodecC
          return AVERROR_INVALIDDATA;
      }
  
 -    if ((ret = ff_huffyuv_alloc_temp(s)) < 0)
 +    if ((avctx->pix_fmt == AV_PIX_FMT_YUV422P || avctx->pix_fmt == AV_PIX_FMT_YUV420P) && avctx->width & 1) {
 +        av_log(avctx, AV_LOG_ERROR, "width must be even for this colorspace\n");
 +        return AVERROR_INVALIDDATA;
 +    }
 +    if (s->predictor == MEDIAN && avctx->pix_fmt == AV_PIX_FMT_YUV422P && avctx->width%4) {
 +        av_log(avctx, AV_LOG_ERROR, "width must be a multiple of 4 this colorspace and predictor\n");
 +        return AVERROR_INVALIDDATA;
 +    }
-     if (ff_huffyuv_alloc_temp(s)) {
++    if ((ret = ff_huffyuv_alloc_temp(s)) < 0) {
 +        ff_huffyuv_common_end(s);
-         return AVERROR(ENOMEM);
+         return ret;
 +    }
  
      return 0;
  }
  static av_cold int decode_init_thread_copy(AVCodecContext *avctx)
  {
      HYuvContext *s = avctx->priv_data;
-     int i;
+     int i, ret;
  
      avctx->coded_frame= &s->picture;
-     if (ff_huffyuv_alloc_temp(s)) {
 -    if ((ret = ff_huffyuv_alloc_temp(s)) < 0)
++    if ((ret = ff_huffyuv_alloc_temp(s)) < 0) {
 +        ff_huffyuv_common_end(s);
-         return AVERROR(ENOMEM);
+         return ret;
 +    }
  
      for (i = 0; i < 6; i++)
          s->vlc[i].table = NULL;
@@@ -536,10 -529,11 +545,11 @@@ static int decode_frame(AVCodecContext 
      }
  
      if ((unsigned)(buf_size-table_size) >= INT_MAX / 8)
 -        return -1;
 +        return AVERROR_INVALIDDATA;
  
-     init_get_bits(&s->gb, s->bitstream_buffer+table_size,
-                   (buf_size-table_size) * 8);
+     if ((ret = init_get_bits(&s->gb, s->bitstream_buffer + table_size,
+                              (buf_size - table_size) * 8)) < 0)
+         return ret;
  
      fake_ystride = s->interlaced ? p->linesize[0] * 2  : p->linesize[0];
      fake_ustride = s->interlaced ? p->linesize[1] * 2  : p->linesize[1];