]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
monitor: Fix for incorrect debug_mask
authorPhil Sutter <phil@nwl.cc>
Thu, 21 Sep 2017 18:38:02 +0000 (20:38 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 27 Sep 2017 12:11:58 +0000 (14:11 +0200)
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 <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/rule.c

index 1bb7b4756171c30e2941595e4cbf3412a6d7a158..8f0e752f21fbad6d7b45f9bceac61e62cf5cff33 100644 (file)
@@ -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);
 }