From 41e3126f9832e0093e6a9d35ff1ba6065242136f Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Thu, 21 Sep 2017 20:38:02 +0200 Subject: monitor: Fix for incorrect debug_mask The field 'debug_mask' of struct netlink_mon_handler was left uninitialized in do_command_monitor() so it contained garbage from the stack. Fix this by initializing it with the debug_mask value from struct netlink_ctx. While being at it, change the code to make use of C99-style initializer, which will also avoid things like this in future. Fixes: be441e1ffdc24 ("src: add debugging mask to context structure") Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- src/rule.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/rule.c b/src/rule.c index 1bb7b475..8f0e752f 100644 --- a/src/rule.c +++ b/src/rule.c @@ -1690,7 +1690,14 @@ static int do_command_monitor(struct netlink_ctx *ctx, struct cmd *cmd) { struct table *t; struct set *s; - struct netlink_mon_handler monhandler; + struct netlink_mon_handler monhandler = { + .monitor_flags = cmd->monitor->flags, + .format = cmd->monitor->format, + .ctx = ctx, + .loc = &cmd->location, + .cache = ctx->cache, + .debug_mask = ctx->debug_mask, + }; monhandler.cache_needed = need_cache(cmd); if (monhandler.cache_needed) { @@ -1725,12 +1732,6 @@ static int do_command_monitor(struct netlink_ctx *ctx, struct cmd *cmd) } } - monhandler.monitor_flags = cmd->monitor->flags; - monhandler.format = cmd->monitor->format; - monhandler.ctx = ctx; - monhandler.loc = &cmd->location; - monhandler.cache = ctx->cache; - return netlink_monitor(&monhandler, ctx->nf_sock); } -- cgit v1.2.3