]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add additional contraints to dns_rdata_checksvcb
authorMark Andrews <marka@isc.org>
Wed, 8 Mar 2023 05:38:11 +0000 (16:38 +1100)
committerMark Andrews <marka@isc.org>
Wed, 8 Mar 2023 21:47:14 +0000 (21:47 +0000)
REQUIRE that rdata->type is dns_rdatatype_svcb to detect when
dns_rdata_checksvcb is called with the wrong rdata type.  There are
no code paths that currently pass the wrong rdata to dns_rdata_checksvcb.

This was found by GCC 12 static analysis.

lib/dns/include/dns/rdata.h
lib/dns/rdata.c

index 338af3a3a0ba849f85e264b0159bab635a8a66a3..1ff135e697caf4c1ab1adc2185f36461de6a40f1 100644 (file)
@@ -806,7 +806,7 @@ dns_rdata_checksvcb(const dns_name_t *owner, const dns_rdata_t *rdata);
  *
  * Requires:
  *\li  'owner' is a valid name.
- *\li  'rdata' is a valid, non-empty rdata.
+ *\li  'rdata' is a valid, non-empty SVCB rdata.
  *
  * Returns:
  *\li  #ISC_R_SUCCESS          -- success, the data is valid
index 7ecc4a9a4d63b03efedbd70ab2844b4ed69e9db9..d90ef212f449d56c135d508585b14b1f44cd3005 100644 (file)
@@ -2435,6 +2435,7 @@ dns_rdata_checksvcb(const dns_name_t *owner, const dns_rdata_t *rdata) {
 
        REQUIRE(owner != NULL);
        REQUIRE(rdata != NULL);
+       REQUIRE(rdata->type == dns_rdatatype_svcb);
        REQUIRE(DNS_RDATA_VALIDFLAGS(rdata));
 
        result = dns_rdata_tostruct(rdata, &svcb, NULL);