summaryrefslogtreecommitdiffstats
path: root/src/chain.c
diff options
context:
space:
mode:
authorCarlos Falgueras García <carlosfg@riseup.net>2016-07-11 18:07:40 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2016-07-11 19:14:54 +0200
commitbda7102d60bfdab2aa3f36ebd09a119206f264d0 (patch)
treeb53ca0f0bc4aefa48d408276f7b62f62c5a4ede5 /src/chain.c
parent8f1e916b9856785cb835a2d550c9605e86937055 (diff)
src: Fix nftnl_*_get_data() to return the real attribute length
All getters must set the memory size of the attributes, ie. this includes the nul-termination in strings. For references to opaque objects hidden behind the curtain, report a zero size. Signed-off-by: Carlos Falgueras García <carlosfg@riseup.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/chain.c')
-rw-r--r--src/chain.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/chain.c b/src/chain.c
index cab64b5..4c562fe 100644
--- a/src/chain.c
+++ b/src/chain.c
@@ -272,8 +272,10 @@ const void *nftnl_chain_get_data(const struct nftnl_chain *c, uint16_t attr,
switch(attr) {
case NFTNL_CHAIN_NAME:
+ *data_len = strlen(c->name) + 1;
return c->name;
case NFTNL_CHAIN_TABLE:
+ *data_len = strlen(c->table) + 1;
return c->table;
case NFTNL_CHAIN_HOOKNUM:
*data_len = sizeof(uint32_t);
@@ -303,6 +305,7 @@ const void *nftnl_chain_get_data(const struct nftnl_chain *c, uint16_t attr,
*data_len = sizeof(uint32_t);
return c->type;
case NFTNL_CHAIN_DEV:
+ *data_len = strlen(c->dev) + 1;
return c->dev;
}
return NULL;