[PR] avformat/wavdec: cache avio_size() before footer seeks (PR #24123)

adorn via ffmpeg-devel <[email protected]>
Newsgroups gmane.comp.video.ffmpeg.devel
Message-ID <178660524003.59.5012868768283241455@29965ddac10e>
PR #24123 opened by adorn
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24123
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24123.patch

Over HTTP, seeking to a trailing chunk can make avio_size() stale, so the PCM
duration guard fails and duration is N/A. Cache size before seeking.

Fixes #24122



>From 1e46f021bd389b83b6081fd95d92f1f170292d8a Mon Sep 17 00:00:00 2001
From: Andreas Menze <[email protected]>
Date: Thu, 13 Aug 2026 09:11:27 +0200
Subject: [PATCH] avformat/wavdec: cache avio_size() before footer seeks

Over HTTP, seeking to a trailing chunk can make avio_size() stale, so the PCM
duration guard fails and duration is N/A. Cache size before seeking.

Fixes #24122
---
 libavformat/wavdec.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c
index 8501d94deb..8d19e52ead 100644
--- a/libavformat/wavdec.c
+++ b/libavformat/wavdec.c
@@ -370,11 +370,13 @@ static int wav_read_header(AVFormatContext *s)
     WAVDemuxContext *wav = s->priv_data;
     int ret, got_fmt = 0, got_xma2 = 0;
     int64_t next_tag_ofs, data_ofs = -1;
+    int64_t filesize;
 
     wav->unaligned = avio_tell(s->pb) & 1;
 
     wav->smv_data_ofs = -1;
 
+    filesize = avio_size(pb);
     /* read chunk ID */
     tag = avio_rl32(pb);
     switch (tag) {
@@ -661,7 +663,7 @@ break_loop:
         if (   st->codecpar->ch_layout.nb_channels
             && data_size
             && av_get_bits_per_sample(st->codecpar->codec_id)
-            && wav->data_end <= avio_size(pb))
+            && wav->data_end <= filesize)
             sample_count = (data_size << 3)
                                   /
                 (st->codecpar->ch_layout.nb_channels * (uint64_t)av_get_bits_per_sample(st->codecpar->codec_id));
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.