]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
check remote-servers list correctness
authorColin Vidal <colin@isc.org>
Tue, 25 Nov 2025 14:34:26 +0000 (15:34 +0100)
committerColin Vidal <colin@isc.org>
Fri, 28 Nov 2025 14:15:46 +0000 (15:15 +0100)
`check.c` only checks if `remote-servers`, `primaries`, etc. are not
duplicated inside the configuration file, but does not check the
correctness of its definition. This commit fixes this by calling
`validate_remotes()` for each `remote-servers` (and other aliases),
which validates the correctness of the definition itself (this is the
same call done to validate other cases like `also-notify`, etc.).

(cherry picked from commit 1a732b6b8ecc89232724d80adba84350976ae2ca)

lib/isccfg/check.c

index 842b9abb16467acaec2b48775ccf38c6443d1851..a2c605bd77ff5a43b7a2a66eef248e6b58e64c25 100644 (file)
@@ -86,6 +86,9 @@ keydirexist(const cfg_obj_t *zcgf, const char *optname, dns_name_t *zname,
 static const cfg_obj_t *
 find_maplist(const cfg_obj_t *config, const char *listname, const char *name);
 
+static isc_result_t
+validate_remotes(const cfg_obj_t *obj, const cfg_obj_t *config,
+                uint32_t *countp, isc_log_t *logctx, isc_mem_t *mctx);
 static void
 freekey(char *key, unsigned int type, isc_symvalue_t value, void *userarg) {
        UNUSED(type);
@@ -2209,6 +2212,12 @@ check_remoteserverlist(const cfg_obj_t *cctx, const char *list,
                        break;
                }
 
+               uint32_t dummy = 0;
+               result = validate_remotes(obj, cctx, &dummy, logctx, mctx);
+               if (result != ISC_R_SUCCESS) {
+                       break;
+               }
+
                elt = cfg_list_next(elt);
        }
        return result;