diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2014-11-09 08:48:47 +0100 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2014-11-21 12:36:19 +0000 |
commit | d466d82faaf6e0e57a3a4be5e38e3902ef251ac3 (patch) | |
tree | f5ff6dd996bb6185a4dc316007429fba01951ec9 | |
parent | a42d5c861fea8d18d997c6ba3f4a1d8aa95a288b (diff) | |
download | ffmpeg-d466d82faaf6e0e57a3a4be5e38e3902ef251ac3.tar.gz |
dvdsubdec: Do not leak on failure path
CC: libav-stable@libav.org
Bug-Id: CID 1198262
-rw-r--r-- | libavcodec/dvdsubdec.c | 9 |
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 = { |