diff options
author | Phil Sutter <phil@nwl.cc> | 2017-09-21 20:38:02 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2017-09-27 14:11:58 +0200 |
commit | 41e3126f9832e0093e6a9d35ff1ba6065242136f (patch) | |
tree | ba3099e05f7a54982424cbc2643ea4ff75e5ccb6 /src | |
parent | b8387bb0b0a2e53a5f74814625b374b3b4b0c932 (diff) |
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 <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/rule.c | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -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); } |