summaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorSteven Liu <lq@chinaffmpeg.org>2019-10-10 10:07:54 +0800
committerSteven Liu <lq@chinaffmpeg.org>2019-10-28 14:26:16 +0800
commita3655a5cb2abf3bf2c8a2fa596643059de3396e4 (patch)
tree9b34796bdec181e300d1cf7529c775a9ca940164 /libavformat
parent991cf95fdeebc3aff34c3dd094df0589f7a02f68 (diff)
downloadffmpeg-streaming-a3655a5cb2abf3bf2c8a2fa596643059de3396e4.zip
ffmpeg-streaming-a3655a5cb2abf3bf2c8a2fa596643059de3396e4.tar.gz
avformat/smacker: fix memleak when avformat_new_stream failed
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/smacker.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libavformat/smacker.c b/libavformat/smacker.c
index b5c858a..239894d 100644
--- a/libavformat/smacker.c
+++ b/libavformat/smacker.c
@@ -172,8 +172,11 @@ static int smacker_read_header(AVFormatContext *s)
/* init video codec */
st = avformat_new_stream(s, NULL);
- if (!st)
+ if (!st) {
+ av_freep(&smk->frm_size);
+ av_freep(&smk->frm_flags);
return AVERROR(ENOMEM);
+ }
smk->videoindex = st->index;
st->codecpar->width = smk->width;
st->codecpar->height = smk->height;
@@ -195,8 +198,11 @@ static int smacker_read_header(AVFormatContext *s)
smk->indexes[i] = -1;
if (smk->rates[i]) {
ast[i] = avformat_new_stream(s, NULL);
- if (!ast[i])
+ if (!ast[i]) {
+ av_freep(&smk->frm_size);
+ av_freep(&smk->frm_flags);
return AVERROR(ENOMEM);
+ }
smk->indexes[i] = ast[i]->index;
ast[i]->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
if (smk->aflags[i] & SMK_AUD_BINKAUD) {
OpenPOWER on IntegriCloud