alacdec: do not be too strict about the extradata size
authorJustin Ruggles <justin.ruggles@gmail.com>
Sat, 22 Dec 2012 06:21:09 +0000 (01:21 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Sat, 22 Dec 2012 17:18:41 +0000 (12:18 -0500)
Sometimes the extradata has duplicate atoms, but that shouldn't prevent
decoding. Just ensure that it is at least 36 bytes as a sanity check.

CC: libav-stable@libav.org
libavcodec/alac.c

index 22882a56c06dbcad88bd6432e48e0232cbe04d58..1a3f769513de55b82e422a59a1e59581c833ca1a 100644 (file)
@@ -521,10 +521,9 @@ static av_cold int alac_decode_init(AVCodecContext * avctx)
     alac->avctx = avctx;
 
     /* initialize from the extradata */
-    if (alac->avctx->extradata_size != ALAC_EXTRADATA_SIZE) {
-        av_log(avctx, AV_LOG_ERROR, "alac: expected %d extradata bytes\n",
-            ALAC_EXTRADATA_SIZE);
-        return -1;
+    if (alac->avctx->extradata_size < ALAC_EXTRADATA_SIZE) {
+        av_log(avctx, AV_LOG_ERROR, "alac: extradata is too small\n");
+        return AVERROR_INVALIDDATA;
     }
     if (alac_set_info(alac)) {
         av_log(avctx, AV_LOG_ERROR, "alac: set_info failed\n");