aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2014-11-09 08:48:47 +0100
committerVittorio Giovara <vittorio.giovara@gmail.com>2014-11-21 12:36:19 +0000
commitd466d82faaf6e0e57a3a4be5e38e3902ef251ac3 (patch)
treef5ff6dd996bb6185a4dc316007429fba01951ec9
parenta42d5c861fea8d18d997c6ba3f4a1d8aa95a288b (diff)
downloadffmpeg-d466d82faaf6e0e57a3a4be5e38e3902ef251ac3.tar.gz
dvdsubdec: Do not leak on failure path
CC: libav-stable@libav.org Bug-Id: CID 1198262
-rw-r--r--libavcodec/dvdsubdec.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c
index 5d6db41d35..15abac0738 100644
--- a/libavcodec/dvdsubdec.c
+++ b/libavcodec/dvdsubdec.c
@@ -503,6 +503,7 @@ static av_cold int dvdsub_init(AVCodecContext *avctx)
{
DVDSubContext *ctx = avctx->priv_data;
char *data, *cur;
+ int ret = 0;
if (!avctx->extradata || !avctx->extradata_size)
return 0;
@@ -527,16 +528,18 @@ static av_cold int dvdsub_init(AVCodecContext *avctx)
} else if (!strncmp("size:", cur, 5)) {
int w, h;
if (sscanf(cur + 5, "%dx%d", &w, &h) == 2) {
- int ret = ff_set_dimensions(avctx, w, h);
+ ret = ff_set_dimensions(avctx, w, h);
if (ret < 0)
- return ret;
+ goto fail;
}
}
cur += strcspn(cur, "\n\r");
cur += strspn(cur, "\n\r");
}
+
+fail:
av_free(data);
- return 0;
+ return ret;
}
AVCodec ff_dvdsub_decoder = {