]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Revert "Use a binary search to find the NSEC3 closest encloser"
authorMatthijs Mekking <matthijs@isc.org>
Thu, 24 Oct 2024 14:02:19 +0000 (16:02 +0200)
committerPetr Špaček <pspacek@isc.org>
Fri, 15 Nov 2024 13:14:30 +0000 (13:14 +0000)
This reverts commit 94f665591546fb064acd30b58026af3d3e671b1f.

lib/ns/query.c

index e906cbe9469a554740b6c8058be19457876073c9..58a9d436fc48e55dab98c1ee5a0c03ca6bb51821 100644 (file)
@@ -11565,33 +11565,24 @@ again:
                 * No NSEC proof available, return NSEC3 proofs instead.
                 */
                cname = dns_fixedname_initname(&cfixed);
-
                /*
-                * Find the closest encloser using a binary search.
-                * maxlabels: suffix length of NXDOMAIN result
-                * minlabels: suffix length of non NXDOMAIN result
+                * Find the closest encloser.
                 */
-               unsigned int maxlabels = dns_name_countlabels(name);
-               unsigned int minlabels = dns_name_countlabels(fname);
-               bool search = result == DNS_R_NXDOMAIN;
                dns_name_copy(name, cname);
-               while (search) {
-                       labels = (maxlabels + minlabels) / 2;
-                       dns_name_split(name, labels, NULL, cname);
-                       if (labels == minlabels) {
-                               break;
+               while (result == DNS_R_NXDOMAIN) {
+                       labels = dns_name_countlabels(cname) - 1;
+                       /*
+                        * Sanity check.
+                        */
+                       if (labels == 0U) {
+                               goto cleanup;
                        }
+                       dns_name_split(cname, labels, NULL, cname);
                        result = dns_db_findext(qctx->db, cname, qctx->version,
                                                dns_rdatatype_nsec, options, 0,
                                                NULL, fname, &cm, &ci, NULL,
                                                NULL);
-                       if (result == DNS_R_NXDOMAIN) {
-                               maxlabels = labels;
-                       } else {
-                               minlabels = labels;
-                       }
                }
-
                /*
                 * Add closest (provable) encloser NSEC3.
                 */