diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-04-01 18:18:13 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-04-02 15:27:42 +0200 |
commit | 543e4a194252050cf1abcded7c75e4b889e3db4f (patch) | |
tree | 98105722490ed5f66e52113179b0f93bf5d023ef /libavformat | |
parent | 18bb323da437642616bfefcc1d6bc781ca0658b4 (diff) | |
download | ffmpeg-543e4a194252050cf1abcded7c75e4b889e3db4f.tar.gz |
avformat/utils: Check allocations for failure
There would be leaks in case of failure.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/utils.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c index 0834c80f4e..13b1bc7c78 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -4625,7 +4625,7 @@ fail: AVProgram *av_new_program(AVFormatContext *ac, int id) { AVProgram *program = NULL; - int i; + int i, ret; av_log(ac, AV_LOG_TRACE, "new_program: id=0x%04x\n", id); @@ -4637,7 +4637,11 @@ AVProgram *av_new_program(AVFormatContext *ac, int id) program = av_mallocz(sizeof(AVProgram)); if (!program) return NULL; - dynarray_add(&ac->programs, &ac->nb_programs, program); + ret = av_dynarray_add_nofree(&ac->programs, &ac->nb_programs, program); + if (ret < 0) { + av_free(program); + return NULL; + } program->discard = AVDISCARD_NONE; program->pmt_version = -1; program->id = id; @@ -4657,7 +4661,7 @@ AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_ba int64_t start, int64_t end, const char *title) { AVChapter *chapter = NULL; - int i; + int i, ret; if (end != AV_NOPTS_VALUE && start > end) { av_log(s, AV_LOG_ERROR, "Chapter end time %"PRId64" before start %"PRId64"\n", end, start); @@ -4677,7 +4681,11 @@ AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_ba chapter = av_mallocz(sizeof(AVChapter)); if (!chapter) return NULL; - dynarray_add(&s->chapters, &s->nb_chapters, chapter); + ret = av_dynarray_add_nofree(&s->chapters, &s->nb_chapters, chapter); + if (ret < 0) { + av_free(chapter); + return NULL; + } } av_dict_set(&chapter->metadata, "title", title, 0); chapter->id = id; |