diff --git a/lib/dns/name.c b/lib/dns/name.c index 5d2aae4a07..23bcdf6998 100644 --- a/lib/dns/name.c +++ b/lib/dns/name.c @@ -1612,7 +1612,7 @@ dns_name_tofilenametext(dns_name_t *name, isc_boolean_t omit_final_dot, trem--; nlen--; } else { - if (trem < 3) + if (trem < 4) return (ISC_R_NOSPACE); snprintf(tdata, trem, "%%%02X", c); tdata += 3; diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 65c3dddb3c..6834067400 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -1300,12 +1300,14 @@ dns_zone_getdbtype(dns_zone_t *zone, char ***argv, isc_mem_t *mctx) { size += strlen(zone->db_argv[i]) + 1; mem = isc_mem_allocate(mctx, size); if (mem != NULL) { + size_t remaining; tmp = mem; tmp2 = mem; tmp2 += (zone->db_argc + 1) * sizeof(char *); for (i = 0; i < zone->db_argc; i++) { + remaining = (size_t)(mem - tmp2); *tmp++ = tmp2; - strlcpy(tmp2, zone->db_argv[i], size); + strlcpy(tmp2, zone->db_argv[i], remaining); tmp2 += strlen(tmp2) + 1; } *tmp = NULL;