diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-08-23 02:51:22 +0300 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-08-23 20:57:42 +0300 |
commit | 95b8df687cc0182a4ec7666c2bbc2826c9ef0852 (patch) | |
tree | f0b52e67da1d5e3d4876b90111bf245895432846 /libavfilter | |
parent | f33faa5b9bfb288f83db034fa1f8719ab8a994c6 (diff) |
avfilter/graphparser: Check allocations for success
parse_filter() did not check the return value of av_get_token() for
success; in case name (the name of a filter) was NULL, one got a
segfault in av_strlcpy() (called from create_filter()).
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/graphparser.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c index e96b20418e..a52916a146 100644 --- a/libavfilter/graphparser.c +++ b/libavfilter/graphparser.c @@ -186,9 +186,16 @@ static int parse_filter(AVFilterContext **filt_ctx, const char **buf, AVFilterGr char *name = av_get_token(buf, "=,;["); int ret; + if (!name) + return AVERROR(ENOMEM); + if (**buf == '=') { (*buf)++; opts = av_get_token(buf, "[],;"); + if (!opts) { + av_free(name); + return AVERROR(ENOMEM); + } } ret = create_filter(filt_ctx, graph, index, name, opts, log_ctx); |