avcodec/alac: only set *got_frame_ptr when all channels have been decoded
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 11 Jan 2014 03:36:15 +0000 (04:36 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 13 Jan 2014 15:10:34 +0000 (16:10 +0100)
Fixes use of uninitialized memory
Fixes: msan_uninit-mem_7f8b64436530_7895_quicktime_newcodec_applelosslessaudiocodec.m4a
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit e11983bda073f8c63f60509ee753da9fba20ed10)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/alac.c

index 3f37f61..1929839 100644 (file)
@@ -490,7 +490,8 @@ static int alac_decode_frame(AVCodecContext *avctx, void *data,
                avpkt->size * 8 - get_bits_count(&alac->gb));
     }
 
-    *got_frame_ptr = 1;
+    if (alac->channels == ch)
+        *got_frame_ptr = 1;
 
     return avpkt->size;
 }