diff --git a/contrib/dlz/drivers/dlz_filesystem_driver.c b/contrib/dlz/drivers/dlz_filesystem_driver.c index 9fa0380680..97186e4433 100644 --- a/contrib/dlz/drivers/dlz_filesystem_driver.c +++ b/contrib/dlz/drivers/dlz_filesystem_driver.c @@ -60,6 +60,7 @@ #include #include #include +#include #include #include @@ -438,12 +439,12 @@ process_dir(isc_dir_t *dir, void *passback, config_data_t *cd, */ if (strcmp((char *) &dir->entry.name[6], "-") == 0) - strcpy(host, "*"); - else { - strncpy(host, + { + strlcpy(host, "*", sizeof(host)); + } else { + strlcpy(host, (char *) &dir->entry.name[6], - sizeof(host) - 1); - host[NAME_MAX-1] = '\0'; + sizeof(host)); } foundHost = true; break; diff --git a/lib/dns/rdata/in_1/wks_11.c b/lib/dns/rdata/in_1/wks_11.c index 00d09dbda1..be5755412c 100644 --- a/lib/dns/rdata/in_1/wks_11.c +++ b/lib/dns/rdata/in_1/wks_11.c @@ -156,8 +156,7 @@ fromtext_in_wks(ARGS_FROMTEXT) { * Lowercase the service string as some getservbyname() are * case sensitive and the database is usually in lowercase. */ - strncpy(service, DNS_AS_STR(token), sizeof(service)); - service[sizeof(service)-1] = '\0'; + strlcpy(service, DNS_AS_STR(token), sizeof(service)); for (i = strlen(service) - 1; i >= 0; i--) if (isupper(service[i]&0xff)) service[i] = tolower(service[i]&0xff);