]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Handle deprecated 'trusted-keys' style anchors
authorMark Andrews <marka@isc.org>
Wed, 20 May 2020 04:22:40 +0000 (14:22 +1000)
committerMark Andrews <marka@isc.org>
Mon, 25 May 2020 21:48:19 +0000 (07:48 +1000)
bin/delv/delv.c

index 87fd7fc3e8f174cb47e220c2b31842ed3c22d3d1..22b36237c3add2bbab41a5595c73e35ae3c36db8 100644 (file)
@@ -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));