Hi, over at OpenBSD we are not too fond of strcat/strcpy to put it mildly.
I hope this is acceptable. Sorry for the inline patch, I no longer use GitHub, Florian >From b61c840c7f30b9e56a0da2fd6e30a836efcd5a9c Mon Sep 17 00:00:00 2001 From: Florian Obser <flor...@narrans.de> Date: Mon, 1 Apr 2024 19:39:55 +0200 Subject: [PATCH] snprintf concatenates strings and checks the length in one go. This is safer and easier to understand. --- options.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git options.c options.c index 1cfeeb94..75b8e183 100644 --- options.c +++ options.c @@ -463,14 +463,13 @@ zone_list_member_zone_insert(struct nsd_options* opt, const char* nm, "zone value provided in zone '%s' or pattern '%s'", mem_idnm, nm, patnm); - else if(strlen(pat->catalog_producer_zone) - + strlen(mem_idnm) + 9 > sizeof(member_id_str)) + else if(snprintf(member_id_str, sizeof(member_id_str), + "%s.zones.%s", mem_idnm, pat->catalog_producer_zone) >= + sizeof(member_id_str)) log_msg(LOG_ERR, "syntax error in member ID '%s.zones.%s' for " "zone '%s'", mem_idnm, pat->catalog_producer_zone, nm); - else if(!(cmz->member_id = dname_parse(opt->region, strcat(strcat( - strcpy(member_id_str, mem_idnm),".zones."), - pat->catalog_producer_zone)))) + else if(!(cmz->member_id = dname_parse(opt->region, member_id_str))) log_msg(LOG_ERR, "parse error in member ID '%s' for " "zone '%s'", member_id_str, nm); return zone; -- 2.44.0 -- In my defence, I have been left unsupervised. _______________________________________________ nsd-users mailing list nsd-users@lists.nlnetlabs.nl https://lists.nlnetlabs.nl/mailman/listinfo/nsd-users