]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
xtables: Simplify addr_mask freeing
authorPhil Sutter <phil@nwl.cc>
Mon, 27 Sep 2021 14:59:49 +0000 (16:59 +0200)
committerPhil Sutter <phil@nwl.cc>
Wed, 20 Oct 2021 09:32:54 +0000 (11:32 +0200)
Introduce a generic 'ptr' union field to pass to free().

Signed-off-by: Phil Sutter <phil@nwl.cc>
iptables/nft-shared.h
iptables/xtables.c

index 71094a28e73de7e9ac63a4f09a8e1df708aa4a48..44ad0811f40813ff7747f54fedae8f008d160b82 100644 (file)
@@ -177,6 +177,7 @@ struct addr_mask {
        union {
                struct in_addr  *v4;
                struct in6_addr *v6;
+               void *ptr;
        } addr;
 
        unsigned int naddrs;
@@ -184,6 +185,7 @@ struct addr_mask {
        union {
                struct in_addr  *v4;
                struct in6_addr *v6;
+               void *ptr;
        } mask;
 };
 
index 092edaaf89224e8208987ae034d2776099295f29..f45e36086dcb822845998e06567660387b98f4c2 100644 (file)
@@ -1021,17 +1021,10 @@ int do_commandx(struct nft_handle *h, int argc, char *argv[], char **table,
 
        nft_clear_iptables_command_state(&cs);
 
-       if (h->family == AF_INET) {
-               free(args.s.addr.v4);
-               free(args.s.mask.v4);
-               free(args.d.addr.v4);
-               free(args.d.mask.v4);
-       } else if (h->family == AF_INET6) {
-               free(args.s.addr.v6);
-               free(args.s.mask.v6);
-               free(args.d.addr.v6);
-               free(args.d.mask.v6);
-       }
+       free(args.s.addr.ptr);
+       free(args.s.mask.ptr);
+       free(args.d.addr.ptr);
+       free(args.d.mask.ptr);
        xtables_free_opts(1);
 
        return ret;