From f585a8a3f0e24bb2d51b8876057d5835ba3172ba Mon Sep 17 00:00:00 2001 From: "/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org" Date: Thu, 7 Jun 2007 17:05:46 +0000 Subject: nfexp_snprintf behaves as snprintf C99 --- src/expect/snprintf.c | 3 +-- src/expect/snprintf_default.c | 38 +++++++++++++------------------------- 2 files changed, 14 insertions(+), 27 deletions(-) (limited to 'src') 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--; -- cgit v1.2.3