[FFmpeg-cvslog] lavfi/overlay: fix crash in case of invalid expression

Stefano Sabatini git at videolan.org
Fri Apr 12 00:20:36 CEST 2013


ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Thu Apr 11 23:54:24 2013 +0200| [aff6cebb41669a25008f76ce3c310001613e6263] | committer: Stefano Sabatini

lavfi/overlay: fix crash in case of invalid expression

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=aff6cebb41669a25008f76ce3c310001613e6263
---

 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 5ac114a..b5c3f6f 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,



More information about the ffmpeg-cvslog mailing list