1 commit 630583cc735de8036ca9963a6e093d5fef90157e
2 Author: Christopher Faulet <cfaulet@haproxy.com>
3 Date: Tue Jan 14 15:05:56 2020 +0100
5 BUG/MINOR: tcp-rules: Fix memory releases on error path during action parsing
7 When an error occurred during the parsing of a TCP action, if some memory was
8 allocated, it should be released before exiting. Here, the fix consists for
9 replace a call to free() on a sample expression by a call to
10 release_sample_expr().
12 This patch may be backported to all supported versions.
14 (cherry picked from commit fdb6fbfa9a7b730939865b79bfbca3af278113b8)
15 Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
17 diff --git a/src/tcp_rules.c b/src/tcp_rules.c
18 index 86b4df538..27cc0c20b 100644
21 @@ -694,7 +694,7 @@ static int tcp_parse_request_rule(char **args, int arg, int section_type,
23 "'%s %s %s' : fetch method '%s' extracts information from '%s', none of which is available here",
24 args[0], args[1], args[kw], args[arg-1], sample_src_names(expr->fetch->use));
26 + release_sample_expr(expr);
30 @@ -704,7 +704,7 @@ static int tcp_parse_request_rule(char **args, int arg, int section_type,
32 "'%s %s %s' : missing length value",
33 args[0], args[1], args[kw]);
35 + release_sample_expr(expr);
38 /* we copy the table name for now, it will be resolved later */
39 @@ -713,7 +713,7 @@ static int tcp_parse_request_rule(char **args, int arg, int section_type,
41 "'%s %s %s' : length must be > 0",
42 args[0], args[1], args[kw]);
44 + release_sample_expr(expr);
48 @@ -772,7 +772,7 @@ static int tcp_parse_request_rule(char **args, int arg, int section_type,
50 "'%s %s %s' : fetch method '%s' extracts information from '%s', none of which is available here",
51 args[0], args[1], args[kw], args[arg-1], sample_src_names(expr->fetch->use));
53 + release_sample_expr(expr);
57 @@ -785,7 +785,7 @@ static int tcp_parse_request_rule(char **args, int arg, int section_type,
59 "'%s %s %s' : missing table name",
60 args[0], args[1], args[kw]);
62 + release_sample_expr(expr);
65 /* we copy the table name for now, it will be resolved later */