diff options
author | Steven Liu <lq@chinaffmpeg.org> | 2019-10-09 11:56:22 +0800 |
---|---|---|
committer | Steven Liu <lq@chinaffmpeg.org> | 2019-10-10 09:54:42 +0800 |
commit | 6f84c1e9078b2133f3cb75d76f089196a7df96a9 (patch) | |
tree | 5226ce704abe9ca5e8f78a0b2cd8beb63bef3fa5 | |
parent | da0c0c7247fbf1596ec768746071d6d2f91d0fb0 (diff) | |
download | ffmpeg-6f84c1e9078b2133f3cb75d76f089196a7df96a9.tar.gz |
avformat/jvdec: fix memleak when read_header failed
Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
-rw-r--r-- | libavformat/jvdec.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libavformat/jvdec.c b/libavformat/jvdec.c index 18c81f0de7..17ada7b0f1 100644 --- a/libavformat/jvdec.c +++ b/libavformat/jvdec.c @@ -113,9 +113,10 @@ static int read_header(AVFormatContext *s) return AVERROR(ENOMEM); jv->frames = av_malloc(ast->nb_index_entries * sizeof(JVFrame)); - if (!jv->frames) + if (!jv->frames) { + av_freep(&ast->index_entries); return AVERROR(ENOMEM); - + } offset = 0x68 + ast->nb_index_entries * 16; for (i = 0; i < ast->nb_index_entries; i++) { AVIndexEntry *e = ast->index_entries + i; @@ -137,6 +138,8 @@ static int read_header(AVFormatContext *s) - jvf->palette_size < 0) { if (s->error_recognition & AV_EF_EXPLODE) { read_close(s); + av_freep(&jv->frames); + av_freep(&ast->index_entries); return AVERROR_INVALIDDATA; } jvf->audio_size = |