BUG/MINOR: acl: Fix memory leaks when an ACL expression is parsed

This only happens during the configuration parsing. First leak is the string
representing the last converter parsed, if any. The second one is on the error
path, when the allocation of the ACL expression failed. In this case, the sample
was not released.

This patch fixes the issue #256. It must be backported to all stable versions.

(cherry picked from commit 361935aa1e327d2249453eab0b8f0300683f47b2)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/acl.c b/src/acl.c
index 318cb51..209580a 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -342,6 +342,8 @@
 				goto out_free_smp;
 			}
 		}
+		free(ckw);
+		ckw = NULL;
 	}
 	else {
 		/* This is not an ACL keyword, so we hope this is a sample fetch
@@ -360,7 +362,7 @@
 	expr = calloc(1, sizeof(*expr));
 	if (!expr) {
 		memprintf(err, "out of memory when parsing ACL expression");
-		goto out_return;
+		goto out_free_smp;
 	}
 
 	pattern_init_head(&expr->pat);
@@ -678,8 +680,8 @@
  out_free_expr:
 	prune_acl_expr(expr);
 	free(expr);
-	free(ckw);
  out_free_smp:
+	free(ckw);
 	free(smp);
  out_return:
 	return NULL;