pcmdec: move number of channels check to pcm_decode_init()
authorJustin Ruggles <justin.ruggles@gmail.com>
Tue, 27 Sep 2011 23:49:25 +0000 (19:49 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Wed, 26 Oct 2011 16:01:06 +0000 (12:01 -0400)
libavcodec/pcm.c

index c0d0930..2a50a81 100644 (file)
@@ -213,6 +213,11 @@ static av_cold int pcm_decode_init(AVCodecContext * avctx)
     PCMDecode *s = avctx->priv_data;
     int i;
 
+    if (avctx->channels <= 0 || avctx->channels > MAX_CHANNELS) {
+        av_log(avctx, AV_LOG_ERROR, "PCM channels out of bounds\n");
+        return AVERROR(EINVAL);
+    }
+
     switch(avctx->codec->id) {
     case CODEC_ID_PCM_ALAW:
         for(i=0;i<256;i++)
@@ -266,11 +271,6 @@ static int pcm_decode_frame(AVCodecContext *avctx,
     samples = data;
     src = buf;
 
-    if(avctx->channels <= 0 || avctx->channels > MAX_CHANNELS){
-        av_log(avctx, AV_LOG_ERROR, "PCM channels out of bounds\n");
-        return -1;
-    }
-
     sample_size = av_get_bits_per_sample(avctx->codec_id)/8;
 
     /* av_get_bits_per_sample returns 0 for CODEC_ID_PCM_DVD */