From e37c9702aee05f82e7552e6518992065ff8ce67b Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Wed, 8 Mar 2023 16:38:11 +1100 Subject: [PATCH] Add additional contraints to dns_rdata_checksvcb 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 | 2 +- lib/dns/rdata.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/dns/include/dns/rdata.h b/lib/dns/include/dns/rdata.h index 338af3a3a0..1ff135e697 100644 --- a/lib/dns/include/dns/rdata.h +++ b/lib/dns/include/dns/rdata.h @@ -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 diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c index 7ecc4a9a4d..d90ef212f4 100644 --- a/lib/dns/rdata.c +++ b/lib/dns/rdata.c @@ -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);