diff options
author | Sean McGovern <gseanmcg@gmail.com> | 2017-07-28 16:29:35 -0400 |
---|---|---|
committer | Sean McGovern <gseanmcg@gmail.com> | 2017-07-31 17:41:01 -0400 |
commit | 3050dabaa9a337ad077ec60bba664ad9861e1aa6 (patch) | |
tree | bdd36bb80d475802921b17ea2dd06cf4227cce24 | |
parent | d7bdab1ad78ef582ba8c96dc7b79ec9fdbeeb94f (diff) | |
download | ffmpeg-streaming-3050dabaa9a337ad077ec60bba664ad9861e1aa6.zip ffmpeg-streaming-3050dabaa9a337ad077ec60bba664ad9861e1aa6.tar.gz |
mov: Do not set stsd_count if mov_read_stsd() fails
Based on an FFmpeg patch by Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavformat/mov.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c index 8ff6022..2134bd1 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1891,24 +1891,33 @@ static int mov_read_stsd(MOVContext *c, AVIOContext *pb, MOVAtom atom) if (!sc->extradata) return AVERROR(ENOMEM); - sc->stsd_count = entries; - sc->extradata_size = av_mallocz_array(sc->stsd_count, sizeof(*sc->extradata_size)); - if (!sc->extradata_size) - return AVERROR(ENOMEM); + sc->extradata_size = av_mallocz_array(entries, sizeof(*sc->extradata_size)); + if (!sc->extradata_size) { + ret = AVERROR(ENOMEM); + goto fail; + } - ret = ff_mov_read_stsd_entries(c, pb, sc->stsd_count); + ret = ff_mov_read_stsd_entries(c, pb, entries); if (ret < 0) - return ret; + goto fail; + + sc->stsd_count = entries; /* Restore back the primary extradata. */ av_free(st->codecpar->extradata); st->codecpar->extradata_size = sc->extradata_size[0]; st->codecpar->extradata = av_mallocz(sc->extradata_size[0] + AV_INPUT_BUFFER_PADDING_SIZE); - if (!st->codecpar->extradata) - return AVERROR(ENOMEM); + if (!st->codecpar->extradata) { + ret = AVERROR(ENOMEM); + goto fail; + } memcpy(st->codecpar->extradata, sc->extradata[0], sc->extradata_size[0]); return 0; +fail: + av_freep(&sc->extradata); + av_freep(&sc->extradata_size); + return ret; } static int mov_read_stsc(MOVContext *c, AVIOContext *pb, MOVAtom atom) |