From: Mark Andrews Date: Wed, 20 May 2020 04:22:40 +0000 (+1000) Subject: Handle deprecated 'trusted-keys' style anchors X-Git-Tag: v9.17.2~59^2~1 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=d807febd25ed276cda720ef9a0841680f4295ee1;p=thirdparty%2Fbind9.git Handle deprecated 'trusted-keys' style anchors --- diff --git a/bin/delv/delv.c b/bin/delv/delv.c index 87fd7fc3e8f..22b36237c3a 100644 --- a/bin/delv/delv.c +++ b/bin/delv/delv.c @@ -615,6 +615,7 @@ key_fromconfig(const cfg_obj_t *key, dns_client_t *client) { INITIAL_DS, STATIC_DS, TRUSTED } anchortype; + const cfg_obj_t *obj; keynamestr = cfg_obj_asstring(cfg_tuple_get(key, "name")); CHECK(convert_name(&fkeyname, &keyname, keynamestr)); @@ -647,21 +648,30 @@ key_fromconfig(const cfg_obj_t *key, dns_client_t *client) { rdata3 = cfg_obj_asuint32(cfg_tuple_get(key, "rdata3")); /* What type of trust anchor is this? */ - atstr = cfg_obj_asstring(cfg_tuple_get(key, "anchortype")); - if (strcasecmp(atstr, "static-key") == 0) { + obj = cfg_tuple_get(key, "anchortype"); + if (cfg_obj_isvoid(obj)) { + /* + * "anchortype" is not defined, this must be a static-key + * configured with trusted-keys. + */ anchortype = STATIC_KEY; - } else if (strcasecmp(atstr, "static-ds") == 0) { - anchortype = STATIC_DS; - } else if (strcasecmp(atstr, "initial-key") == 0) { - anchortype = INITIAL_KEY; - } else if (strcasecmp(atstr, "initial-ds") == 0) { - anchortype = INITIAL_DS; } else { - delv_log(ISC_LOG_ERROR, - "key '%s': invalid initialization method '%s'", - keynamestr, atstr); - result = ISC_R_FAILURE; - goto cleanup; + atstr = cfg_obj_asstring(obj); + if (strcasecmp(atstr, "static-key") == 0) { + anchortype = STATIC_KEY; + } else if (strcasecmp(atstr, "static-ds") == 0) { + anchortype = STATIC_DS; + } else if (strcasecmp(atstr, "initial-key") == 0) { + anchortype = INITIAL_KEY; + } else if (strcasecmp(atstr, "initial-ds") == 0) { + anchortype = INITIAL_DS; + } else { + delv_log(ISC_LOG_ERROR, + "key '%s': invalid initialization method '%s'", + keynamestr, atstr); + result = ISC_R_FAILURE; + goto cleanup; + } } isc_buffer_init(&databuf, data, sizeof(data));