* [PATCH libnftnl] src: Change parameters of SNPRINTF_BUFFER_SIZE macro.
@ 2017-09-20 16:23 Varsha Rao
2017-09-20 16:23 ` [PATCH libnftnl] src: Buffer is null terminated Varsha Rao
2017-09-27 12:07 ` [PATCH libnftnl] src: Change parameters of SNPRINTF_BUFFER_SIZE macro Pablo Neira Ayuso
0 siblings, 2 replies; 4+ messages in thread
From: Varsha Rao @ 2017-09-20 16:23 UTC (permalink / raw)
To: Pablo Neira Ayuso, netfilter-devel; +Cc: Varsha Rao
SNPRINTF_BUFFER_SIZE() macro declaration and definition is changed so
that it accepts three arguments ret, remain and offset. Parameters size
and len are not required instead parameter remain keeps track of
available space in the buffer.
Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
---
include/utils.h | 9 ++--
src/chain.c | 39 ++++++++--------
src/expr.c | 6 +--
src/expr/bitwise.c | 18 ++++----
src/expr/byteorder.c | 6 +--
src/expr/cmp.c | 10 ++--
src/expr/ct.c | 12 ++---
src/expr/data_reg.c | 52 ++++++++++-----------
src/expr/dup.c | 6 +--
src/expr/dynset.c | 27 +++++------
src/expr/fib.c | 20 ++++----
src/expr/fwd.c | 7 +--
src/expr/hash.c | 16 ++++---
src/expr/immediate.c | 18 ++++----
src/expr/log.c | 35 +++++++-------
src/expr/lookup.c | 14 +++---
src/expr/nat.c | 23 +++++-----
src/expr/numgen.c | 14 +++---
src/expr/queue.c | 14 +++---
src/expr/range.c | 14 +++---
src/expr/redir.c | 10 ++--
src/gen.c | 14 +++---
src/object.c | 27 +++++------
src/rule.c | 70 ++++++++++++++--------------
src/ruleset.c | 88 +++++++++++++++++------------------
src/set.c | 126 ++++++++++++++++++++++++++-------------------------
src/set_elem.c | 81 +++++++++++++++++----------------
src/table.c | 16 +++----
28 files changed, 403 insertions(+), 389 deletions(-)
diff --git a/include/utils.h b/include/utils.h
index 2f5cf34..e1c2efe 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -50,14 +50,13 @@ void __nftnl_assert_attr_exists(uint16_t attr, uint16_t attr_max,
__nftnl_assert_attr_exists(_attr, _attr_max, __FILE__, __LINE__); \
})
-#define SNPRINTF_BUFFER_SIZE(ret, size, len, offset) \
+#define SNPRINTF_BUFFER_SIZE(ret, remain, offset) \
if (ret < 0) \
ret = 0; \
offset += ret; \
- if (ret > len) \
- ret = len; \
- size += ret; \
- len -= ret;
+ if (ret > remain) \
+ ret = remain; \
+ remain -= ret; \
const char *nftnl_family2str(uint32_t family);
int nftnl_str2family(const char *family);
diff --git a/src/chain.c b/src/chain.c
index e5b9fe3..44c2613 100644
--- a/src/chain.c
+++ b/src/chain.c
@@ -788,32 +788,33 @@ static int nftnl_chain_export(char *buf, size_t size,
static int nftnl_chain_snprintf_default(char *buf, size_t size,
const struct nftnl_chain *c)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = snprintf(buf, len, "%s %s %s use %u",
+ ret = snprintf(buf, remain, "%s %s %s use %u",
nftnl_family2str(c->family), c->table, c->name, c->use);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (c->flags & (1 << NFTNL_CHAIN_HOOKNUM)) {
- ret = snprintf(buf + offset, len, " type %s hook %s prio %d",
+ ret = snprintf(buf + offset, remain, " type %s hook %s prio %d",
c->type, nftnl_hooknum2str(c->family, c->hooknum),
c->prio);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (c->flags & (1 << NFTNL_CHAIN_POLICY)) {
- ret = snprintf(buf + offset, len, " policy %s",
+ ret = snprintf(buf + offset, remain, " policy %s",
nftnl_verdict2str(c->policy));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf + offset, len,
+ ret = snprintf(buf + offset, remain,
" packets %"PRIu64" bytes %"PRIu64"",
c->packets, c->bytes);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (c->flags & (1 << NFTNL_CHAIN_DEV)) {
- ret = snprintf(buf + offset, len, " dev %s ", c->dev);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " dev %s ",
+ c->dev);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
}
@@ -824,27 +825,27 @@ static int nftnl_chain_cmd_snprintf(char *buf, size_t size,
const struct nftnl_chain *c, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_chain_snprintf_default(buf+offset, len, c);
+ ret = nftnl_chain_snprintf_default(buf+offset, remain, c);
break;
case NFTNL_OUTPUT_XML:
case NFTNL_OUTPUT_JSON:
- ret = nftnl_chain_export(buf+offset, len, c, type);
+ ret = nftnl_chain_export(buf+offset, remain, c, type);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/expr.c b/src/expr.c
index 10ba2c4..475ef6b 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -279,13 +279,13 @@ int nftnl_expr_snprintf(char *buf, size_t size, const struct nftnl_expr *expr,
uint32_t type, uint32_t flags)
{
int ret;
- unsigned int offset = 0, len = size;
+ unsigned int offset = 0, remain = size;
if (!expr->ops->snprintf)
return 0;
- ret = expr->ops->snprintf(buf+offset, len, type, flags, expr);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = expr->ops->snprintf(buf+offset, remain, type, flags, expr);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/expr/bitwise.c b/src/expr/bitwise.c
index 0febc9d..865aaf0 100644
--- a/src/expr/bitwise.c
+++ b/src/expr/bitwise.c
@@ -233,22 +233,22 @@ static int nftnl_expr_bitwise_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
struct nftnl_expr_bitwise *bitwise = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "reg %u = (reg=%u & ",
+ ret = snprintf(buf, remain, "reg %u = (reg=%u & ",
bitwise->dreg, bitwise->sreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf+offset, len, &bitwise->mask,
+ ret = nftnl_data_reg_snprintf(buf+offset, remain, &bitwise->mask,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, ") ^ ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, ") ^ ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf+offset, len, &bitwise->xor,
+ ret = nftnl_data_reg_snprintf(buf+offset, remain, &bitwise->xor,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/expr/byteorder.c b/src/expr/byteorder.c
index 3805307..47c04cf 100644
--- a/src/expr/byteorder.c
+++ b/src/expr/byteorder.c
@@ -258,12 +258,12 @@ static int nftnl_expr_byteorder_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
struct nftnl_expr_byteorder *byteorder = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "reg %u = %s(reg %u, %u, %u) ",
+ ret = snprintf(buf, remain, "reg %u = %s(reg %u, %u, %u) ",
byteorder->dreg, bo2str(byteorder->op),
byteorder->sreg, byteorder->size, byteorder->len);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/expr/cmp.c b/src/expr/cmp.c
index 353e907..8156d69 100644
--- a/src/expr/cmp.c
+++ b/src/expr/cmp.c
@@ -229,15 +229,15 @@ static int nftnl_expr_cmp_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
struct nftnl_expr_cmp *cmp = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "%s reg %u ",
+ ret = snprintf(buf, remain, "%s reg %u ",
cmp2str(cmp->op), cmp->sreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf+offset, len, &cmp->data,
+ ret = nftnl_data_reg_snprintf(buf+offset, remain, &cmp->data,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/expr/ct.c b/src/expr/ct.c
index 676dfb6..82aad58 100644
--- a/src/expr/ct.c
+++ b/src/expr/ct.c
@@ -289,25 +289,25 @@ static int
nftnl_expr_ct_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
struct nftnl_expr_ct *ct = nftnl_expr_data(e);
if (e->flags & (1 << NFTNL_EXPR_CT_SREG)) {
ret = snprintf(buf, size, "set %s with reg %u ",
ctkey2str(ct->key), ct->sreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_CT_DREG)) {
- ret = snprintf(buf, len, "load %s => reg %u ",
+ ret = snprintf(buf, remain, "load %s => reg %u ",
ctkey2str(ct->key), ct->dreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (nftnl_expr_is_set(e, NFTNL_EXPR_CT_DIR)) {
- ret = snprintf(buf+offset, len, ", dir %s ",
+ ret = snprintf(buf+offset, remain, ", dir %s ",
ctdir2str(ct->dir));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c
index 0249258..3abe0df 100644
--- a/src/expr/data_reg.c
+++ b/src/expr/data_reg.c
@@ -101,34 +101,34 @@ nftnl_data_reg_value_snprintf_json(char *buf, size_t size,
const union nftnl_data_reg *reg,
uint32_t flags)
{
- int len = size, offset = 0, ret, i, j;
+ int remain = size, offset = 0, ret, i, j;
uint32_t utemp;
uint8_t *tmp;
- ret = snprintf(buf, len, "\"reg\":{\"type\":\"value\",");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "\"reg\":{\"type\":\"value\",");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, "\"len\":%u,", reg->len);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "\"len\":%u,", reg->len);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < div_round_up(reg->len, sizeof(uint32_t)); i++) {
- ret = snprintf(buf+offset, len, "\"data%d\":\"0x", i);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "\"data%d\":\"0x", i);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
utemp = htonl(reg->val[i]);
tmp = (uint8_t *)&utemp;
for (j = 0; j<sizeof(uint32_t); j++) {
- ret = snprintf(buf+offset, len, "%.02x", tmp[j]);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "%.02x", tmp[j]);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, "\",");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "\",");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
offset--;
- ret = snprintf(buf+offset, len, "}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
@@ -138,11 +138,11 @@ nftnl_data_reg_value_snprintf_default(char *buf, size_t size,
const union nftnl_data_reg *reg,
uint32_t flags)
{
- int len = size, offset = 0, ret, i;
+ int remain = size, offset = 0, ret, i;
for (i = 0; i < div_round_up(reg->len, sizeof(uint32_t)); i++) {
- ret = snprintf(buf+offset, len, "0x%.8x ", reg->val[i]);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "0x%.8x ", reg->val[i]);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
@@ -153,14 +153,14 @@ nftnl_data_reg_verdict_snprintf_def(char *buf, size_t size,
const union nftnl_data_reg *reg,
uint32_t flags)
{
- int len = size, offset = 0, ret = 0;
+ int remain = size, offset = 0, ret = 0;
ret = snprintf(buf, size, "%s ", nftnl_verdict2str(reg->verdict));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (reg->chain != NULL) {
- ret = snprintf(buf+offset, len, "-> %s ", reg->chain);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "-> %s ", reg->chain);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
@@ -171,20 +171,20 @@ nftnl_data_reg_verdict_snprintf_json(char *buf, size_t size,
const union nftnl_data_reg *reg,
uint32_t flags)
{
- int len = size, offset = 0, ret = 0;
+ int remain = size, offset = 0, ret = 0;
ret = snprintf(buf, size, "\"reg\":{\"type\":\"verdict\","
"\"verdict\":\"%s\"", nftnl_verdict2str(reg->verdict));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (reg->chain != NULL) {
- ret = snprintf(buf+offset, len, ",\"chain\":\"%s\"",
+ ret = snprintf(buf+offset, remain, ",\"chain\":\"%s\"",
reg->chain);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, "}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/expr/dup.c b/src/expr/dup.c
index 9aa332b..ed8e620 100644
--- a/src/expr/dup.c
+++ b/src/expr/dup.c
@@ -151,17 +151,17 @@ static int nftnl_expr_dup_snprintf_default(char *buf, size_t len,
const struct nftnl_expr *e,
uint32_t flags)
{
- int size = len, offset = 0, ret;
+ int remain = len, offset = 0, ret;
struct nftnl_expr_dup *dup = nftnl_expr_data(e);
if (e->flags & (1 << NFTNL_EXPR_DUP_SREG_ADDR)) {
ret = snprintf(buf + offset, len, "sreg_addr %u ", dup->sreg_addr);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_DUP_SREG_DEV)) {
ret = snprintf(buf + offset, len, "sreg_dev %u ", dup->sreg_dev);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/expr/dynset.c b/src/expr/dynset.c
index f7b99ea..68fa14e 100644
--- a/src/expr/dynset.c
+++ b/src/expr/dynset.c
@@ -276,34 +276,35 @@ nftnl_expr_dynset_snprintf_default(char *buf, size_t size,
{
struct nftnl_expr_dynset *dynset = nftnl_expr_data(e);
struct nftnl_expr *expr;
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "%s reg_key %u set %s ",
+ ret = snprintf(buf, remain, "%s reg_key %u set %s ",
op2str(dynset->op), dynset->sreg_key, dynset->set_name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_EXPR_DYNSET_SREG_DATA)) {
- ret = snprintf(buf+offset, len, "sreg_data %u ", dynset->sreg_data);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "sreg_data %u ",
+ dynset->sreg_data);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_DYNSET_TIMEOUT)) {
- ret = snprintf(buf+offset, len, "timeout %"PRIu64"ms ",
+ ret = snprintf(buf+offset, remain, "timeout %"PRIu64"ms ",
dynset->timeout);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_DYNSET_EXPR)) {
expr = dynset->expr;
- ret = snprintf(buf+offset, len, "expr [ %s ",
+ ret = snprintf(buf+offset, remain, "expr [ %s ",
expr->ops->name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_expr_snprintf(buf+offset, len, expr,
+ ret = nftnl_expr_snprintf(buf+offset, remain, expr,
NFTNL_OUTPUT_DEFAULT,
NFTNL_OF_EVENT_ANY);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, "] ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "] ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/expr/fib.c b/src/expr/fib.c
index f3be081..b922b26 100644
--- a/src/expr/fib.c
+++ b/src/expr/fib.c
@@ -172,7 +172,7 @@ nftnl_expr_fib_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
struct nftnl_expr_fib *fib = nftnl_expr_data(e);
- int len = size, offset = 0, ret, i;
+ int remain = size, offset = 0, ret, i;
uint32_t flags = fib->flags & ~NFTA_FIB_F_PRESENT;
uint32_t present_flag = fib->flags & NFTA_FIB_F_PRESENT;
static const struct {
@@ -188,27 +188,29 @@ nftnl_expr_fib_snprintf_default(char *buf, size_t size,
for (i = 0; i < (sizeof(tab) / sizeof(tab[0])); i++) {
if (flags & tab[i].bit) {
- ret = snprintf(buf + offset, len, "%s ", tab[i].name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%s ",
+ tab[i].name);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
flags &= ~tab[i].bit;
if (flags) {
- ret = snprintf(buf + offset, len, ". ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, ". ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
}
}
if (flags) {
- ret = snprintf(buf + offset, len, "unknown 0x%" PRIx32, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "unknown 0x%" PRIx32,
+ flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf + offset, len, "%s%s => reg %d ",
+ ret = snprintf(buf + offset, remain, "%s%s => reg %d ",
fib_type_str(fib->result),
present_flag ? " present" : "",
fib->dreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/expr/fwd.c b/src/expr/fwd.c
index c30d494..1312ea1 100644
--- a/src/expr/fwd.c
+++ b/src/expr/fwd.c
@@ -132,12 +132,13 @@ static int nftnl_expr_fwd_snprintf_default(char *buf, size_t len,
const struct nftnl_expr *e,
uint32_t flags)
{
- int size = len, offset = 0, ret;
+ int remain = len, offset = 0, ret;
struct nftnl_expr_fwd *fwd = nftnl_expr_data(e);
if (e->flags & (1 << NFTNL_EXPR_FWD_SREG_DEV)) {
- ret = snprintf(buf + offset, len, "sreg_dev %u ", fwd->sreg_dev);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "sreg_dev %u ",
+ fwd->sreg_dev);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/expr/hash.c b/src/expr/hash.c
index d870510..fcc4fa5 100644
--- a/src/expr/hash.c
+++ b/src/expr/hash.c
@@ -229,29 +229,31 @@ nftnl_expr_hash_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
struct nftnl_expr_hash *hash = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
switch (hash->type) {
case NFT_HASH_SYM:
ret =
- snprintf(buf, len, "reg %u = symhash() %% mod %u ", hash->dreg,
+ snprintf(buf, remain, "reg %u = symhash() %% mod %u ",
+ hash->dreg,
hash->modulus);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
break;
case NFT_HASH_JENKINS:
default:
ret =
- snprintf(buf, len,
+ snprintf(buf, remain,
"reg %u = jhash(reg %u, %u, 0x%x) %% mod %u ",
hash->dreg, hash->sreg, hash->len, hash->seed,
hash->modulus);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
break;
}
if (hash->offset) {
- ret = snprintf(buf + offset, len, "offset %u ", hash->offset);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "offset %u ",
+ hash->offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/expr/immediate.c b/src/expr/immediate.c
index 0b188cc..8a858da 100644
--- a/src/expr/immediate.c
+++ b/src/expr/immediate.c
@@ -233,26 +233,26 @@ nftnl_expr_immediate_snprintf_default(char *buf, size_t len,
const struct nftnl_expr *e,
uint32_t flags)
{
- int size = len, offset = 0, ret;
+ int remain = len, offset = 0, ret;
struct nftnl_expr_immediate *imm = nftnl_expr_data(e);
- ret = snprintf(buf, len, "reg %u ", imm->dreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "reg %u ", imm->dreg);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_EXPR_IMM_DATA)) {
- ret = nftnl_data_reg_snprintf(buf+offset, len, &imm->data,
+ ret = nftnl_data_reg_snprintf(buf+offset, remain, &imm->data,
NFTNL_OUTPUT_DEFAULT, flags, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
} else if (e->flags & (1 << NFTNL_EXPR_IMM_VERDICT)) {
- ret = nftnl_data_reg_snprintf(buf+offset, len, &imm->data,
+ ret = nftnl_data_reg_snprintf(buf+offset, remain, &imm->data,
NFTNL_OUTPUT_DEFAULT, flags, DATA_VERDICT);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
} else if (e->flags & (1 << NFTNL_EXPR_IMM_CHAIN)) {
- ret = nftnl_data_reg_snprintf(buf+offset, len, &imm->data,
+ ret = nftnl_data_reg_snprintf(buf+offset, remain, &imm->data,
NFTNL_OUTPUT_DEFAULT, flags, DATA_CHAIN);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/expr/log.c b/src/expr/log.c
index b642255..86d9651 100644
--- a/src/expr/log.c
+++ b/src/expr/log.c
@@ -229,44 +229,45 @@ static int nftnl_expr_log_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
struct nftnl_expr_log *log = nftnl_expr_data(e);
- int ret, offset = 0, len = size;
+ int ret, offset = 0, remain = size;
if (e->flags & (1 << NFTNL_EXPR_LOG_PREFIX)) {
- ret = snprintf(buf, len, "prefix %s ", log->prefix);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "prefix %s ", log->prefix);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_LOG_GROUP)) {
- ret = snprintf(buf + offset, len,
+ ret = snprintf(buf + offset, remain,
"group %u snaplen %u qthreshold %u ",
log->group, log->snaplen, log->qthreshold);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
} else {
if (e->flags & (1 << NFTNL_EXPR_LOG_LEVEL)) {
- ret = snprintf(buf + offset, len, "level %u ",
+ ret = snprintf(buf + offset, remain, "level %u ",
log->level);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_LOG_FLAGS)) {
if (log->flags & NF_LOG_TCPSEQ) {
- ret = snprintf(buf + offset, len, "tcpseq ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "tcpseq ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (log->flags & NF_LOG_TCPOPT) {
- ret = snprintf(buf + offset, len, "tcpopt ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "tcpopt ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (log->flags & NF_LOG_IPOPT) {
- ret = snprintf(buf + offset, len, "ipopt ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "ipopt ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (log->flags & NF_LOG_UID) {
- ret = snprintf(buf + offset, len, "uid ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "uid ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (log->flags & NF_LOG_MACDECODE) {
- ret = snprintf(buf + offset, len, "macdecode ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain,
+ "macdecode ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
}
}
diff --git a/src/expr/lookup.c b/src/expr/lookup.c
index 861815f..e5adfd4 100644
--- a/src/expr/lookup.c
+++ b/src/expr/lookup.c
@@ -219,20 +219,20 @@ static int
nftnl_expr_lookup_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
struct nftnl_expr_lookup *l = nftnl_expr_data(e);
- ret = snprintf(buf, len, "reg %u set %s ", l->sreg, l->set_name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "reg %u set %s ", l->sreg, l->set_name);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_EXPR_LOOKUP_DREG)) {
- ret = snprintf(buf+offset, len, "dreg %u ", l->dreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "dreg %u ", l->dreg);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_LOOKUP_FLAGS)) {
- ret = snprintf(buf + offset, len, "0x%x ", l->flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "0x%x ", l->flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/expr/nat.c b/src/expr/nat.c
index 29bc3a2..ac189e6 100644
--- a/src/expr/nat.c
+++ b/src/expr/nat.c
@@ -304,31 +304,32 @@ nftnl_expr_nat_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
struct nftnl_expr_nat *nat = nftnl_expr_data(e);
- int len = size, offset = 0, ret = 0;
+ int remain = size, offset = 0, ret = 0;
- ret = snprintf(buf, len, "%s ", nat2str(nat->type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "%s ", nat2str(nat->type));
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, "%s ", nftnl_family2str(nat->family));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "%s ",
+ nftnl_family2str(nat->family));
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_EXPR_NAT_REG_ADDR_MIN)) {
- ret = snprintf(buf+offset, len,
+ ret = snprintf(buf+offset, remain,
"addr_min reg %u addr_max reg %u ",
nat->sreg_addr_min, nat->sreg_addr_max);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_NAT_REG_PROTO_MIN)) {
- ret = snprintf(buf+offset, len,
+ ret = snprintf(buf+offset, remain,
"proto_min reg %u proto_max reg %u ",
nat->sreg_proto_min, nat->sreg_proto_max);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_NAT_FLAGS)) {
- ret = snprintf(buf+offset, len, "flags %u", nat->flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "flags %u", nat->flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/expr/numgen.c b/src/expr/numgen.c
index a15f03a..1369b01 100644
--- a/src/expr/numgen.c
+++ b/src/expr/numgen.c
@@ -176,26 +176,26 @@ nftnl_expr_ng_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
struct nftnl_expr_ng *ng = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
switch (ng->type) {
case NFT_NG_INCREMENTAL:
- ret = snprintf(buf, len, "reg %u = inc mod %u ",
+ ret = snprintf(buf, remain, "reg %u = inc mod %u ",
ng->dreg, ng->modulus);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
break;
case NFT_NG_RANDOM:
- ret = snprintf(buf, len, "reg %u = random mod %u ",
+ ret = snprintf(buf, remain, "reg %u = random mod %u ",
ng->dreg, ng->modulus);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
break;
default:
return 0;
}
if (ng->offset) {
- ret = snprintf(buf + offset, len, "offset %u ", ng->offset);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "offset %u ", ng->offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/expr/queue.c b/src/expr/queue.c
index 8a9deda..f62db9f 100644
--- a/src/expr/queue.c
+++ b/src/expr/queue.c
@@ -176,38 +176,38 @@ static int nftnl_expr_queue_snprintf_default(char *buf, size_t len,
const struct nftnl_expr *e)
{
struct nftnl_expr_queue *queue = nftnl_expr_data(e);
- int ret, size = len, offset = 0;
+ int ret, remain = len, offset = 0;
uint16_t total_queues;
if (e->flags & (1 << NFTNL_EXPR_QUEUE_NUM)) {
total_queues = queue->queuenum + queue->queues_total - 1;
ret = snprintf(buf + offset, len, "num %u", queue->queuenum);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (queue->queues_total && total_queues != queue->queuenum) {
ret = snprintf(buf + offset, len, "-%u", total_queues);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
ret = snprintf(buf + offset, len, " ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_QUEUE_SREG_QNUM)) {
ret = snprintf(buf + offset, len, "sreg_qnum %u ",
queue->sreg_qnum);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (e->flags & (1 << NFTNL_EXPR_QUEUE_FLAGS)) {
if (queue->flags & (NFT_QUEUE_FLAG_BYPASS)) {
ret = snprintf(buf + offset, len, "bypass ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (queue->flags & (NFT_QUEUE_FLAG_CPU_FANOUT)) {
ret = snprintf(buf + offset, len, "fanout ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
}
return offset;
diff --git a/src/expr/range.c b/src/expr/range.c
index 8c8ce12..b2789ff 100644
--- a/src/expr/range.c
+++ b/src/expr/range.c
@@ -243,19 +243,19 @@ static int nftnl_expr_range_snprintf_default(char *buf, size_t size,
const struct nftnl_expr *e)
{
struct nftnl_expr_range *range = nftnl_expr_data(e);
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
- ret = snprintf(buf, len, "%s reg %u ",
+ ret = snprintf(buf, remain, "%s reg %u ",
expr_range_str[range->op], range->sreg);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf + offset, len, &range->data_from,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &range->data_from,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf + offset, len, &range->data_to,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &range->data_to,
NFTNL_OUTPUT_DEFAULT, 0, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/expr/redir.c b/src/expr/redir.c
index 43538d5..b2aa345 100644
--- a/src/expr/redir.c
+++ b/src/expr/redir.c
@@ -176,25 +176,25 @@ static int nftnl_expr_redir_export(char *buf, size_t size,
static int nftnl_expr_redir_snprintf_default(char *buf, size_t len,
const struct nftnl_expr *e)
{
- int ret, size = len, offset = 0;
+ int ret, remain = len, offset = 0;
struct nftnl_expr_redir *redir = nftnl_expr_data(e);
if (nftnl_expr_is_set(e, NFTNL_EXPR_REDIR_REG_PROTO_MIN)) {
ret = snprintf(buf + offset, len, "proto_min reg %u ",
redir->sreg_proto_min);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (nftnl_expr_is_set(e, NFTNL_EXPR_REDIR_REG_PROTO_MAX)) {
ret = snprintf(buf + offset, len, "proto_max reg %u ",
redir->sreg_proto_max);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (nftnl_expr_is_set(e, NFTNL_EXPR_REDIR_FLAGS)) {
- ret = snprintf(buf + offset , len, "flags 0x%x ",
+ ret = snprintf(buf + offset, len, "flags 0x%x ",
redir->flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
diff --git a/src/gen.c b/src/gen.c
index 213562e..e1d5280 100644
--- a/src/gen.c
+++ b/src/gen.c
@@ -166,22 +166,22 @@ static int nftnl_gen_cmd_snprintf(char *buf, size_t size,
const struct nftnl_gen *gen, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_gen_snprintf_default(buf + offset, len, gen);
+ ret = nftnl_gen_snprintf_default(buf + offset, remain, gen);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/object.c b/src/object.c
index 9dc5b41..d15ec10 100644
--- a/src/object.c
+++ b/src/object.c
@@ -425,18 +425,19 @@ static int nftnl_obj_snprintf_dflt(char *buf, size_t size,
uint32_t type, uint32_t flags)
{
const char *name = obj->ops ? obj->ops->name : "(unknown)";
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
ret = snprintf(buf, size, "table %s name %s use %u [ %s ",
obj->table, obj->name, obj->use, name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (obj->ops) {
- ret = obj->ops->snprintf(buf + offset, offset, type, flags, obj);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = obj->ops->snprintf(buf + offset, offset, type, flags,
+ obj);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
ret = snprintf(buf + offset, offset, "]");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
@@ -445,27 +446,27 @@ static int nftnl_obj_cmd_snprintf(char *buf, size_t size,
const struct nftnl_obj *obj, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_obj_snprintf_dflt(buf + offset, len, obj, type,
+ ret = nftnl_obj_snprintf_dflt(buf + offset, remain, obj, type,
flags);
break;
case NFTNL_OUTPUT_JSON:
- ret = nftnl_obj_export(buf + offset, len, obj, type, flags);
+ ret = nftnl_obj_export(buf + offset, remain, obj, type, flags);
break;
case NFTNL_OUTPUT_XML:
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/rule.c b/src/rule.c
index 6c22141..5df8216 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -714,71 +714,71 @@ static int nftnl_rule_snprintf_default(char *buf, size_t size,
uint32_t type, uint32_t flags)
{
struct nftnl_expr *expr;
- int ret, len = size, offset = 0, i;
+ int ret, remain = size, offset = 0, i;
if (r->flags & (1 << NFTNL_RULE_FAMILY)) {
- ret = snprintf(buf+offset, len, "%s ",
+ ret = snprintf(buf+offset, remain, "%s ",
nftnl_family2str(r->family));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_TABLE)) {
- ret = snprintf(buf+offset, len, "%s ",
+ ret = snprintf(buf+offset, remain, "%s ",
r->table);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_CHAIN)) {
- ret = snprintf(buf+offset, len, "%s ",
+ ret = snprintf(buf+offset, remain, "%s ",
r->chain);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_HANDLE)) {
- ret = snprintf(buf+offset, len, "%llu ",
+ ret = snprintf(buf+offset, remain, "%llu ",
(unsigned long long)r->handle);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_POSITION)) {
- ret = snprintf(buf+offset, len, "%llu ",
+ ret = snprintf(buf+offset, remain, "%llu ",
(unsigned long long)r->position);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->flags & (1 << NFTNL_RULE_ID)) {
- ret = snprintf(buf + offset, len, "%u ", r->id);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%u ", r->id);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, "\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
list_for_each_entry(expr, &r->expr_list, head) {
- ret = snprintf(buf+offset, len, " [ %s ", expr->ops->name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, " [ %s ", expr->ops->name);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_expr_snprintf(buf+offset, len, expr,
+ ret = nftnl_expr_snprintf(buf+offset, remain, expr,
type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf+offset, len, "]\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "]\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (r->user.len) {
- ret = snprintf(buf+offset, len, " userdata = { ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, " userdata = { ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < r->user.len; i++) {
char *c = r->user.data;
- ret = snprintf(buf+offset, len, "%c",
+ ret = snprintf(buf+offset, remain, "%c",
isalnum(c[i]) ? c[i] : 0);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, " }\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, " }\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
@@ -789,21 +789,21 @@ static int nftnl_rule_cmd_snprintf(char *buf, size_t size,
const struct nftnl_rule *r, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
uint32_t inner_flags = flags;
inner_flags &= ~NFTNL_OF_EVENT_ANY;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_rule_snprintf_default(buf+offset, len, r, type,
+ ret = nftnl_rule_snprintf_default(buf+offset, remain, r, type,
inner_flags);
break;
case NFTNL_OUTPUT_JSON:
- ret = nftnl_rule_export(buf+offset, len, r, type,
+ ret = nftnl_rule_export(buf+offset, remain, r, type,
inner_flags);
break;
case NFTNL_OUTPUT_XML:
@@ -811,10 +811,10 @@ static int nftnl_rule_cmd_snprintf(char *buf, size_t size,
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/ruleset.c b/src/ruleset.c
index 6ef2956..aa23395 100644
--- a/src/ruleset.c
+++ b/src/ruleset.c
@@ -729,7 +729,7 @@ nftnl_ruleset_snprintf_table(char *buf, size_t size,
{
struct nftnl_table *t;
struct nftnl_table_list_iter *ti;
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
ti = nftnl_table_list_iter_create(rs->table_list);
if (ti == NULL)
@@ -737,14 +737,14 @@ nftnl_ruleset_snprintf_table(char *buf, size_t size,
t = nftnl_table_list_iter_next(ti);
while (t != NULL) {
- ret = nftnl_table_snprintf(buf+offset, len, t, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_table_snprintf(buf+offset, remain, t, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
t = nftnl_table_list_iter_next(ti);
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf+offset, remain, "%s",
nftnl_ruleset_o_separator(t, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
nftnl_table_list_iter_destroy(ti);
@@ -758,7 +758,7 @@ nftnl_ruleset_snprintf_chain(char *buf, size_t size,
{
struct nftnl_chain *c;
struct nftnl_chain_list_iter *ci;
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
ci = nftnl_chain_list_iter_create(rs->chain_list);
if (ci == NULL)
@@ -766,14 +766,14 @@ nftnl_ruleset_snprintf_chain(char *buf, size_t size,
c = nftnl_chain_list_iter_next(ci);
while (c != NULL) {
- ret = nftnl_chain_snprintf(buf+offset, len, c, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_chain_snprintf(buf+offset, remain, c, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
c = nftnl_chain_list_iter_next(ci);
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf+offset, remain, "%s",
nftnl_ruleset_o_separator(c, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
nftnl_chain_list_iter_destroy(ci);
@@ -787,7 +787,7 @@ nftnl_ruleset_snprintf_set(char *buf, size_t size,
{
struct nftnl_set *s;
struct nftnl_set_list_iter *si;
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
si = nftnl_set_list_iter_create(rs->set_list);
if (si == NULL)
@@ -795,14 +795,14 @@ nftnl_ruleset_snprintf_set(char *buf, size_t size,
s = nftnl_set_list_iter_next(si);
while (s != NULL) {
- ret = nftnl_set_snprintf(buf+offset, len, s, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_set_snprintf(buf+offset, remain, s, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
s = nftnl_set_list_iter_next(si);
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf+offset, remain, "%s",
nftnl_ruleset_o_separator(s, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
nftnl_set_list_iter_destroy(si);
@@ -816,7 +816,7 @@ nftnl_ruleset_snprintf_rule(char *buf, size_t size,
{
struct nftnl_rule *r;
struct nftnl_rule_list_iter *ri;
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
ri = nftnl_rule_list_iter_create(rs->rule_list);
if (ri == NULL)
@@ -824,14 +824,14 @@ nftnl_ruleset_snprintf_rule(char *buf, size_t size,
r = nftnl_rule_list_iter_next(ri);
while (r != NULL) {
- ret = nftnl_rule_snprintf(buf+offset, len, r, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_rule_snprintf(buf+offset, remain, r, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
r = nftnl_rule_list_iter_next(ri);
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf+offset, remain, "%s",
nftnl_ruleset_o_separator(r, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
nftnl_rule_list_iter_destroy(ri);
@@ -842,24 +842,25 @@ static int
nftnl_ruleset_do_snprintf(char *buf, size_t size, const struct nftnl_ruleset *rs,
uint32_t cmd, uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
void *prev = NULL;
uint32_t inner_flags = flags;
/* dont pass events flags to child calls of _snprintf() */
inner_flags &= ~NFTNL_OF_EVENT_ANY;
- ret = snprintf(buf + offset, len, "%s", nftnl_ruleset_o_opentag(type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%s",
+ nftnl_ruleset_o_opentag(type));
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (nftnl_ruleset_is_set(rs, NFTNL_RULESET_TABLELIST) &&
(!nftnl_table_list_is_empty(rs->table_list))) {
- ret = nftnl_ruleset_snprintf_table(buf+offset, len, rs,
+ ret = nftnl_ruleset_snprintf_table(buf+offset, remain, rs,
type, inner_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (ret > 0)
prev = rs->table_list;
@@ -867,13 +868,13 @@ nftnl_ruleset_do_snprintf(char *buf, size_t size, const struct nftnl_ruleset *rs
if (nftnl_ruleset_is_set(rs, NFTNL_RULESET_CHAINLIST) &&
(!nftnl_chain_list_is_empty(rs->chain_list))) {
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf+offset, remain, "%s",
nftnl_ruleset_o_separator(prev, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_ruleset_snprintf_chain(buf+offset, len, rs,
+ ret = nftnl_ruleset_snprintf_chain(buf+offset, remain, rs,
type, inner_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (ret > 0)
prev = rs->chain_list;
@@ -881,13 +882,13 @@ nftnl_ruleset_do_snprintf(char *buf, size_t size, const struct nftnl_ruleset *rs
if (nftnl_ruleset_is_set(rs, NFTNL_RULESET_SETLIST) &&
(!nftnl_set_list_is_empty(rs->set_list))) {
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf+offset, remain, "%s",
nftnl_ruleset_o_separator(prev, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_ruleset_snprintf_set(buf+offset, len, rs,
+ ret = nftnl_ruleset_snprintf_set(buf+offset, remain, rs,
type, inner_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (ret > 0)
prev = rs->set_list;
@@ -895,20 +896,21 @@ nftnl_ruleset_do_snprintf(char *buf, size_t size, const struct nftnl_ruleset *rs
if (nftnl_ruleset_is_set(rs, NFTNL_RULESET_RULELIST) &&
(!nftnl_rule_list_is_empty(rs->rule_list))) {
- ret = snprintf(buf+offset, len, "%s",
+ ret = snprintf(buf+offset, remain, "%s",
nftnl_ruleset_o_separator(prev, type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_ruleset_snprintf_rule(buf+offset, len, rs,
+ ret = nftnl_ruleset_snprintf_rule(buf+offset, remain, rs,
type, inner_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf + offset, len, "%s", nftnl_ruleset_o_closetag(type));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "%s",
+ nftnl_ruleset_o_closetag(type));
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/set.c b/src/set.c
index 1158e38..720177b 100644
--- a/src/set.c
+++ b/src/set.c
@@ -738,95 +738,96 @@ static int nftnl_set_snprintf_json(char *buf, size_t size,
const struct nftnl_set *s,
uint32_t type, uint32_t flags)
{
- int len = size, offset = 0, ret;
+ int remain = size, offset = 0, ret;
struct nftnl_set_elem *elem;
- ret = snprintf(buf, len, "{\"set\":{");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "{\"set\":{");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (s->flags & (1 << NFTNL_SET_NAME)) {
- ret = snprintf(buf + offset, len, "\"name\":\"%s\"",
+ ret = snprintf(buf + offset, remain, "\"name\":\"%s\"",
s->name);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_TABLE)) {
- ret = snprintf(buf + offset, len, ",\"table\":\"%s\"",
+ ret = snprintf(buf + offset, remain, ",\"table\":\"%s\"",
s->table);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_FLAGS)) {
- ret = snprintf(buf + offset, len, ",\"flags\":%u",
+ ret = snprintf(buf + offset, remain, ",\"flags\":%u",
s->set_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_FAMILY)) {
- ret = snprintf(buf + offset, len, ",\"family\":\"%s\"",
+ ret = snprintf(buf + offset, remain, ",\"family\":\"%s\"",
nftnl_family2str(s->family));
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_KEY_TYPE)) {
- ret = snprintf(buf + offset, len, ",\"key_type\":%u",
+ ret = snprintf(buf + offset, remain, ",\"key_type\":%u",
s->key_type);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_KEY_LEN)) {
- ret = snprintf(buf + offset, len, ",\"key_len\":%u",
+ ret = snprintf(buf + offset, remain, ",\"key_len\":%u",
s->key_len);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if(s->flags & (1 << NFTNL_SET_DATA_TYPE)) {
- ret = snprintf(buf + offset, len,
+ ret = snprintf(buf + offset, remain,
",\"data_type\":%u", s->data_type);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if(s->flags & (1 << NFTNL_SET_DATA_LEN)) {
- ret = snprintf(buf + offset, len, ",\"data_len\":%u", s->data_len);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, ",\"data_len\":%u",
+ s->data_len);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_OBJ_TYPE)) {
- ret = snprintf(buf + offset, len,
+ ret = snprintf(buf + offset, remain,
",\"obj_type\":%u", s->obj_type);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_POLICY)) {
- ret = snprintf(buf + offset, len, ",\"policy\":%u",
+ ret = snprintf(buf + offset, remain, ",\"policy\":%u",
s->policy);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_DESC_SIZE)) {
- ret = snprintf(buf + offset, len, ",\"desc_size\":%u",
+ ret = snprintf(buf + offset, remain, ",\"desc_size\":%u",
s->desc.size);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
/* Empty set? Skip printinf of elements */
if (list_empty(&s->element_list)){
- ret = snprintf(buf + offset, len, "}}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "}}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
- ret = snprintf(buf + offset, len, ",\"set_elem\":[");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, ",\"set_elem\":[");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
list_for_each_entry(elem, &s->element_list, head) {
- ret = snprintf(buf + offset, len, "{");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "{");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_set_elem_snprintf(buf + offset, len, elem, type,
+ ret = nftnl_set_elem_snprintf(buf + offset, remain, elem, type,
flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf + offset, len, "},");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "},");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
/* Overwrite trailing ", " from last set element */
offset --;
- ret = snprintf(buf + offset, len, "]}}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "]}}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
@@ -836,48 +837,49 @@ static int nftnl_set_snprintf_default(char *buf, size_t size,
uint32_t type, uint32_t flags)
{
int ret;
- int len = size, offset = 0;
+ int remain = size, offset = 0;
struct nftnl_set_elem *elem;
- ret = snprintf(buf, len, "%s %s %x",
+ ret = snprintf(buf, remain, "%s %s %x",
s->name, s->table, s->set_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (s->flags & (1 << NFTNL_SET_TIMEOUT)) {
- ret = snprintf(buf + offset, len, " timeout %"PRIu64"ms",
+ ret = snprintf(buf + offset, remain, " timeout %"PRIu64"ms",
s->timeout);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_GC_INTERVAL)) {
- ret = snprintf(buf + offset, len, " gc_interval %ums",
+ ret = snprintf(buf + offset, remain, " gc_interval %ums",
s->gc_interval);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_POLICY)) {
- ret = snprintf(buf + offset, len, " policy %u", s->policy);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " policy %u", s->policy);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
if (s->flags & (1 << NFTNL_SET_DESC_SIZE)) {
- ret = snprintf(buf + offset, len, " size %u", s->desc.size);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, " size %u", s->desc.size);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
/* Empty set? Skip printinf of elements */
if (list_empty(&s->element_list))
return offset;
- ret = snprintf(buf+offset, len, "\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
list_for_each_entry(elem, &s->element_list, head) {
- ret = snprintf(buf+offset, len, "\t");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "\t");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_set_elem_snprintf(buf+offset, len, elem, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_set_elem_snprintf(buf+offset, remain, elem, type,
+ flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
@@ -887,7 +889,7 @@ static int nftnl_set_cmd_snprintf(char *buf, size_t size,
const struct nftnl_set *s, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
uint32_t inner_flags = flags;
if (type == NFTNL_OUTPUT_XML)
@@ -896,26 +898,26 @@ static int nftnl_set_cmd_snprintf(char *buf, size_t size,
/* prevent set_elems to print as events */
inner_flags &= ~NFTNL_OF_EVENT_ANY;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_set_snprintf_default(buf+offset, len, s, type,
+ ret = nftnl_set_snprintf_default(buf+offset, remain, s, type,
inner_flags);
break;
case NFTNL_OUTPUT_JSON:
- ret = nftnl_set_snprintf_json(buf+offset, len, s, type,
+ ret = nftnl_set_snprintf_json(buf+offset, remain, s, type,
inner_flags);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/set_elem.c b/src/set_elem.c
index 433b896..40fbf33 100644
--- a/src/set_elem.c
+++ b/src/set_elem.c
@@ -605,22 +605,22 @@ static int nftnl_set_elem_snprintf_json(char *buf, size_t size,
const struct nftnl_set_elem *e,
uint32_t flags)
{
- int ret, len = size, offset = 0, type = -1;
+ int ret, remain = size, offset = 0, type = -1;
if (e->flags & (1 << NFTNL_SET_ELEM_FLAGS)) {
- ret = snprintf(buf, len, "\"flags\":%u,", e->set_elem_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "\"flags\":%u,", e->set_elem_flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf + offset, len, "\"key\":{");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "\"key\":{");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf + offset, len, &e->key,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &e->key,
NFTNL_OUTPUT_JSON, flags, DATA_VALUE);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf + offset, len, "}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->flags & (1 << NFTNL_SET_ELEM_DATA))
type = DATA_VALUE;
@@ -630,15 +630,15 @@ static int nftnl_set_elem_snprintf_json(char *buf, size_t size,
type = DATA_VERDICT;
if (type != -1) {
- ret = snprintf(buf + offset, len, ",\"data\":{");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, ",\"data\":{");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_data_reg_snprintf(buf + offset, len, &e->data,
+ ret = nftnl_data_reg_snprintf(buf + offset, remain, &e->data,
NFTNL_OUTPUT_JSON, flags, type);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = snprintf(buf + offset, len, "}");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf + offset, remain, "}");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
@@ -647,41 +647,41 @@ static int nftnl_set_elem_snprintf_json(char *buf, size_t size,
static int nftnl_set_elem_snprintf_default(char *buf, size_t size,
const struct nftnl_set_elem *e)
{
- int ret, len = size, offset = 0, i;
+ int ret, remain = size, offset = 0, i;
- ret = snprintf(buf, len, "element ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf, remain, "element ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < div_round_up(e->key.len, sizeof(uint32_t)); i++) {
- ret = snprintf(buf+offset, len, "%.8x ", e->key.val[i]);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "%.8x ", e->key.val[i]);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, " : ");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, " : ");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < div_round_up(e->data.len, sizeof(uint32_t)); i++) {
- ret = snprintf(buf+offset, len, "%.8x ", e->data.val[i]);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "%.8x ", e->data.val[i]);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, "%u [end]", e->set_elem_flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, "%u [end]", e->set_elem_flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
if (e->user.len) {
- ret = snprintf(buf+offset, len, " userdata = {");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, " userdata = {");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
for (i = 0; i < e->user.len; i++) {
char *c = e->user.data;
- ret = snprintf(buf+offset, len, "%c",
+ ret = snprintf(buf+offset, remain, "%c",
isalnum(c[i]) ? c[i] : 0);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
- ret = snprintf(buf+offset, len, " }\n");
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = snprintf(buf+offset, remain, " }\n");
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
}
return offset;
@@ -692,29 +692,30 @@ static int nftnl_set_elem_cmd_snprintf(char *buf, size_t size,
uint32_t cmd, uint32_t type,
uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
if (type == NFTNL_OUTPUT_XML)
return 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_set_elem_snprintf_default(buf+offset, len, e);
+ ret = nftnl_set_elem_snprintf_default(buf+offset, remain, e);
break;
case NFTNL_OUTPUT_JSON:
- ret = nftnl_set_elem_snprintf_json(buf+offset, len, e, flags);
+ ret = nftnl_set_elem_snprintf_json(buf+offset, remain, e,
+ flags);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
diff --git a/src/table.c b/src/table.c
index a7d5a8f..d426bcb 100644
--- a/src/table.c
+++ b/src/table.c
@@ -376,26 +376,26 @@ static int nftnl_table_cmd_snprintf(char *buf, size_t size,
const struct nftnl_table *t, uint32_t cmd,
uint32_t type, uint32_t flags)
{
- int ret, len = size, offset = 0;
+ int ret, remain = size, offset = 0;
- ret = nftnl_cmd_header_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
- ret = nftnl_table_snprintf_default(buf+offset, len, t);
+ ret = nftnl_table_snprintf_default(buf+offset, remain, t);
break;
case NFTNL_OUTPUT_XML:
case NFTNL_OUTPUT_JSON:
- ret = nftnl_table_export(buf+offset, len, t, type);
+ ret = nftnl_table_export(buf+offset, remain, t, type);
break;
default:
return -1;
}
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
- ret = nftnl_cmd_footer_snprintf(buf + offset, len, cmd, type, flags);
- SNPRINTF_BUFFER_SIZE(ret, size, len, offset);
+ ret = nftnl_cmd_footer_snprintf(buf + offset, remain, cmd, type, flags);
+ SNPRINTF_BUFFER_SIZE(ret, remain, offset);
return offset;
}
--
2.13.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH libnftnl] src: Buffer is null terminated.
2017-09-20 16:23 [PATCH libnftnl] src: Change parameters of SNPRINTF_BUFFER_SIZE macro Varsha Rao
@ 2017-09-20 16:23 ` Varsha Rao
2017-09-27 12:07 ` Pablo Neira Ayuso
2017-09-27 12:07 ` [PATCH libnftnl] src: Change parameters of SNPRINTF_BUFFER_SIZE macro Pablo Neira Ayuso
1 sibling, 1 reply; 4+ messages in thread
From: Varsha Rao @ 2017-09-20 16:23 UTC (permalink / raw)
To: Pablo Neira Ayuso, netfilter-devel; +Cc: Varsha Rao
In _snprintf() functions definition the buffer is null terminated.
Signed-off-by: Varsha Rao <rvarsha016@gmail.com>
---
src/chain.c | 13 +++++++++++--
src/common.c | 6 ++++++
src/expr.c | 3 +++
src/expr/bitwise.c | 3 +++
src/expr/byteorder.c | 3 +++
src/expr/cmp.c | 3 +++
src/expr/counter.c | 3 +++
src/expr/ct.c | 3 +++
src/expr/data_reg.c | 3 +++
src/expr/dup.c | 3 +++
src/expr/dynset.c | 2 ++
src/expr/exthdr.c | 3 +++
src/expr/fib.c | 3 +++
src/expr/fwd.c | 3 +++
src/expr/hash.c | 3 +++
src/expr/immediate.c | 3 +++
src/expr/limit.c | 3 +++
src/expr/log.c | 3 +++
src/expr/lookup.c | 2 ++
src/expr/masq.c | 3 +++
src/expr/match.c | 3 +++
src/expr/meta.c | 3 +++
src/expr/nat.c | 3 +++
src/expr/numgen.c | 3 +++
src/expr/objref.c | 3 +++
src/expr/payload.c | 3 +++
src/expr/queue.c | 2 ++
src/expr/quota.c | 3 +++
src/expr/range.c | 3 +++
src/expr/redir.c | 3 +++
src/expr/reject.c | 3 +++
src/expr/rt.c | 3 +++
src/expr/target.c | 3 +++
src/gen.c | 11 ++++++++++-
src/obj/counter.c | 3 +++
src/obj/ct_helper.c | 3 +++
src/obj/limit.c | 3 +++
src/obj/quota.c | 3 +++
src/object.c | 9 +++++++++
src/rule.c | 9 +++++++++
src/ruleset.c | 9 +++++++++
src/set.c | 9 +++++++++
src/set_elem.c | 8 ++++++++
src/table.c | 9 +++++++++
44 files changed, 182 insertions(+), 3 deletions(-)
diff --git a/src/chain.c b/src/chain.c
index 44c2613..46189ef 100644
--- a/src/chain.c
+++ b/src/chain.c
@@ -827,6 +827,9 @@ static int nftnl_chain_cmd_snprintf(char *buf, size_t size,
{
int ret, remain = size, offset = 0;
+ if (size)
+ buf[0] = '\0';
+
ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
SNPRINTF_BUFFER_SIZE(ret, remain, offset);
@@ -853,14 +856,20 @@ static int nftnl_chain_cmd_snprintf(char *buf, size_t size,
int nftnl_chain_snprintf(char *buf, size_t size, const struct nftnl_chain *c,
uint32_t type, uint32_t flags)
{
- return nftnl_chain_cmd_snprintf(buf, size, c, nftnl_flag2cmd(flags), type,
- flags);
+ if (size)
+ buf[0] = '\0';
+
+ return nftnl_chain_cmd_snprintf(buf, size, c, nftnl_flag2cmd(flags),
+ type, flags);
}
EXPORT_SYMBOL(nftnl_chain_snprintf);
static int nftnl_chain_do_snprintf(char *buf, size_t size, const void *c,
uint32_t cmd, uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_chain_snprintf(buf, size, c, type, flags);
}
diff --git a/src/common.c b/src/common.c
index a95883c..ba5a49f 100644
--- a/src/common.c
+++ b/src/common.c
@@ -94,6 +94,9 @@ EXPORT_SYMBOL(nftnl_parse_perror);
int nftnl_cmd_header_snprintf(char *buf, size_t size, uint32_t cmd, uint32_t type,
uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
NFTNL_BUF_INIT(b, buf, size);
if (cmd == NFTNL_CMD_UNSPEC)
@@ -135,6 +138,9 @@ int nftnl_cmd_header_fprintf(FILE *fp, uint32_t cmd, uint32_t type,
int nftnl_cmd_footer_snprintf(char *buf, size_t size, uint32_t cmd, uint32_t type,
uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
NFTNL_BUF_INIT(b, buf, size);
if (cmd == NFTNL_CMD_UNSPEC)
diff --git a/src/expr.c b/src/expr.c
index 475ef6b..7438dc1 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -281,6 +281,9 @@ int nftnl_expr_snprintf(char *buf, size_t size, const struct nftnl_expr *expr,
int ret;
unsigned int offset = 0, remain = size;
+ if (size)
+ buf[0] = '\0';
+
if (!expr->ops->snprintf)
return 0;
diff --git a/src/expr/bitwise.c b/src/expr/bitwise.c
index 865aaf0..2797d33 100644
--- a/src/expr/bitwise.c
+++ b/src/expr/bitwise.c
@@ -257,6 +257,9 @@ static int
nftnl_expr_bitwise_snprintf(char *buf, size_t size, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (size)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_bitwise_snprintf_default(buf, size, e);
diff --git a/src/expr/byteorder.c b/src/expr/byteorder.c
index 47c04cf..4bb95b4 100644
--- a/src/expr/byteorder.c
+++ b/src/expr/byteorder.c
@@ -272,6 +272,9 @@ static int
nftnl_expr_byteorder_snprintf(char *buf, size_t size, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (size)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_byteorder_snprintf_default(buf, size, e);
diff --git a/src/expr/cmp.c b/src/expr/cmp.c
index 8156d69..1276a0c 100644
--- a/src/expr/cmp.c
+++ b/src/expr/cmp.c
@@ -246,6 +246,9 @@ static int
nftnl_expr_cmp_snprintf(char *buf, size_t size, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (size)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_cmp_snprintf_default(buf, size, e);
diff --git a/src/expr/counter.c b/src/expr/counter.c
index 21901e8..5c196d4 100644
--- a/src/expr/counter.c
+++ b/src/expr/counter.c
@@ -164,6 +164,9 @@ static int nftnl_expr_counter_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags,
const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_counter_snprintf_default(buf, len, e);
diff --git a/src/expr/ct.c b/src/expr/ct.c
index 82aad58..8ed3cf4 100644
--- a/src/expr/ct.c
+++ b/src/expr/ct.c
@@ -317,6 +317,9 @@ static int
nftnl_expr_ct_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_ct_snprintf_default(buf, len, e);
diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c
index 3abe0df..85b356e 100644
--- a/src/expr/data_reg.c
+++ b/src/expr/data_reg.c
@@ -194,6 +194,9 @@ int nftnl_data_reg_snprintf(char *buf, size_t size,
uint32_t output_format, uint32_t flags,
int reg_type)
{
+ if (size)
+ buf[0] = '\0';
+
switch(reg_type) {
case DATA_VALUE:
switch(output_format) {
diff --git a/src/expr/dup.c b/src/expr/dup.c
index ed8e620..e2171f4 100644
--- a/src/expr/dup.c
+++ b/src/expr/dup.c
@@ -170,6 +170,9 @@ static int nftnl_expr_dup_snprintf_default(char *buf, size_t len,
static int nftnl_expr_dup_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_dup_snprintf_default(buf, len, e, flags);
diff --git a/src/expr/dynset.c b/src/expr/dynset.c
index 68fa14e..2d14238 100644
--- a/src/expr/dynset.c
+++ b/src/expr/dynset.c
@@ -314,6 +314,8 @@ static int
nftnl_expr_dynset_snprintf(char *buf, size_t size, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (size)
+ buf[0] = '\0';
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
diff --git a/src/expr/exthdr.c b/src/expr/exthdr.c
index 75cafbc..11766fa 100644
--- a/src/expr/exthdr.c
+++ b/src/expr/exthdr.c
@@ -339,6 +339,9 @@ static int
nftnl_expr_exthdr_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_exthdr_snprintf_default(buf, len, e);
diff --git a/src/expr/fib.c b/src/expr/fib.c
index b922b26..cbadeef 100644
--- a/src/expr/fib.c
+++ b/src/expr/fib.c
@@ -236,6 +236,9 @@ static int
nftnl_expr_fib_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_fib_snprintf_default(buf, len, e);
diff --git a/src/expr/fwd.c b/src/expr/fwd.c
index 1312ea1..38923df 100644
--- a/src/expr/fwd.c
+++ b/src/expr/fwd.c
@@ -147,6 +147,9 @@ static int nftnl_expr_fwd_snprintf_default(char *buf, size_t len,
static int nftnl_expr_fwd_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_fwd_snprintf_default(buf, len, e, flags);
diff --git a/src/expr/hash.c b/src/expr/hash.c
index fcc4fa5..066c790 100644
--- a/src/expr/hash.c
+++ b/src/expr/hash.c
@@ -288,6 +288,9 @@ static int
nftnl_expr_hash_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_hash_snprintf_default(buf, len, e);
diff --git a/src/expr/immediate.c b/src/expr/immediate.c
index 8a858da..9eb6508 100644
--- a/src/expr/immediate.c
+++ b/src/expr/immediate.c
@@ -262,6 +262,9 @@ static int
nftnl_expr_immediate_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_immediate_snprintf_default(buf, len, e, flags);
diff --git a/src/expr/limit.c b/src/expr/limit.c
index 856ab18..8e1f02a 100644
--- a/src/expr/limit.c
+++ b/src/expr/limit.c
@@ -243,6 +243,9 @@ static int
nftnl_expr_limit_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_limit_snprintf_default(buf, len, e);
diff --git a/src/expr/log.c b/src/expr/log.c
index 86d9651..161327b 100644
--- a/src/expr/log.c
+++ b/src/expr/log.c
@@ -301,6 +301,9 @@ static int
nftnl_expr_log_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_log_snprintf_default(buf, len, e);
diff --git a/src/expr/lookup.c b/src/expr/lookup.c
index e5adfd4..5840b47 100644
--- a/src/expr/lookup.c
+++ b/src/expr/lookup.c
@@ -242,6 +242,8 @@ static int
nftnl_expr_lookup_snprintf(char *buf, size_t size, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (size)
+ buf[0] = '\0';
switch(type) {
case NFTNL_OUTPUT_DEFAULT:
diff --git a/src/expr/masq.c b/src/expr/masq.c
index 7c235d3..1c75ee9 100644
--- a/src/expr/masq.c
+++ b/src/expr/masq.c
@@ -190,6 +190,9 @@ static int nftnl_expr_masq_snprintf_default(char *buf, size_t len,
static int nftnl_expr_masq_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_masq_snprintf_default(buf, len, e);
diff --git a/src/expr/match.c b/src/expr/match.c
index dd09e1e..af659b3 100644
--- a/src/expr/match.c
+++ b/src/expr/match.c
@@ -200,6 +200,9 @@ nftnl_expr_match_snprintf(char *buf, size_t len, uint32_t type,
{
struct nftnl_expr_match *match = nftnl_expr_data(e);
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return snprintf(buf, len, "name %s rev %u ",
diff --git a/src/expr/meta.c b/src/expr/meta.c
index 2c75841..b5c27e6 100644
--- a/src/expr/meta.c
+++ b/src/expr/meta.c
@@ -252,6 +252,9 @@ static int
nftnl_expr_meta_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_meta_snprintf_default(buf, len, e);
diff --git a/src/expr/nat.c b/src/expr/nat.c
index ac189e6..55e6de8 100644
--- a/src/expr/nat.c
+++ b/src/expr/nat.c
@@ -339,6 +339,9 @@ static int
nftnl_expr_nat_snprintf(char *buf, size_t size, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (size)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_nat_snprintf_default(buf, size, e);
diff --git a/src/expr/numgen.c b/src/expr/numgen.c
index 1369b01..9b5b1b7 100644
--- a/src/expr/numgen.c
+++ b/src/expr/numgen.c
@@ -224,6 +224,9 @@ static int
nftnl_expr_ng_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_ng_snprintf_default(buf, len, e);
diff --git a/src/expr/objref.c b/src/expr/objref.c
index 4cfa3cb..b4b3383 100644
--- a/src/expr/objref.c
+++ b/src/expr/objref.c
@@ -236,6 +236,9 @@ static int nftnl_expr_objref_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags,
const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_objref_snprintf_default(buf, len, e);
diff --git a/src/expr/payload.c b/src/expr/payload.c
index 91e1587..897fc77 100644
--- a/src/expr/payload.c
+++ b/src/expr/payload.c
@@ -290,6 +290,9 @@ nftnl_expr_payload_snprintf(char *buf, size_t len, uint32_t type,
{
struct nftnl_expr_payload *payload = nftnl_expr_data(e);
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
if (payload->sreg)
diff --git a/src/expr/queue.c b/src/expr/queue.c
index f62db9f..e0fb785 100644
--- a/src/expr/queue.c
+++ b/src/expr/queue.c
@@ -235,6 +235,8 @@ static int
nftnl_expr_queue_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
diff --git a/src/expr/quota.c b/src/expr/quota.c
index 667e6e1..c247b0a 100644
--- a/src/expr/quota.c
+++ b/src/expr/quota.c
@@ -183,6 +183,9 @@ static int nftnl_expr_quota_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags,
const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_quota_snprintf_default(buf, len, e);
diff --git a/src/expr/range.c b/src/expr/range.c
index b2789ff..c7bb7c7 100644
--- a/src/expr/range.c
+++ b/src/expr/range.c
@@ -263,6 +263,9 @@ static int nftnl_expr_range_snprintf_default(char *buf, size_t size,
static int nftnl_expr_range_snprintf(char *buf, size_t size, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (size)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_range_snprintf_default(buf, size, e);
diff --git a/src/expr/redir.c b/src/expr/redir.c
index b2aa345..9fb634a 100644
--- a/src/expr/redir.c
+++ b/src/expr/redir.c
@@ -204,6 +204,9 @@ static int
nftnl_expr_redir_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_redir_snprintf_default(buf, len, e);
diff --git a/src/expr/reject.c b/src/expr/reject.c
index 11d8b20..1e6fdf5 100644
--- a/src/expr/reject.c
+++ b/src/expr/reject.c
@@ -164,6 +164,9 @@ static int
nftnl_expr_reject_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_reject_snprintf_default(buf, len, e);
diff --git a/src/expr/rt.c b/src/expr/rt.c
index 62c01a0..10cb1e2 100644
--- a/src/expr/rt.c
+++ b/src/expr/rt.c
@@ -203,6 +203,9 @@ static int
nftnl_expr_rt_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags, const struct nftnl_expr *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_expr_rt_snprintf_default(buf, len, e);
diff --git a/src/expr/target.c b/src/expr/target.c
index ed4bf7d..3c58b03 100644
--- a/src/expr/target.c
+++ b/src/expr/target.c
@@ -200,6 +200,9 @@ nftnl_expr_target_snprintf(char *buf, size_t len, uint32_t type,
{
struct nftnl_expr_target *target = nftnl_expr_data(e);
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return snprintf(buf, len, "name %s rev %u ",
diff --git a/src/gen.c b/src/gen.c
index e1d5280..a03648b 100644
--- a/src/gen.c
+++ b/src/gen.c
@@ -168,6 +168,9 @@ static int nftnl_gen_cmd_snprintf(char *buf, size_t size,
{
int ret, remain = size, offset = 0;
+ if (size)
+ buf[0] = '\0';
+
ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
SNPRINTF_BUFFER_SIZE(ret, remain, offset);
@@ -188,7 +191,10 @@ static int nftnl_gen_cmd_snprintf(char *buf, size_t size,
int nftnl_gen_snprintf(char *buf, size_t size, const struct nftnl_gen *gen,
uint32_t type, uint32_t flags)
-{;
+{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_gen_cmd_snprintf(buf, size, gen, nftnl_flag2cmd(flags), type,
flags);
}
@@ -197,6 +203,9 @@ EXPORT_SYMBOL(nftnl_gen_snprintf);
static int nftnl_gen_do_snprintf(char *buf, size_t size, const void *gen,
uint32_t cmd, uint32_t type, uint32_t flags)
{
+ if (size)
+ buf = '\0';
+
return nftnl_gen_snprintf(buf, size, gen, type, flags);
}
diff --git a/src/obj/counter.c b/src/obj/counter.c
index beadc93..332bb2b 100644
--- a/src/obj/counter.c
+++ b/src/obj/counter.c
@@ -158,6 +158,9 @@ static int nftnl_obj_counter_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags,
const struct nftnl_obj *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_obj_counter_snprintf_default(buf, len, e);
diff --git a/src/obj/ct_helper.c b/src/obj/ct_helper.c
index d6d3111..62569fe 100644
--- a/src/obj/ct_helper.c
+++ b/src/obj/ct_helper.c
@@ -185,6 +185,9 @@ static int nftnl_obj_ct_helper_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags,
const struct nftnl_obj *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_obj_ct_helper_snprintf_default(buf, len, e);
diff --git a/src/obj/limit.c b/src/obj/limit.c
index 8cf0faa..7f8bcf7 100644
--- a/src/obj/limit.c
+++ b/src/obj/limit.c
@@ -212,6 +212,9 @@ static int nftnl_obj_limit_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags,
const struct nftnl_obj *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_obj_limit_snprintf_default(buf, len, e);
diff --git a/src/obj/quota.c b/src/obj/quota.c
index d5757b2..6d36784 100644
--- a/src/obj/quota.c
+++ b/src/obj/quota.c
@@ -179,6 +179,9 @@ static int nftnl_obj_quota_snprintf(char *buf, size_t len, uint32_t type,
uint32_t flags,
const struct nftnl_obj *e)
{
+ if (len)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
return nftnl_obj_quota_snprintf_default(buf, len, e);
diff --git a/src/object.c b/src/object.c
index d15ec10..8dc83b3 100644
--- a/src/object.c
+++ b/src/object.c
@@ -448,6 +448,9 @@ static int nftnl_obj_cmd_snprintf(char *buf, size_t size,
{
int ret, remain = size, offset = 0;
+ if (size)
+ buf[0] = '\0';
+
ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
SNPRINTF_BUFFER_SIZE(ret, remain, offset);
@@ -474,6 +477,9 @@ static int nftnl_obj_cmd_snprintf(char *buf, size_t size,
int nftnl_obj_snprintf(char *buf, size_t size, const struct nftnl_obj *obj,
uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_obj_cmd_snprintf(buf, size, obj, nftnl_flag2cmd(flags),
type, flags);
}
@@ -482,6 +488,9 @@ EXPORT_SYMBOL(nftnl_obj_snprintf);
static int nftnl_obj_do_snprintf(char *buf, size_t size, const void *obj,
uint32_t cmd, uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_obj_snprintf(buf, size, obj, type, flags);
}
diff --git a/src/rule.c b/src/rule.c
index 5df8216..04788f4 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -792,6 +792,9 @@ static int nftnl_rule_cmd_snprintf(char *buf, size_t size,
int ret, remain = size, offset = 0;
uint32_t inner_flags = flags;
+ if (size)
+ buf[0] = '\0';
+
inner_flags &= ~NFTNL_OF_EVENT_ANY;
ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
@@ -822,6 +825,9 @@ static int nftnl_rule_cmd_snprintf(char *buf, size_t size,
int nftnl_rule_snprintf(char *buf, size_t size, const struct nftnl_rule *r,
uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_rule_cmd_snprintf(buf, size, r, nftnl_flag2cmd(flags), type,
flags);
}
@@ -830,6 +836,9 @@ EXPORT_SYMBOL(nftnl_rule_snprintf);
static int nftnl_rule_do_snprintf(char *buf, size_t size, const void *r,
uint32_t cmd, uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_rule_snprintf(buf, size, r, type, flags);
}
diff --git a/src/ruleset.c b/src/ruleset.c
index aa23395..443388f 100644
--- a/src/ruleset.c
+++ b/src/ruleset.c
@@ -846,6 +846,9 @@ nftnl_ruleset_do_snprintf(char *buf, size_t size, const struct nftnl_ruleset *rs
void *prev = NULL;
uint32_t inner_flags = flags;
+ if (size)
+ buf[0] = '\0';
+
/* dont pass events flags to child calls of _snprintf() */
inner_flags &= ~NFTNL_OF_EVENT_ANY;
@@ -919,6 +922,9 @@ static int nftnl_ruleset_cmd_snprintf(char *buf, size_t size,
const struct nftnl_ruleset *r, uint32_t cmd,
uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
case NFTNL_OUTPUT_JSON:
@@ -933,6 +939,9 @@ static int nftnl_ruleset_cmd_snprintf(char *buf, size_t size,
int nftnl_ruleset_snprintf(char *buf, size_t size, const struct nftnl_ruleset *r,
uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
switch (type) {
case NFTNL_OUTPUT_DEFAULT:
case NFTNL_OUTPUT_JSON:
diff --git a/src/set.c b/src/set.c
index 720177b..3147bf2 100644
--- a/src/set.c
+++ b/src/set.c
@@ -895,6 +895,9 @@ static int nftnl_set_cmd_snprintf(char *buf, size_t size,
if (type == NFTNL_OUTPUT_XML)
return 0;
+ if (size)
+ buf[0] = '\0';
+
/* prevent set_elems to print as events */
inner_flags &= ~NFTNL_OF_EVENT_ANY;
@@ -925,6 +928,9 @@ static int nftnl_set_cmd_snprintf(char *buf, size_t size,
int nftnl_set_snprintf(char *buf, size_t size, const struct nftnl_set *s,
uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_set_cmd_snprintf(buf, size, s, nftnl_flag2cmd(flags), type,
flags);
}
@@ -933,6 +939,9 @@ EXPORT_SYMBOL(nftnl_set_snprintf);
static int nftnl_set_do_snprintf(char *buf, size_t size, const void *s,
uint32_t cmd, uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_set_snprintf(buf, size, s, type, flags);
}
diff --git a/src/set_elem.c b/src/set_elem.c
index 40fbf33..9b59744 100644
--- a/src/set_elem.c
+++ b/src/set_elem.c
@@ -696,6 +696,8 @@ static int nftnl_set_elem_cmd_snprintf(char *buf, size_t size,
if (type == NFTNL_OUTPUT_XML)
return 0;
+ if (size)
+ buf[0] = '\0';
ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
SNPRINTF_BUFFER_SIZE(ret, remain, offset);
@@ -724,6 +726,9 @@ int nftnl_set_elem_snprintf(char *buf, size_t size,
const struct nftnl_set_elem *e,
uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_set_elem_cmd_snprintf(buf, size, e, nftnl_flag2cmd(flags),
type, flags);
}
@@ -733,6 +738,9 @@ static int nftnl_set_elem_do_snprintf(char *buf, size_t size, const void *e,
uint32_t cmd, uint32_t type,
uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_set_elem_snprintf(buf, size, e, type, flags);
}
diff --git a/src/table.c b/src/table.c
index d426bcb..4a0a896 100644
--- a/src/table.c
+++ b/src/table.c
@@ -378,6 +378,9 @@ static int nftnl_table_cmd_snprintf(char *buf, size_t size,
{
int ret, remain = size, offset = 0;
+ if (size)
+ buf[0] = '\0';
+
ret = nftnl_cmd_header_snprintf(buf + offset, remain, cmd, type, flags);
SNPRINTF_BUFFER_SIZE(ret, remain, offset);
@@ -403,6 +406,9 @@ static int nftnl_table_cmd_snprintf(char *buf, size_t size,
int nftnl_table_snprintf(char *buf, size_t size, const struct nftnl_table *t,
uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_table_cmd_snprintf(buf, size, t, nftnl_flag2cmd(flags), type,
flags);
}
@@ -411,6 +417,9 @@ EXPORT_SYMBOL(nftnl_table_snprintf);
static int nftnl_table_do_snprintf(char *buf, size_t size, const void *t,
uint32_t cmd, uint32_t type, uint32_t flags)
{
+ if (size)
+ buf[0] = '\0';
+
return nftnl_table_snprintf(buf, size, t, type, flags);
}
--
2.13.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH libnftnl] src: Change parameters of SNPRINTF_BUFFER_SIZE macro.
2017-09-20 16:23 [PATCH libnftnl] src: Change parameters of SNPRINTF_BUFFER_SIZE macro Varsha Rao
2017-09-20 16:23 ` [PATCH libnftnl] src: Buffer is null terminated Varsha Rao
@ 2017-09-27 12:07 ` Pablo Neira Ayuso
1 sibling, 0 replies; 4+ messages in thread
From: Pablo Neira Ayuso @ 2017-09-27 12:07 UTC (permalink / raw)
To: Varsha Rao; +Cc: netfilter-devel
On Wed, Sep 20, 2017 at 09:53:08PM +0530, Varsha Rao wrote:
> SNPRINTF_BUFFER_SIZE() macro declaration and definition is changed so
> that it accepts three arguments ret, remain and offset. Parameters size
> and len are not required instead parameter remain keeps track of
> available space in the buffer.
Applied, thanks Varsha.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH libnftnl] src: Buffer is null terminated.
2017-09-20 16:23 ` [PATCH libnftnl] src: Buffer is null terminated Varsha Rao
@ 2017-09-27 12:07 ` Pablo Neira Ayuso
0 siblings, 0 replies; 4+ messages in thread
From: Pablo Neira Ayuso @ 2017-09-27 12:07 UTC (permalink / raw)
To: Varsha Rao; +Cc: netfilter-devel
On Wed, Sep 20, 2017 at 09:53:09PM +0530, Varsha Rao wrote:
> In _snprintf() functions definition the buffer is null terminated.
Also applied, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-09-27 12:07 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-20 16:23 [PATCH libnftnl] src: Change parameters of SNPRINTF_BUFFER_SIZE macro Varsha Rao
2017-09-20 16:23 ` [PATCH libnftnl] src: Buffer is null terminated Varsha Rao
2017-09-27 12:07 ` Pablo Neira Ayuso
2017-09-27 12:07 ` [PATCH libnftnl] src: Change parameters of SNPRINTF_BUFFER_SIZE macro Pablo Neira Ayuso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).