summaryrefslogtreecommitdiffstats
path: root/src/netlink_delinearize.c
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2014-12-26 14:55:41 +0100
committerPatrick McHardy <kaber@trash.net>2015-01-10 15:03:59 +0000
commit226b6ab5bd89bd143f5e6c11253c3d98ce5449a3 (patch)
tree9b5e2b0b1dd5d15686b5665ba2c890718096e0a5 /src/netlink_delinearize.c
parent068e138a8d9eb967734340c47de53d8b78833ddc (diff)
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 <kaber@trash.net>
Diffstat (limited to 'src/netlink_delinearize.c')
-rw-r--r--src/netlink_delinearize.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c
index e9a04dd4..79d5af6e 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)