From ec95b84e8d2f0e406cd15282f5b31fba7b3e84ce Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Mon, 9 Mar 2020 20:51:21 -0700 Subject: [PATCH] silence a warning about unsafe snprintf() call --- lib/dns/rpz.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/dns/rpz.c b/lib/dns/rpz.c index d194a169e0..a2f2e4b7ea 100644 --- a/lib/dns/rpz.c +++ b/lib/dns/rpz.c @@ -713,12 +713,12 @@ ip2name(const dns_rpz_cidr_key_t *tgt_ip, dns_rpz_prefix_t tgt_prefix, (tgt_ip->w[3] >> 8) & 0xffU, (tgt_ip->w[3] >> 16) & 0xffU, (tgt_ip->w[3] >> 24) & 0xffU); - if (len < 0 || len > (int)sizeof(str)) { + if (len < 0 || (size_t)len >= sizeof(str)) { return (ISC_R_FAILURE); } } else { len = snprintf(str, sizeof(str), "%d", tgt_prefix); - if (len == -1) { + if (len < 0 || (size_t)len >= sizeof(str)) { return (ISC_R_FAILURE); } @@ -753,15 +753,19 @@ ip2name(const dns_rpz_cidr_key_t *tgt_ip, dns_rpz_prefix_t tgt_prefix, } for (n = 0; n <= 7; ++n) { - INSIST(len < (int)sizeof(str)); + INSIST(len > 0 && (size_t)len < sizeof(str)); if (n == best_first) { - len += snprintf(str + len, sizeof(str) - len, - ".zz"); + i = snprintf(str + len, sizeof(str) - len, + ".zz"); n += best_len - 1; } else { - len += snprintf(str + len, sizeof(str) - len, - ".%x", w[n]); + i = snprintf(str + len, sizeof(str) - len, + ".%x", w[n]); } + if (i < 0 || (size_t)i >= (size_t)(sizeof(str) - len)) { + return (ISC_R_FAILURE); + } + len += i; } }