aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2023-09-02 16:17:00 +0200
committerPaul B Mahol <onemda@gmail.com>2023-09-02 16:34:25 +0200
commitfb06a443609817ce9883cf37d0af78de4d27c992 (patch)
tree2b4e555d71e02af1b965f3d20d566d313440a5f7
parentfc993e7a53c2e7a18f8d49b3a52cadf47580b82c (diff)
downloadffmpeg-fb06a443609817ce9883cf37d0af78de4d27c992.tar.gz
avformat/wavarc: fix data end calculation
-rw-r--r--libavformat/wavarc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libavformat/wavarc.c b/libavformat/wavarc.c
index 2b5d1b99eb..542a2abbc1 100644
--- a/libavformat/wavarc.c
+++ b/libavformat/wavarc.c
@@ -70,8 +70,10 @@ static int wavarc_read_header(AVFormatContext *s)
if (avio_r8(pb))
return AVERROR_INVALIDDATA;
id = avio_rl32(pb);
+ w->data_end = avio_tell(pb);
if (avio_read(pb, data, sizeof(data)) != sizeof(data))
return AVERROR(EIO);
+ w->data_end += 16LL + AV_RL32(data + 4);
fmt_len = AV_RL32(data + 32);
if (fmt_len < 12)
return AVERROR_INVALIDDATA;
@@ -98,8 +100,7 @@ static int wavarc_read_header(AVFormatContext *s)
if (id != MKTAG('d','a','t','a'))
avio_skip(pb, avio_rl32(pb));
} while (id != MKTAG('d','a','t','a') && !avio_feof(pb));
- w->data_end = avio_rl32(pb);
- w->data_end += avio_tell(pb);
+ avio_skip(pb, 4);
if (AV_RL32(par->extradata + 16) != MKTAG('R','I','F','F'))
return AVERROR_INVALIDDATA;