diff options
author | Anton Khirnov <anton@khirnov.net> | 2023-07-14 12:28:18 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2023-07-20 20:40:26 +0200 |
commit | 2e6afa799ef693b94f993f54ed41a84f6d9f1685 (patch) | |
tree | 4bbaa6d60ca130e97a6a4a36bc86b6ac0319ba1e /fftools/ffmpeg_opt.c | |
parent | b23abb7c484b0ada607a73a62ce6c6efe33fc47c (diff) |
fftools/cmdutils: add error handling to GROW_ARRAY()
Diffstat (limited to 'fftools/ffmpeg_opt.c')
-rw-r--r-- | fftools/ffmpeg_opt.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 7002986369..eef6d5e749 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -361,6 +361,7 @@ static int opt_map(void *optctx, const char *opt, const char *arg) OptionsContext *o = optctx; StreamMap *m = NULL; int i, negative = 0, file_idx, disabled = 0; + int ret; #if FFMPEG_OPT_MAP_SYNC char *sync; #endif @@ -387,7 +388,11 @@ static int opt_map(void *optctx, const char *opt, const char *arg) if (map[0] == '[') { /* this mapping refers to lavfi output */ const char *c = map + 1; - GROW_ARRAY(o->stream_maps, o->nb_stream_maps); + + ret = GROW_ARRAY(o->stream_maps, o->nb_stream_maps); + if (ret < 0) + return ret; + m = &o->stream_maps[o->nb_stream_maps - 1]; m->linklabel = av_get_token(&c, "]"); if (!m->linklabel) { @@ -421,7 +426,10 @@ static int opt_map(void *optctx, const char *opt, const char *arg) disabled = 1; continue; } - GROW_ARRAY(o->stream_maps, o->nb_stream_maps); + ret = GROW_ARRAY(o->stream_maps, o->nb_stream_maps); + if (ret < 0) + return ret; + m = &o->stream_maps[o->nb_stream_maps - 1]; m->file_index = file_idx; @@ -450,7 +458,10 @@ static int opt_map(void *optctx, const char *opt, const char *arg) static int opt_attach(void *optctx, const char *opt, const char *arg) { OptionsContext *o = optctx; - GROW_ARRAY(o->attachments, o->nb_attachments); + int ret = GROW_ARRAY(o->attachments, o->nb_attachments); + if (ret < 0) + return ret; + o->attachments[o->nb_attachments - 1] = arg; return 0; } @@ -459,7 +470,7 @@ static int opt_attach(void *optctx, const char *opt, const char *arg) static int opt_map_channel(void *optctx, const char *opt, const char *arg) { OptionsContext *o = optctx; - int n; + int n, ret; AVStream *st; AudioChannelMap *m; char *allow_unused; @@ -474,7 +485,10 @@ static int opt_map_channel(void *optctx, const char *opt, const char *arg) if (!mapchan) return AVERROR(ENOMEM); - GROW_ARRAY(o->audio_channel_maps, o->nb_audio_channel_maps); + ret = GROW_ARRAY(o->audio_channel_maps, o->nb_audio_channel_maps); + if (ret < 0) + return ret; + m = &o->audio_channel_maps[o->nb_audio_channel_maps - 1]; /* muted channel syntax */ |