From 8c97b56b2cae1d78db7d0a637f8301d03c7ab68b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 21 Aug 2025 23:51:38 +0200 Subject: [PATCH] Add and use __attribute__((nonnull)) in dnssec-signzone.c Clang 20 is complaining about passing NULL to an argument with 'nonnull' attribute. Mark these two functions with the same attribute to assure that these two function also don't accept NULL as an argument. (cherry picked from commit 9e350c177403ead4c8a6630a08f36f304b04484c) --- bin/dnssec/dnssec-signzone.c | 5 +++++ lib/isc/include/isc/attributes.h | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c index b2c77d497a..6c4bf3631e 100644 --- a/bin/dnssec/dnssec-signzone.c +++ b/bin/dnssec/dnssec-signzone.c @@ -3199,6 +3199,8 @@ writeset(const char *prefix, dns_rdatatype_t type) { dns_db_detach(&db); } +static void +print_time(FILE *fp) ISC_ATTR_NONNULL(1); static void print_time(FILE *fp) { time_t currenttime = time(NULL); @@ -3215,6 +3217,8 @@ print_time(FILE *fp) { fprintf(fp, "; File written on %s\n", timebuf); } +static void +print_version(FILE *fp) ISC_ATTR_NONNULL(1); static void print_version(FILE *fp) { if (outputformat != dns_masterformat_text) { @@ -4021,6 +4025,7 @@ main(int argc, char *argv[]) { fatal("failed to open temporary output file: %s", isc_result_totext(result)); } + INSIST(outfp != NULL); removefile = true; setfatalcallback(&removetempfile); } diff --git a/lib/isc/include/isc/attributes.h b/lib/isc/include/isc/attributes.h index f38a558552..ecb3e93a50 100644 --- a/lib/isc/include/isc/attributes.h +++ b/lib/isc/include/isc/attributes.h @@ -82,3 +82,9 @@ #endif /* HAVE_FUNC_ATTRIBUTE_MALLOC */ #define ISC_ATTR_UNUSED __attribute__((__unused__)) + +#if __has_attribute(__nonnull__) +#define ISC_ATTR_NONNULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else +#define ISC_ATTR_NONNULL(...) +#endif