From e58b3f41aad8337749358c8f5393883ceab25dd9 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Fri, 7 Jun 2013 14:24:47 +0200 Subject: src: fix nft_*_unset function attribute that don't release data In (dde2039 src: add nft_*_unset functions), I mangled Arturo's patch to add a default case, but he was intentionally not adding it to unset attributes that require no memory releases. I prefered to add the attributes explicitly in the switch rather on failing back on the default action. Signed-off-by: Pablo Neira Ayuso --- src/chain.c | 9 +++++++++ src/rule.c | 6 ++++++ src/set.c | 4 ++++ src/set_elem.c | 4 ++++ src/table.c | 3 +++ 5 files changed, 26 insertions(+) diff --git a/src/chain.c b/src/chain.c index 530e045..7775dfc 100644 --- a/src/chain.c +++ b/src/chain.c @@ -79,6 +79,15 @@ void nft_chain_attr_unset(struct nft_chain *c, uint16_t attr) c->type = NULL; } break; + case NFT_CHAIN_ATTR_NAME: + case NFT_CHAIN_ATTR_HOOKNUM: + case NFT_CHAIN_ATTR_PRIO: + case NFT_CHAIN_ATTR_POLICY: + case NFT_CHAIN_ATTR_BYTES: + case NFT_CHAIN_ATTR_PACKETS: + case NFT_CHAIN_ATTR_HANDLE: + case NFT_CHAIN_ATTR_FAMILY: + break; default: return; } diff --git a/src/rule.c b/src/rule.c index b3e21d8..4c1672d 100644 --- a/src/rule.c +++ b/src/rule.c @@ -88,6 +88,12 @@ void nft_rule_attr_unset(struct nft_rule *r, uint16_t attr) r->chain = NULL; } break; + case NFT_RULE_ATTR_HANDLE: + case NFT_RULE_ATTR_FLAGS: + case NFT_RULE_ATTR_COMPAT_PROTO: + case NFT_RULE_ATTR_COMPAT_FLAGS: + case NFT_RULE_ATTR_FAMILY: + break; default: return; } diff --git a/src/set.c b/src/set.c index 029e2f2..8e8adad 100644 --- a/src/set.c +++ b/src/set.c @@ -73,6 +73,10 @@ void nft_set_attr_unset(struct nft_set *s, uint16_t attr) s->name = NULL; } break; + case NFT_SET_ATTR_FLAGS: + case NFT_SET_ATTR_KEY_TYPE: + case NFT_SET_ATTR_KEY_LEN: + break; default: return; } diff --git a/src/set_elem.c b/src/set_elem.c index 13047ae..fb03d71 100644 --- a/src/set_elem.c +++ b/src/set_elem.c @@ -55,6 +55,10 @@ void nft_set_elem_attr_unset(struct nft_set_elem *s, uint16_t attr) } } break; + case NFT_SET_ELEM_ATTR_FLAGS: + case NFT_SET_ELEM_ATTR_KEY: /* NFTA_SET_ELEM_KEY */ + case NFT_SET_ELEM_ATTR_VERDICT: /* NFTA_SET_ELEM_DATA */ + break; default: return; } diff --git a/src/table.c b/src/table.c index 937f9b5..f21a6ed 100644 --- a/src/table.c +++ b/src/table.c @@ -60,6 +60,9 @@ void nft_table_attr_unset(struct nft_table *t, uint16_t attr) } } break; + case NFT_TABLE_ATTR_FLAGS: + case NFT_TABLE_ATTR_FAMILY: + break; default: return; } -- cgit v1.2.3