]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
src: simplify unsetters
authorPablo Neira Ayuso <pablo@netfilter.org>
Fri, 10 Jun 2016 13:07:13 +0000 (15:07 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 15 Jun 2016 11:26:32 +0000 (13:26 +0200)
If the attribute is set as we already check at the beginning of this
function, then we can release the object.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/chain.c
src/rule.c
src/ruleset.c
src/set.c
src/set_elem.c
src/table.c

index f5433d6693d40f6e3f3999a906cf11f326fc4e04..516b5532b9473c7a22d5f11bfb529949c1ec30b9 100644 (file)
@@ -119,18 +119,12 @@ void nftnl_chain_unset(struct nftnl_chain *c, uint16_t attr)
 
        switch (attr) {
        case NFTNL_CHAIN_TABLE:
-               if (c->table) {
-                       xfree(c->table);
-                       c->table = NULL;
-               }
+               xfree(c->table);
                break;
        case NFTNL_CHAIN_USE:
                break;
        case NFTNL_CHAIN_TYPE:
-               if (c->type) {
-                       xfree(c->type);
-                       c->type = NULL;
-               }
+               xfree(c->type);
                break;
        case NFTNL_CHAIN_NAME:
        case NFTNL_CHAIN_HOOKNUM:
@@ -142,10 +136,7 @@ void nftnl_chain_unset(struct nftnl_chain *c, uint16_t attr)
        case NFTNL_CHAIN_FAMILY:
                break;
        case NFTNL_CHAIN_DEV:
-               if (c->dev) {
-                       xfree(c->dev);
-                       c->dev = NULL;
-               }
+               xfree(c->dev);
                break;
        default:
                return;
index 3ab29cf0a75af10ace90231cd677cd68948eced7..bcc59a7150bb4454af18c0475c3327f300c06982 100644 (file)
@@ -95,16 +95,10 @@ void nftnl_rule_unset(struct nftnl_rule *r, uint16_t attr)
 
        switch (attr) {
        case NFTNL_RULE_TABLE:
-               if (r->table) {
-                       xfree(r->table);
-                       r->table = NULL;
-               }
+               xfree(r->table);
                break;
        case NFTNL_RULE_CHAIN:
-               if (r->chain) {
-                       xfree(r->chain);
-                       r->chain = NULL;
-               }
+               xfree(r->chain);
                break;
        case NFTNL_RULE_HANDLE:
        case NFTNL_RULE_COMPAT_PROTO:
index 414b7c4e78649ba76bc9f332766b1e79f02624f8..666bcc7a246b68c6676b338aed255ec3e739d303 100644 (file)
@@ -92,19 +92,15 @@ void nftnl_ruleset_unset(struct nftnl_ruleset *r, uint16_t attr)
        switch (attr) {
        case NFTNL_RULESET_TABLELIST:
                nftnl_table_list_free(r->table_list);
-               r->table_list = NULL;
                break;
        case NFTNL_RULESET_CHAINLIST:
                nftnl_chain_list_free(r->chain_list);
-               r->chain_list = NULL;
                break;
        case NFTNL_RULESET_SETLIST:
                nftnl_set_list_free(r->set_list);
-               r->set_list = NULL;
                break;
        case NFTNL_RULESET_RULELIST:
                nftnl_rule_list_free(r->rule_list);
-               r->rule_list = NULL;
                break;
        }
        r->flags &= ~(1 << attr);
index c23c37880e5a44c12ca29e94f95c4b8b4b4648f5..46a00076ed212bbe77b0da33304238a30eea777e 100644 (file)
--- a/src/set.c
+++ b/src/set.c
@@ -65,20 +65,15 @@ EXPORT_SYMBOL_ALIAS(nftnl_set_is_set, nft_set_attr_is_set);
 
 void nftnl_set_unset(struct nftnl_set *s, uint16_t attr)
 {
+       if (!(s->flags & (1 << attr)))
+               return;
+
        switch (attr) {
        case NFTNL_SET_TABLE:
-               if (s->flags & (1 << NFTNL_SET_TABLE))
-                       if (s->table) {
-                               xfree(s->table);
-                               s->table = NULL;
-                       }
+               xfree(s->table);
                break;
        case NFTNL_SET_NAME:
-               if (s->flags & (1 << NFTNL_SET_NAME))
-                       if (s->name) {
-                               xfree(s->name);
-                               s->name = NULL;
-                       }
+               xfree(s->name);
                break;
        case NFTNL_SET_FLAGS:
        case NFTNL_SET_KEY_TYPE:
index 1c8ea2b14e089d070e5b829bdf8cd62314d4f05b..b27e5a3ea44cee8ba4f6e1b1239aad55ea7c0a7e 100644 (file)
@@ -66,14 +66,12 @@ EXPORT_SYMBOL_ALIAS(nftnl_set_elem_is_set, nft_set_elem_attr_is_set);
 
 void nftnl_set_elem_unset(struct nftnl_set_elem *s, uint16_t attr)
 {
+       if (!(s->flags & (1 << attr)))
+               return;
+
        switch (attr) {
        case NFTNL_SET_ELEM_CHAIN:
-               if (s->flags & (1 << NFTNL_SET_ELEM_CHAIN)) {
-                       if (s->data.chain) {
-                               xfree(s->data.chain);
-                               s->data.chain = NULL;
-                       }
-               }
+               xfree(s->data.chain);
                break;
        case NFTNL_SET_ELEM_FLAGS:
        case NFTNL_SET_ELEM_KEY:        /* NFTA_SET_ELEM_KEY */
@@ -86,10 +84,7 @@ void nftnl_set_elem_unset(struct nftnl_set_elem *s, uint16_t attr)
                xfree(s->user.data);
                break;
        case NFTNL_SET_ELEM_EXPR:
-               if (s->flags & (1 << NFTNL_SET_ELEM_EXPR)) {
-                       nftnl_expr_free(s->expr);
-                       s->expr = NULL;
-               }
+               nftnl_expr_free(s->expr);
                break;
        default:
                return;
index 3201d40b394f4b2bddc240083099b87e64972327..412c6aa6b4e32621ddd6153cfbcb72192e80ac21 100644 (file)
@@ -64,10 +64,7 @@ void nftnl_table_unset(struct nftnl_table *t, uint16_t attr)
 
        switch (attr) {
        case NFTNL_TABLE_NAME:
-               if (t->name) {
-                       xfree(t->name);
-                       t->name = NULL;
-               }
+               xfree(t->name);
                break;
        case NFTNL_TABLE_FLAGS:
        case NFTNL_TABLE_FAMILY: