From 92cab3fb5e86ff1a30efe0dc7b915457f297fc77 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Mon, 13 Mar 2023 13:48:20 +1100 Subject: [PATCH] Add ISC_FORMAT_PRINTF to report's declaration dns_dnssec_updatekeys's 'report' could be called with invalid arguments which the compiler should be be able to detect. (cherry picked from commit 7a0a2fc3e4e3bb9c5869fe0953d97f6019fb0967) --- lib/dns/dnssec.c | 11 +++++++---- lib/dns/include/dns/dnssec.h | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/dns/dnssec.c b/lib/dns/dnssec.c index b59ac6a16e..a7049eb678 100644 --- a/lib/dns/dnssec.c +++ b/lib/dns/dnssec.c @@ -1896,7 +1896,8 @@ failure: static isc_result_t publish_key(dns_diff_t *diff, dns_dnsseckey_t *key, const dns_name_t *origin, - dns_ttl_t ttl, isc_mem_t *mctx, void (*report)(const char *, ...)) { + dns_ttl_t ttl, isc_mem_t *mctx, + void (*report)(const char *, ...) ISC_FORMAT_PRINTF(1, 2)) { isc_result_t result; unsigned char buf[DST_KEY_MAXSIZE]; char keystr[DST_KEY_FORMATSIZE]; @@ -1913,7 +1914,8 @@ publish_key(dns_diff_t *diff, dns_dnsseckey_t *key, const dns_name_t *origin, if (key->prepublish && ttl > key->prepublish) { isc_stdtime_t now; - report("Key %s: Delaying activation to match the DNSKEY TTL.", + report("Key %s: Delaying activation to match the DNSKEY TTL " + "(%u).", keystr, ttl); isc_stdtime_get(&now); @@ -1930,7 +1932,7 @@ failure: static isc_result_t remove_key(dns_diff_t *diff, dns_dnsseckey_t *key, const dns_name_t *origin, dns_ttl_t ttl, isc_mem_t *mctx, const char *reason, - void (*report)(const char *, ...)) { + void (*report)(const char *, ...) ISC_FORMAT_PRINTF(1, 2)) { isc_result_t result; unsigned char buf[DST_KEY_MAXSIZE]; dns_rdata_t dnskey = DNS_RDATA_INIT; @@ -2250,7 +2252,8 @@ isc_result_t dns_dnssec_updatekeys(dns_dnsseckeylist_t *keys, dns_dnsseckeylist_t *newkeys, dns_dnsseckeylist_t *removed, const dns_name_t *origin, dns_ttl_t hint_ttl, dns_diff_t *diff, isc_mem_t *mctx, - void (*report)(const char *, ...)) { + void (*report)(const char *, ...) + ISC_FORMAT_PRINTF(1, 2)) { isc_result_t result; dns_dnsseckey_t *key, *key1, *key2, *next; bool found_ttl = false; diff --git a/lib/dns/include/dns/dnssec.h b/lib/dns/include/dns/dnssec.h index d96d0a7c80..6add7d50d1 100644 --- a/lib/dns/include/dns/dnssec.h +++ b/lib/dns/include/dns/dnssec.h @@ -326,7 +326,8 @@ isc_result_t dns_dnssec_updatekeys(dns_dnsseckeylist_t *keys, dns_dnsseckeylist_t *newkeys, dns_dnsseckeylist_t *removed, const dns_name_t *origin, dns_ttl_t hint_ttl, dns_diff_t *diff, isc_mem_t *mctx, - void (*report)(const char *, ...)); + void (*report)(const char *, ...) + ISC_FORMAT_PRINTF(1, 2)); /*%< * Update the list of keys in 'keys' with new key information in 'newkeys'. *