avformat/wavdec: allow data chunk to be before fmt/xma2 chunk
authorPaul B Mahol <onemda@gmail.com>
Sun, 8 Nov 2015 11:27:42 +0000 (12:27 +0100)
committerPaul B Mahol <onemda@gmail.com>
Tue, 10 Nov 2015 18:42:21 +0000 (19:42 +0100)
Signed-off-by: Paul B Mahol <onemda@gmail.com>
libavformat/wavdec.c

index 4190fc6..d95596f 100644 (file)
@@ -379,7 +379,7 @@ static int wav_read_header(AVFormatContext *s)
             got_xma2 = 1;
             break;
         case MKTAG('d', 'a', 't', 'a'):
-            if (!got_fmt && !got_xma2) {
+            if (!pb->seekable && !got_fmt && !got_xma2) {
                 av_log(s, AV_LOG_ERROR,
                        "found no 'fmt ' tag before the 'data' tag\n");
                 return AVERROR_INVALIDDATA;
@@ -474,6 +474,11 @@ static int wav_read_header(AVFormatContext *s)
     }
 
 break_loop:
+    if (!got_fmt && !got_xma2) {
+        av_log(s, AV_LOG_ERROR, "no 'fmt ' or 'XMA2' tag found\n");
+        return AVERROR_INVALIDDATA;
+    }
+
     if (data_ofs < 0) {
         av_log(s, AV_LOG_ERROR, "no 'data' tag found\n");
         return AVERROR_INVALIDDATA;