summaryrefslogtreecommitdiff
path: root/libavformat/oggdec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2018-03-06 18:14:12 +0100
committerMichael Niedermayer <michael@niedermayer.cc>2018-03-07 20:37:33 +0100
commitda069e9c68ec1a54e618940dcb9ebae9bf179a32 (patch)
tree5f3d8f1b711410f4a65d77f28c0413728584e5b9 /libavformat/oggdec.c
parent3934aa495d786845d9f541c84ee405c096938f76 (diff)
avformat/oggdec: Fix metadata memleak on multiple headers
Fixes: Chromium bug 800123 Reported-by: Matt Wolenetz <wolenetz@google.com> Reviewed-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat/oggdec.c')
-rw-r--r--libavformat/oggdec.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 38f60653f9..27d16a3e4e 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -128,7 +128,10 @@ static int ogg_restore(AVFormatContext *s)
ogg->state = ost->next;
for (i = 0; i < ogg->nstreams; i++) {
- av_freep(&ogg->streams[i].buf);
+ struct ogg_stream *stream = &ogg->streams[i];
+ av_freep(&stream->buf);
+ av_freep(&stream->new_metadata);
+
if (i >= ost->nstreams || !ost->streams[i].private) {
free_stream(s, i);
}