From aff6cebb41669a25008f76ce3c310001613e6263 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Thu, 11 Apr 2013 23:54:24 +0200 Subject: [PATCH] lavfi/overlay: fix crash in case of invalid expression --- libavfilter/vf_overlay.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libavfilter/vf_overlay.c b/libavfilter/vf_overlay.c index 5ac114aa9d..b5c3f6f569 100644 --- a/libavfilter/vf_overlay.c +++ b/libavfilter/vf_overlay.c @@ -170,16 +170,21 @@ static void eval_expr(AVFilterContext *ctx, enum EvalTarget eval_tgt) static int set_expr(AVExpr **pexpr, const char *expr, void *log_ctx) { int ret; + AVExpr *old = NULL; if (*pexpr) - av_expr_free(*pexpr); - *pexpr = NULL; + old = *pexpr; ret = av_expr_parse(pexpr, expr, var_names, NULL, NULL, NULL, NULL, 0, log_ctx); - if (ret < 0) + if (ret < 0) { av_log(log_ctx, AV_LOG_ERROR, "Error when evaluating the expression '%s'\n", expr); - return ret; + *pexpr = old; + return ret; + } + + av_expr_free(old); + return 0; } static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,