summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/expect/snprintf.c3
-rw-r--r--src/expect/snprintf_default.c38
2 files changed, 14 insertions, 27 deletions
diff --git a/src/expect/snprintf.c b/src/expect/snprintf.c
index b981625..64a6589 100644
--- a/src/expect/snprintf.c
+++ b/src/expect/snprintf.c
@@ -26,8 +26,7 @@ int __snprintf_expect(char *buf,
}
/* NULL terminated string */
- if (snprintf(buf+size, len-size, "\0") == -1)
- return -1;
+ buf[size+1 > len ? len-1 : size] = '\0';
return size;
}
diff --git a/src/expect/snprintf_default.c b/src/expect/snprintf_default.c
index 1b64eb2..1014ef0 100644
--- a/src/expect/snprintf_default.c
+++ b/src/expect/snprintf_default.c
@@ -17,43 +17,31 @@ static int __snprintf_expect_proto(char *buf,
}
int __snprintf_expect_default(char *buf,
- unsigned int remain,
+ unsigned int len,
const struct nf_expect *exp,
unsigned int msg_type,
unsigned int flags)
{
- int ret = 0, size = 0;
+ int ret = 0, size = 0, offset = 0;
switch(msg_type) {
case NFCT_T_NEW:
- ret = snprintf(buf, remain, "%9s ", "[NEW]");
+ ret = snprintf(buf, len, "%9s ", "[NEW]");
break;
default:
break;
}
- if (ret == -1)
- return -1;
- size += ret;
- remain -= ret;
-
- ret = __snprintf_expect_proto(buf+size, remain, exp);
- if (ret == -1)
- return -1;
- size += ret;
- remain -= ret;
-
- ret = __snprintf_address(buf+size, remain, &exp->expected.tuple[__DIR_ORIG]);
- if (ret == -1)
- return -1;
- size += ret;
- remain -= ret;
-
- ret = __snprintf_proto(buf+size, remain, &exp->expected.tuple[__DIR_ORIG]);
- if (ret == -1)
- return -1;
- size += ret;
- remain -= ret;
+ BUFFER_SIZE(ret, size, len, offset);
+
+ ret = __snprintf_expect_proto(buf+offset, len, exp);
+ BUFFER_SIZE(ret, size, len, offset);
+
+ ret = __snprintf_address(buf+offset, len, &exp->expected.tuple[__DIR_ORIG]);
+ BUFFER_SIZE(ret, size, len, offset);
+
+ ret = __snprintf_proto(buf+offset, len, &exp->expected.tuple[__DIR_ORIG]);
+ BUFFER_SIZE(ret, size, len, offset);
/* Delete the last blank space */
size--;