[FFmpeg-devel] [PATCH] avformat/vpk: fix divide by zero

Kacper Michajłow kasper93 at gmail.com
Wed Aug 7 16:42:46 EEST 2024


Can happen after calling avformat_find_stream_info() when the codec
fails to open, but return value is 0 and subsequent uses of this context
have zero value in channel number.

Found by OSS-Fuzz.

Signed-off-by: Kacper Michajłow <kasper93 at gmail.com>
---
 libavformat/vpk.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libavformat/vpk.c b/libavformat/vpk.c
index 001ad33555..aa98ef2dd4 100644
--- a/libavformat/vpk.c
+++ b/libavformat/vpk.c
@@ -86,6 +86,8 @@ static int vpk_read_packet(AVFormatContext *s, AVPacket *pkt)
 
     vpk->current_block++;
     if (vpk->current_block == vpk->block_count) {
+        if (par->ch_layout.nb_channels <= 0)
+            return AVERROR_INVALIDDATA;
         unsigned size = vpk->last_block_size / par->ch_layout.nb_channels;
         unsigned skip = (par->block_align - vpk->last_block_size) / par->ch_layout.nb_channels;
         uint64_t pos = avio_tell(s->pb);
-- 
2.43.0



More information about the ffmpeg-devel mailing list