]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
fix "response-padding" configuration and remove optionmaps
authorEvan Hunt <each@isc.org>
Wed, 29 Oct 2025 01:45:25 +0000 (18:45 -0700)
committerEvan Hunt <each@isc.org>
Wed, 29 Oct 2025 18:28:12 +0000 (18:28 +0000)
Add a default "response-padding" option in the global defaults,
to disable the option, and simplify the configuration code so that
looks at the global defaults if the option is not set in named.conf.

This enables us to remove the 'optionmaps' variable in configure_view(),
which was used for options that only look in named.conf.

bin/named/config.c
bin/named/server.c

index 9870698402255f77789900d729bfb3538c9656bf..daaaafc525cc5a185299365913ace0f21aeb66ed 100644 (file)
@@ -188,6 +188,7 @@ options {\n\
        parental-source *;\n\
        parental-source-v6 *;\n\
        provide-ixfr true;\n\
+       response-padding { none; } block-size 0;\n\
        qname-minimization relaxed;\n\
        query-source address *;\n\
        query-source-v6 address *;\n\
index 1f1fdc8876731183b4526719245646db8f9af7f8..03ec0874eb83c7ee934382343fb8a65fdd08cbeb 100644 (file)
@@ -3761,7 +3761,6 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
               bool first_time) {
        const cfg_obj_t *maps[4];
        const cfg_obj_t *cfgmaps[3];
-       const cfg_obj_t *optionmaps[3];
        const cfg_obj_t *options = NULL;
        const cfg_obj_t *voptions = NULL;
        const cfg_obj_t *forwardtype = NULL;
@@ -3818,6 +3817,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
        const char *qminmode = NULL;
        dns_adb_t *adb = NULL;
        bool oldcache = false;
+       uint32_t padding;
 
        REQUIRE(DNS_VIEW_VALID(view));
 
@@ -3827,27 +3827,23 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
 
        /*
         * maps: view options, options, defaults
-        * cfgmaps: view options, config
-        * optionmaps: view options, options
+        * cfgmaps: view options, top-level config
         */
        if (vconfig != NULL) {
                voptions = cfg_tuple_get(vconfig, "options");
                maps[i++] = voptions;
-               optionmaps[j++] = voptions;
                cfgmaps[k++] = voptions;
        }
        if (options != NULL) {
                maps[i++] = options;
-               optionmaps[j++] = options;
        }
-
        maps[i++] = named_g_defaultoptions;
        maps[i] = NULL;
-       optionmaps[j] = NULL;
+
        if (config != NULL) {
-               cfgmaps[k++] = config;
+               cfgmaps[j++] = config;
        }
-       cfgmaps[k] = NULL;
+       cfgmaps[j] = NULL;
 
        /*
         * Set the view's port number for outgoing queries.
@@ -5169,22 +5165,19 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
        if (view->pad_acl != NULL) {
                dns_acl_detach(&view->pad_acl);
        }
-       result = named_config_get(optionmaps, "response-padding", &obj);
-       if (result == ISC_R_SUCCESS) {
-               const cfg_obj_t *padobj = cfg_tuple_get(obj, "block-size");
-               const cfg_obj_t *aclobj = cfg_tuple_get(obj, "acl");
-               uint32_t padding = cfg_obj_asuint32(padobj);
+       result = named_config_get(maps, "response-padding", &obj);
+       INSIST(result == ISC_R_SUCCESS);
+       padding = cfg_obj_asuint32(cfg_tuple_get(obj, "block-size"));
 
-               if (padding > 512U) {
-                       cfg_obj_log(obj, ISC_LOG_WARNING,
-                                   "response-padding block-size cannot "
-                                   "exceed 512: lowering");
-                       padding = 512U;
-               }
-               view->padding = (uint16_t)padding;
-               CHECK(cfg_acl_fromconfig(aclobj, config, aclctx, isc_g_mctx, 0,
-                                        &view->pad_acl));
+       if (padding > 512U) {
+               cfg_obj_log(obj, ISC_LOG_WARNING,
+                           "response-padding block-size cannot "
+                           "exceed 512: lowering");
+               padding = 512U;
        }
+       view->padding = (uint16_t)padding;
+       CHECK(cfg_acl_fromconfig(cfg_tuple_get(obj, "acl"), config, aclctx,
+                                isc_g_mctx, 0, &view->pad_acl));
 
        obj = NULL;
        result = named_config_get(maps, "require-server-cookie", &obj);