aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2013-03-17 16:14:58 +0100
committerReinhard Tartler <siretart@tauware.de>2013-04-24 21:01:14 +0200
commit2eaf8698a3bb3ef01af8da8fada6437dae4a2ba5 (patch)
treebe844754c3d6b1f63e4871240ce6486ba5a5171c
parenta563e4af9f56061ccd00c3fc52f238bb4b677e13 (diff)
downloadffmpeg-2eaf8698a3bb3ef01af8da8fada6437dae4a2ba5.tar.gz
avfiltergraph: check for sws opts being non-NULL before using them.
Avoid snprintfing a NULL pointer. CC: libav-stable@libav.org (cherry picked from commit 6e3c13a559e9ff300b5ca60e1d503e594d7f055c) Signed-off-by: Reinhard Tartler <siretart@tauware.de>
-rw-r--r--libavfilter/avfiltergraph.c7
-rw-r--r--libavfilter/graphparser.c3
2 files changed, 8 insertions, 2 deletions
diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 8c43251c4c..8ed38f0fbb 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -23,6 +23,7 @@
#include <ctype.h>
#include <string.h>
+#include "libavutil/avstring.h"
#include "avfilter.h"
#include "avfiltergraph.h"
#include "internal.h"
@@ -163,7 +164,11 @@ static int query_formats(AVFilterGraph *graph, AVClass *log_ctx)
/* couldn't merge format lists. auto-insert scale filter */
snprintf(inst_name, sizeof(inst_name), "auto-inserted scaler %d",
scaler_count++);
- snprintf(scale_args, sizeof(scale_args), "0:0:%s", graph->scale_sws_opts);
+ av_strlcpy(scale_args, "0:0", sizeof(scale_args));
+ if (graph->scale_sws_opts) {
+ av_strlcat(scale_args, ":", sizeof(scale_args));
+ av_strlcat(scale_args, graph->scale_sws_opts, sizeof(scale_args));
+ }
if ((ret = avfilter_graph_create_filter(&scale, avfilter_get_by_name("scale"),
inst_name, scale_args, NULL, graph)) < 0)
return ret;
diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c
index 90f2936590..94f291d659 100644
--- a/libavfilter/graphparser.c
+++ b/libavfilter/graphparser.c
@@ -121,7 +121,8 @@ static int create_filter(AVFilterContext **filt_ctx, AVFilterGraph *ctx, int ind
return ret;
}
- if (!strcmp(filt_name, "scale") && args && !strstr(args, "flags")) {
+ if (!strcmp(filt_name, "scale") && args && !strstr(args, "flags") &&
+ ctx->scale_sws_opts) {
snprintf(tmp_args, sizeof(tmp_args), "%s:%s",
args, ctx->scale_sws_opts);
args = tmp_args;