]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
netlink_delinearize: fix error handling for invalid registers
authorPatrick McHardy <kaber@trash.net>
Fri, 26 Dec 2014 13:55:41 +0000 (14:55 +0100)
committerPatrick McHardy <kaber@trash.net>
Sat, 10 Jan 2015 15:03:59 +0000 (15:03 +0000)
netlink_delinearize is prepared to deal with malformed expressions from
the kernel that it doesn't understand. However since expressions are now
cloned unconditionally by netlink_get_register(), we crash before such
errors can be detected for invalid inputs.

Fix by only cloning non-NULL expressions.

Signed-off-by: Patrick McHardy <kaber@trash.net>
src/netlink_delinearize.c

index e9a04dd4a907aa2ad9ef0db2265dd1750b21d93d..79d5af6e2c908a49d48a66a28e80237f3fbdd0a1 100644 (file)
@@ -75,7 +75,10 @@ static struct expr *netlink_get_register(struct netlink_parse_ctx *ctx,
        }
 
        expr = ctx->registers[reg];
-       return expr_clone(expr);
+       if (expr != NULL)
+               expr = expr_clone(expr);
+
+       return expr;
 }
 
 static void netlink_release_registers(struct netlink_parse_ctx *ctx)