From: Patrick McHardy Date: Fri, 26 Dec 2014 13:55:41 +0000 (+0100) Subject: netlink_delinearize: fix error handling for invalid registers X-Git-Tag: v0.5~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=226b6ab5bd89bd143f5e6c11253c3d98ce5449a3;p=thirdparty%2Fnftables.git netlink_delinearize: fix error handling for invalid registers 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 --- diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c index e9a04dd4a..79d5af6e2 100644 --- a/src/netlink_delinearize.c +++ b/src/netlink_delinearize.c @@ -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)