summaryrefslogtreecommitdiffstats
path: root/extensions/ebt_string.c
diff options
context:
space:
mode:
authorDuncan Roe <duncan_roe@optusnet.com.au>2018-06-15 11:31:56 +1000
committerPablo Neira Ayuso <pablo@netfilter.org>2018-06-28 17:19:04 +0200
commit53d7e7a85207fdb1ce8612a12a6bc94710ecc552 (patch)
tree4f397de648c62ffe6b4ada415c237a9d2ac1f81e /extensions/ebt_string.c
parent56993546c80576986930f9bae7ae4ba744b1e508 (diff)
extensions: ebt_string: take action if snprintf discards data
56993546c805 ("extensions: fix build failure on fc28") eliminated a gcc warning that strncpy could make a string w/out a NUL terminator. snprintf guarantees NUL-termination (so fixes that possibility). But, snprintf may discard data to make room for the NUL. This patch errors straight away in that eventuality. Signed-off-by: Duncan Roe <duncan_roe@optusnet.com.au> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'extensions/ebt_string.c')
-rw-r--r--extensions/ebt_string.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/extensions/ebt_string.c b/extensions/ebt_string.c
index 3deff1b..7d24f80 100644
--- a/extensions/ebt_string.c
+++ b/extensions/ebt_string.c
@@ -168,7 +168,9 @@ static int parse(int c, char **argv, int argc, const struct ebt_u_entry *entry,
ebt_check_option2(flags, OPT_STRING_ALGO);
if (ebt_check_inverse2(optarg))
ebt_print_error2("Unexpected `!' after --string-algo");
- snprintf(info->algo, sizeof(info->algo), "%s", optarg);
+ if (snprintf(info->algo, sizeof(info->algo), "%s", optarg) >=
+ sizeof(info->algo))
+ ebt_print_error2("\"%s\" is truncated", info->algo);
break;
case STRING_ICASE:
ebt_check_option2(flags, OPT_STRING_ICASE);