lavfi/sendcmd: improve error reporting and robustness in case of missing commands
authorStefano Sabatini <stefasab@gmail.com>
Mon, 16 Mar 2015 09:41:19 +0000 (10:41 +0100)
committerStefano Sabatini <stefasab@gmail.com>
Mon, 16 Mar 2015 09:49:25 +0000 (10:49 +0100)
In particular, fix crash with -vf sendcmd, when no arguments are provided.

libavfilter/f_sendcmd.c

index e1e649c..7cb958b 100644 (file)
@@ -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);
     }