]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Return ISC_R_NOTIMPLEMENTED rather than ISC_R_UNEXPECTEDEND
authorMark Andrews <marka@isc.org>
Tue, 22 Feb 2022 01:29:41 +0000 (12:29 +1100)
committerEvan Hunt <each@isc.org>
Sat, 26 Feb 2022 05:06:16 +0000 (21:06 -0800)
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.

lib/dns/include/dns/rdata.h
lib/dns/rdata/generic/keydata_65533.c
lib/dns/zone.c

index a6e22e7e5992cb1583d8654778a7900ecd3bdb10..03298c7c71b399e6f9f523cf0cdd85e47f0360fa 100644 (file)
@@ -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
index c5670d01abd303841a44910744cc02c457d41c34..bfd0994d1357526e33e353dde34d67530f0b319e 100644 (file)
@@ -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);
index ca9bbaec4c00463efb282523493e8c52419e4721..7f9f8edcba5f0cb97396539675c27ba42070e001 100644 (file)
@@ -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);