summaryrefslogtreecommitdiffstats
path: root/src/rule.c
diff options
context:
space:
mode:
authorEric Leblond <eric@regit.org>2017-07-11 00:32:49 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2017-07-17 17:20:33 +0200
commitdb4ca92225cca8571af82c6b515f8d7b0d9fd591 (patch)
tree3ea47adcfd7f579932fe8e7c3266e1fa556784e5 /src/rule.c
parentd2b93afad7a67840d16d424b3cf5ce5255fca7ad (diff)
src: fix memory leak when listing rules
When listing rules we were calling strdup on the table name but variable was just used locally. Found via `nft list ruleset` run with ASAN: Direct leak of 4 byte(s) in 1 object(s) allocated from: #0 0x45cca0 in __interceptor_strdup (/usr/local/sbin/nft+0x45cca0) #1 0x593c71 in xstrdup /home/eric/git/netfilter/nftables/src/utils.c:75:8 #2 0x513b34 in do_list_ruleset /home/eric/git/netfilter/nftables/src/rule.c:1388:23 #3 0x50e178 in do_command_list /home/eric/git/netfilter/nftables/src/rule.c:1500:10 #4 0x50d3ea in do_command /home/eric/git/netfilter/nftables/src/rule.c:1696:10 #5 0x5061ae in nft_netlink /home/eric/git/netfilter/nftables/src/main.c:207:9 #6 0x505b87 in nft_run /home/eric/git/netfilter/nftables/src/main.c:255:8 #7 0x50771f in main /home/eric/git/netfilter/nftables/src/main.c:392:6 #8 0x7fa1f326d2b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0) Signed-off-by: Eric Leblond <eric@regit.org> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/rule.c')
-rw-r--r--src/rule.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/rule.c b/src/rule.c
index b0b64ffe..7a429bb2 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -1388,12 +1388,14 @@ static int do_list_ruleset(struct netlink_ctx *ctx, struct cmd *cmd)
continue;
cmd->handle.family = table->handle.family;
- cmd->handle.table = xstrdup(table->handle.table);
+ cmd->handle.table = table->handle.table;
if (do_list_table(ctx, cmd, table) < 0)
return -1;
}
+ cmd->handle.table = NULL;
+
return 0;
}