]> git.sesse.net Git - ffmpeg/commitdiff
avformat/argo_brp: remove block_align check for audio
authorZane van Iperen <zane@zanevaniperen.com>
Tue, 3 Nov 2020 13:41:53 +0000 (23:41 +1000)
committerZane van Iperen <zane@zanevaniperen.com>
Wed, 4 Nov 2020 21:58:06 +0000 (07:58 +1000)
Causes a divide-by-zero in the rare case where:
- the file has an audio stream,
- the first audio frame isn't within the first BRP_BASF_LOOKAHEAD frames,
- an audio frame is encountered later, and
- its chunk header (except num_blocks) contains all zeros
   (matching the uninitialised structure in the context)

The decoder will discard any garbage data, so the check isn't really needed.

Fixes: division by 0
Fixes: 26667/clusterfuzz-testcase-minimized-ffmpeg_dem_ARGO_BRP_fuzzer-5645146928185344.fuzz
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
libavformat/argo_brp.c

index 766d4fd2617964bcc79cba19addab8dde98a8cd1..6d6da851e90ca7d07a106579c8254afcf8ef9238 100644 (file)
@@ -392,9 +392,6 @@ static int argo_brp_read_packet(AVFormatContext *s, AVPacket *pkt)
             return AVERROR_INVALIDDATA;
 
         blk.size -= ASF_CHUNK_HEADER_SIZE;
-
-        if (blk.size % st->codecpar->block_align != 0)
-            return AVERROR_INVALIDDATA;
     }
 
     if ((ret = av_get_packet(s->pb, pkt, blk.size)) < 0)