diff mbox

[FFmpeg-devel,ogg] Close ogg stream upon error when using AV_EF_EXPLODE.

Message ID CAPUDrwd+UZG96O82-_trCqpP_3vnC5tN6m6Ly+Bcyc3xhOy7Sw@mail.gmail.com
State New
Headers show

Commit Message

Dale Curtis Nov. 20, 2017, 8:14 p.m. UTC
Without this there can be multiple memory leaks with unknown ogg streams.

- dale

Comments

Michael Niedermayer Nov. 21, 2017, 2:11 a.m. UTC | #1
On Mon, Nov 20, 2017 at 12:14:32PM -0800, Dale Curtis wrote:
> Without this there can be multiple memory leaks with unknown ogg streams.
> 
> - dale

>  oggdec.c |    4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 1c3989df5e9a5ac43fb48f6cacaa20a6e25d87df  fix_ogg_close_v1.patch
> From 4fc9d288c50891a9740facc549c895da066af71b Mon Sep 17 00:00:00 2001
> From: Dale Curtis <dalecurtis@chromium.org>
> Date: Mon, 20 Nov 2017 12:07:57 -0800
> Subject: [PATCH] [ogg] Close ogg stream upon error when using AV_EF_EXPLODE.
> 
> Without this there can be multiple memory leaks for unrecognized
> ogg streams.
> 
> Signed-off-by: Dale Curtis <dalecurtis@chromium.org>

applied

thanks

[...]
diff mbox

Patch

From 4fc9d288c50891a9740facc549c895da066af71b Mon Sep 17 00:00:00 2001
From: Dale Curtis <dalecurtis@chromium.org>
Date: Mon, 20 Nov 2017 12:07:57 -0800
Subject: [PATCH] [ogg] Close ogg stream upon error when using AV_EF_EXPLODE.

Without this there can be multiple memory leaks for unrecognized
ogg streams.

Signed-off-by: Dale Curtis <dalecurtis@chromium.org>
---
 libavformat/oggdec.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 97ad1a27d1..193a286e43 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -719,8 +719,10 @@  static int ogg_read_header(AVFormatContext *s)
                    "Headers mismatch for stream %d: "
                    "expected %d received %d.\n",
                    i, os->codec->nb_header, os->nb_header);
-            if (s->error_recognition & AV_EF_EXPLODE)
+            if (s->error_recognition & AV_EF_EXPLODE) {
+                ogg_read_close(s);
                 return AVERROR_INVALIDDATA;
+            }
         }
         if (os->start_granule != OGG_NOGRANULE_VALUE)
             os->lastpts = s->streams[i]->start_time =
-- 
2.15.0.448.gf294e3d99a-goog