]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: acl: proprely release unused args in prune_acl_expr()
authorWilly Tarreau <w@1wt.eu>
Wed, 19 Apr 2017 09:13:48 +0000 (11:13 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 19 Apr 2017 09:31:44 +0000 (11:31 +0200)
commitbcfe23a7ecb212ca07dfbe20423684944d55e086
tree61c9b67358ff6ac21f609fe30f9ceec6759a0b00
parenta2278c8bbbee63ee75c8e3e97efd6828c2083d89
BUG/MEDIUM: acl: proprely release unused args in prune_acl_expr()

Stephan Zeisberg reported another dirty abort case which can be triggered
with this simple config (where file "d" doesn't exist) :

    backend b1
        stats  auth a:b
        acl auth_ok http_auth(c) -f d

This issue was brought in 1.5-dev9 by commit 34db108 ("MAJOR: acl: make use
of the new argument parsing framework") when prune_acl_expr() started to
release arguments. The arg pointer is set to NULL but not its length.
Because of this, later in smp_resolve_args(), the argument is still seen
as valid (since only a test on the length is made as in all other places),
and the NULL pointer is dereferenced.

This patch properly clears the lengths to avoid such tests.

This fix needs to be backported to 1.7, 1.6, and 1.5.
src/acl.c