From: Phil Sutter Date: Thu, 21 Sep 2017 18:38:02 +0000 (+0200) Subject: monitor: Fix for incorrect debug_mask X-Git-Tag: v0.8~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=41e3126f9832e0093e6a9d35ff1ba6065242136f;p=thirdparty%2Fnftables.git 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 --- 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); }