[FFmpeg-devel] [PATCH] libavformat/oggdec: Free stream private when header parsing fails.

Chris Cunningham chcunningham at chromium.org
Tue May 10 00:27:29 CEST 2016


Leaking this private structure opens up the possibility that it may
be re-used when parsing later packets in the stream. This is
problematic if the later packets are not the same codec type (e.g.
private allocated during Vorbis parsing, but later packets are Opus
and the private is assumed to be the oggopus_private type in
opus_header()).
---
 libavformat/oggdec.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 528d8db..47a0cba 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -701,6 +701,7 @@ static int ogg_read_header(AVFormatContext *s)
         if (ogg->streams[i].header < 0) {
             av_log(s, AV_LOG_ERROR, "Header parsing failed for stream %d\n", i);
             ogg->streams[i].codec = NULL;
+            av_freep(&ogg->streams[i].private);
         } else if (os->codec && os->nb_header < os->codec->nb_header) {
             av_log(s, AV_LOG_WARNING,
                    "Headers mismatch for stream %d: "
-- 
2.8.0.rc3.226.g39d4020



More information about the ffmpeg-devel mailing list