]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add "warn_unused_result" to attributes.h 12184/head
authorEvan Hunt <each@isc.org>
Thu, 4 Jun 2026 16:52:10 +0000 (09:52 -0700)
committerEvan Hunt <each@isc.org>
Thu, 4 Jun 2026 16:52:10 +0000 (09:52 -0700)
A new ISC_ATTR_WARN_UNUSED_RESULT macro now defines
__attribute__((warn_unused_result)) and is used for
dns_rdata_fromstruct().

(cherry picked from commit 07c8c1d2421fdb4beb1b7821fe9033ff7d66b46a)

configure.ac
lib/dns/include/dns/rdata.h
lib/isc/include/isc/attributes.h
tests/dns/private_test.c

index 84ae05f0d3ba3241ab28dad5f42298186a99687a..02e5d771c681a81359c953c1e1d8814f316d236d 100644 (file)
@@ -384,6 +384,10 @@ AC_COMPILE_IFELSE(
 AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
 
 #
+# check for GCC returns_nonnull attribute
+#
+AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
+
 # GeoIP support?
 #
 # Should be on by default if libmaxminddb exists.
index 51dc0804b83ae5f66f6c3b832b9cb4f9d6dc538b..ef529720929754d944eb9493a47669079b05595a 100644 (file)
@@ -474,6 +474,7 @@ dns_rdata_tofmttext(dns_rdata_t *rdata, const dns_name_t *origin,
  * it is undefined and falls back to the default value of 'width'
  */
 
+ISC_ATTR_WARN_UNUSED_RESULT
 isc_result_t
 dns_rdata_fromstruct(dns_rdata_t *rdata, dns_rdataclass_t rdclass,
                     dns_rdatatype_t type, void *source, isc_buffer_t *target);
index ecb3e93a508d4d57acf2ba22308dbcb0f80ddd7a..0678ac1492a07d6421fee109c78132da1d6e26e5 100644 (file)
 #define ISC_ATTR_RETURNS_NONNULL
 #endif
 
+#if HAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT
+#define ISC_ATTR_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+#else
+#define ISC_ATTR_WARN_UNUSED_RESULT
+#endif
+
 #ifdef HAVE_FUNC_ATTRIBUTE_MALLOC
 /*
  * Indicates that a function is malloc-like, i.e., that the
index f65408bdd06ba21b302f9eebc7a85be215f4435c..0ab974f34c0d193dad149bd4a84dc916db645406 100644 (file)
@@ -97,6 +97,7 @@ make_signing(signing_testcase_t *testcase, dns_rdata_t *private,
 static void
 make_nsec3(nsec3_testcase_t *testcase, dns_rdata_t *private,
           unsigned char *pbuf) {
+       isc_result_t result;
        dns_rdata_nsec3param_t params;
        dns_rdata_t nsec3param = DNS_RDATA_INIT;
        unsigned char bufdata[BUFSIZ];
@@ -134,8 +135,9 @@ make_nsec3(nsec3_testcase_t *testcase, dns_rdata_t *private,
        }
 
        isc_buffer_init(&buf, bufdata, sizeof(bufdata));
-       dns_rdata_fromstruct(&nsec3param, dns_rdataclass_in,
-                            dns_rdatatype_nsec3param, &params, &buf);
+       result = dns_rdata_fromstruct(&nsec3param, dns_rdataclass_in,
+                                     dns_rdatatype_nsec3param, &params, &buf);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        dns_rdata_init(private);