diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2015-03-16 10:41:19 +0100 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2015-03-16 10:49:25 +0100 |
commit | 83ee820a1678937ab8343f2766e9662ef9fd420f (patch) | |
tree | 31deefd74819e5968f97b10b3648901391ce0c3c /libavfilter/f_sendcmd.c | |
parent | e8374d72027c0b3faa85c1e2cc69bfecb8c020c8 (diff) | |
download | ffmpeg-83ee820a1678937ab8343f2766e9662ef9fd420f.tar.gz |
lavfi/sendcmd: improve error reporting and robustness in case of missing commands
In particular, fix crash with -vf sendcmd, when no arguments are provided.
Diffstat (limited to 'libavfilter/f_sendcmd.c')
-rw-r--r-- | libavfilter/f_sendcmd.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libavfilter/f_sendcmd.c b/libavfilter/f_sendcmd.c index e1e649c508..7cb958b789 100644 --- a/libavfilter/f_sendcmd.c +++ b/libavfilter/f_sendcmd.c @@ -318,6 +318,9 @@ static int parse_intervals(Interval **intervals, int *nb_intervals, *intervals = NULL; *nb_intervals = 0; + if (!buf) + return 0; + while (1) { Interval interval; @@ -373,9 +376,9 @@ static av_cold int init(AVFilterContext *ctx) SendCmdContext *sendcmd = ctx->priv; int ret, i, j; - if (sendcmd->commands_filename && sendcmd->commands_str) { + if ((!!sendcmd->commands_filename + !!sendcmd->commands_str) != 1) { av_log(ctx, AV_LOG_ERROR, - "Only one of the filename or commands options must be specified\n"); + "One and only one of the filename or commands options must be specified\n"); return AVERROR(EINVAL); } @@ -404,7 +407,7 @@ static av_cold int init(AVFilterContext *ctx) return ret; if (sendcmd->nb_intervals == 0) { - av_log(ctx, AV_LOG_ERROR, "No commands\n"); + av_log(ctx, AV_LOG_ERROR, "No commands were specified\n"); return AVERROR(EINVAL); } |