diff options
author | Nikolas Bowe <nbowe-at-google.com@ffmpeg.org> | 2017-08-15 12:08:44 -0700 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-08-16 03:35:13 +0200 |
commit | 4b54d5a721cc55288093417b098382bbb27a8d3f (patch) | |
tree | a8b909878028070870df8741e7d18a976a572eed | |
parent | 0ac8fce2679e76e7caffde091141d6834405dbc1 (diff) | |
download | ffmpeg-4b54d5a721cc55288093417b098382bbb27a8d3f.tar.gz |
avformat/mov: Fix memory leak when reading DDTS box.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavformat/mov.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c index 63f84be782..c02caf6719 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -889,6 +889,7 @@ static int mov_read_ddts(MOVContext *c, AVIOContext *pb, MOVAtom atom) init_get_bits(&gb, buf, 8*ddts_size); if (c->fc->nb_streams < 1) { + av_free(buf); return 0; } st = c->fc->streams[c->fc->nb_streams-1]; @@ -896,6 +897,7 @@ static int mov_read_ddts(MOVContext *c, AVIOContext *pb, MOVAtom atom) st->codecpar->sample_rate = get_bits_long(&gb, 32); if (st->codecpar->sample_rate <= 0) { av_log(c->fc, AV_LOG_ERROR, "Invalid sample rate %d\n", st->codecpar->sample_rate); + av_free(buf); return AVERROR_INVALIDDATA; } skip_bits_long(&gb, 32); /* max bitrate */ @@ -923,6 +925,7 @@ static int mov_read_ddts(MOVContext *c, AVIOContext *pb, MOVAtom atom) ((channel_layout_code & 0x8) ? AV_CH_LOW_FREQUENCY : 0); st->codecpar->channels = av_get_channel_layout_nb_channels(st->codecpar->channel_layout); + av_free(buf); return 0; } |