From: Mark Andrews Date: Tue, 22 Feb 2022 01:29:41 +0000 (+1100) Subject: Return ISC_R_NOTIMPLEMENTED rather than ISC_R_UNEXPECTEDEND X-Git-Tag: v9.19.0~92^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=26f817f574cdf835a4fa6f7d16629d4c1a7f74bc;p=thirdparty%2Fbind9.git Return ISC_R_NOTIMPLEMENTED rather than ISC_R_UNEXPECTEDEND If the keydata rdata is shorter that 16 octets it is not out private keydata type and we have not implemented a tostruct method for it. --- diff --git a/lib/dns/include/dns/rdata.h b/lib/dns/include/dns/rdata.h index a6e22e7e599..03298c7c71b 100644 --- a/lib/dns/include/dns/rdata.h +++ b/lib/dns/include/dns/rdata.h @@ -524,7 +524,6 @@ dns_rdata_tostruct(const dns_rdata_t *rdata, void *target, isc_mem_t *mctx); * Result: *\li Success *\li Not Implemented - *\li Unexpected end of input */ void diff --git a/lib/dns/rdata/generic/keydata_65533.c b/lib/dns/rdata/generic/keydata_65533.c index c5670d01abd..bfd0994d135 100644 --- a/lib/dns/rdata/generic/keydata_65533.c +++ b/lib/dns/rdata/generic/keydata_65533.c @@ -341,42 +341,48 @@ tostruct_keydata(ARGS_TOSTRUCT) { /* Refresh timer */ if (sr.length < 4) { - return (ISC_R_UNEXPECTEDEND); + /* Not KEYDATA */ + return (ISC_R_NOTIMPLEMENTED); } keydata->refresh = uint32_fromregion(&sr); isc_region_consume(&sr, 4); /* Add hold-down */ if (sr.length < 4) { - return (ISC_R_UNEXPECTEDEND); + /* Not KEYDATA */ + return (ISC_R_NOTIMPLEMENTED); } keydata->addhd = uint32_fromregion(&sr); isc_region_consume(&sr, 4); /* Remove hold-down */ if (sr.length < 4) { - return (ISC_R_UNEXPECTEDEND); + /* Not KEYDATA */ + return (ISC_R_NOTIMPLEMENTED); } keydata->removehd = uint32_fromregion(&sr); isc_region_consume(&sr, 4); /* Flags */ if (sr.length < 2) { - return (ISC_R_UNEXPECTEDEND); + /* Not KEYDATA */ + return (ISC_R_NOTIMPLEMENTED); } keydata->flags = uint16_fromregion(&sr); isc_region_consume(&sr, 2); /* Protocol */ if (sr.length < 1) { - return (ISC_R_UNEXPECTEDEND); + /* Not KEYDATA */ + return (ISC_R_NOTIMPLEMENTED); } keydata->protocol = uint8_fromregion(&sr); isc_region_consume(&sr, 1); /* Algorithm */ if (sr.length < 1) { - return (ISC_R_UNEXPECTEDEND); + /* Not KEYDATA */ + return (ISC_R_NOTIMPLEMENTED); } keydata->algorithm = uint8_fromregion(&sr); isc_region_consume(&sr, 1); diff --git a/lib/dns/zone.c b/lib/dns/zone.c index ca9bbaec4c0..7f9f8edcba5 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -4362,7 +4362,7 @@ load_secroots(dns_zone_t *zone, dns_name_t *name, dns_rdataset_t *rdataset) { /* Convert rdata to keydata. */ result = dns_rdata_tostruct(&rdata, &keydata, NULL); - if (result == ISC_R_UNEXPECTEDEND) { + if (result == ISC_R_NOTIMPLEMENTED) { continue; } RUNTIME_CHECK(result == ISC_R_SUCCESS);