summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/bind/lib/dns/masterdump.c2
-rw-r--r--usr.sbin/bind/lib/dns/name.c5
-rw-r--r--usr.sbin/bind/lib/dns/rdata.c2
-rw-r--r--usr.sbin/bind/lib/dns/sec/dst/dst_api.c4
-rw-r--r--usr.sbin/bind/lib/lwres/gethost.c19
-rw-r--r--usr.sbin/bind/lib/lwres/lwinetntop.c2
6 files changed, 23 insertions, 11 deletions
diff --git a/usr.sbin/bind/lib/dns/masterdump.c b/usr.sbin/bind/lib/dns/masterdump.c
index e52f5631824..1cd5bf433b8 100644
--- a/usr.sbin/bind/lib/dns/masterdump.c
+++ b/usr.sbin/bind/lib/dns/masterdump.c
@@ -397,7 +397,7 @@ rdataset_totext(dns_rdataset_t *rdataset,
INDENT_TO(ttl_column);
length = snprintf(ttlbuf, sizeof(ttlbuf), "%u",
rdataset->ttl);
- INSIST(length <= sizeof ttlbuf);
+ INSIST(length < sizeof ttlbuf);
isc_buffer_availableregion(target, &r);
if (r.length < length)
return (ISC_R_NOSPACE);
diff --git a/usr.sbin/bind/lib/dns/name.c b/usr.sbin/bind/lib/dns/name.c
index 08c25ff2bb9..7c33c99fb3e 100644
--- a/usr.sbin/bind/lib/dns/name.c
+++ b/usr.sbin/bind/lib/dns/name.c
@@ -1785,9 +1785,8 @@ dns_name_totext(dns_name_t *name, isc_boolean_t omit_final_dot,
char buf[5];
if (trem < 4)
return (ISC_R_NOSPACE);
- snprintf(buf, sizeof(buf),
+ snprintf(tdata, trem,
"\\%03u", c);
- memcpy(tdata, buf, 4);
tdata += 4;
trem -= 4;
ndata++;
@@ -1942,7 +1941,7 @@ dns_name_tofilenametext(dns_name_t *name, isc_boolean_t omit_final_dot,
} else {
if (trem < 3)
return (ISC_R_NOSPACE);
- sprintf(tdata, "%%%02X", c);
+ snprintf(tdata, trem, "%%%02X", c);
tdata += 3;
trem -= 3;
ndata++;
diff --git a/usr.sbin/bind/lib/dns/rdata.c b/usr.sbin/bind/lib/dns/rdata.c
index 0160e04e94d..cb696841f85 100644
--- a/usr.sbin/bind/lib/dns/rdata.c
+++ b/usr.sbin/bind/lib/dns/rdata.c
@@ -1369,7 +1369,7 @@ txt_totext(isc_region_t *source, isc_buffer_t *target) {
if (*sp < 0x20 || *sp >= 0x7f) {
if (tl < 4)
return (ISC_R_NOSPACE);
- snprintf(tp, 5, "\\%03u", *sp++);
+ snprintf(tp, tl, "\\%03u", *sp++);
tp += 4;
tl -= 4;
continue;
diff --git a/usr.sbin/bind/lib/dns/sec/dst/dst_api.c b/usr.sbin/bind/lib/dns/sec/dst/dst_api.c
index 260181a7582..637414c3e07 100644
--- a/usr.sbin/bind/lib/dns/sec/dst/dst_api.c
+++ b/usr.sbin/bind/lib/dns/sec/dst/dst_api.c
@@ -1000,7 +1000,9 @@ buildfilename(dns_name_t *name, dns_keytag_t id,
len = 1 + 3 + 1 + 5 + strlen(suffix) + 1;
if (isc_buffer_availablelength(out) < len)
return (ISC_R_NOSPACE);
- sprintf((char *) isc_buffer_used(out), "+%03d+%05d%s", alg, id, suffix);
+ snprintf((char *) isc_buffer_used(out),
+ isc_buffer_availablelength(out),
+ "+%03d+%05d%s", alg, id, suffix);
isc_buffer_add(out, len);
return (ISC_R_SUCCESS);
}
diff --git a/usr.sbin/bind/lib/lwres/gethost.c b/usr.sbin/bind/lib/lwres/gethost.c
index a61d0ef35ac..aa7cefea3df 100644
--- a/usr.sbin/bind/lib/lwres/gethost.c
+++ b/usr.sbin/bind/lib/lwres/gethost.c
@@ -198,8 +198,13 @@ copytobuf(struct hostent *he, struct hostent *hptr, char *buf, int buflen) {
/*
* Copy official name.
*/
- n = strlen(he->h_name) + 1;
- strcpy(cp, he->h_name);
+ n = (buf + buflen) - cp;
+ {
+ int r;
+ r = strlcpy(cp, he->h_name, n);
+ if ( r < n )
+ n = r;
+ }
hptr->h_name = cp;
cp += n;
@@ -208,8 +213,14 @@ copytobuf(struct hostent *he, struct hostent *hptr, char *buf, int buflen) {
*/
hptr->h_aliases = ptr;
for (i = 0; he->h_aliases[i]; i++) {
- n = strlen(he->h_aliases[i]) + 1;
- strcpy(cp, he->h_aliases[i]);
+ n = (buf + buflen) - cp;
+ {
+ int r;
+ r = strlcpy(cp, he->h_aliases[i], n);
+ if ( r < n )
+ n = r;
+ }
+
hptr->h_aliases[i] = cp;
cp += n;
}
diff --git a/usr.sbin/bind/lib/lwres/lwinetntop.c b/usr.sbin/bind/lib/lwres/lwinetntop.c
index 071eb83efe6..d6ab0ab20b6 100644
--- a/usr.sbin/bind/lib/lwres/lwinetntop.c
+++ b/usr.sbin/bind/lib/lwres/lwinetntop.c
@@ -86,7 +86,7 @@ inet_ntop4(const unsigned char *src, char *dst, size_t size) {
size_t len;
len = snprintf(tmp, sizeof(tmp), fmt, src[0], src[1], src[2], src[3]);
- if (len >= size) {
+ if (len >= sizeof(tmp)) {
errno = ENOSPC;
return (NULL);
}