]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
nft: cmd: Init struct nft_cmd::head early
authorPhil Sutter <phil@nwl.cc>
Tue, 23 Jul 2024 19:31:34 +0000 (21:31 +0200)
committerPhil Sutter <phil@nwl.cc>
Sat, 27 Jul 2024 17:32:57 +0000 (19:32 +0200)
Calling nft_cmd_free() in error case segfaults otherwise if the to be
freed object is not part of a list yet.

Exposed by commit eab75ed36a4f2 ("nft: Avoid memleak in error path of
nft_cmd_new()"), but belongs to commit a7f1e208cdf9c (and may go well
along with it).

Fixes: a7f1e208cdf9c ("nft: split parsing from netlink commands")
Signed-off-by: Phil Sutter <phil@nwl.cc>
iptables/nft-cmd.c

index b38da9bdc1c0b0a74e244706de9d5a391840bf45..58d5aa11e90d2ceee45c2500fde180d258883327 100644 (file)
@@ -28,6 +28,7 @@ struct nft_cmd *nft_cmd_new(struct nft_handle *h, int command,
        struct nft_cmd *cmd;
 
        cmd = xtables_calloc(1, sizeof(struct nft_cmd));
+       INIT_LIST_HEAD(&cmd->head);
        cmd->error.lineno = h->error.lineno;
        cmd->command = command;
        cmd->table = xtables_strdup(table);