]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Revert "Use a binary search to find the NSEC3 closest encloser"
authorMichał Kępień <michal@isc.org>
Tue, 6 May 2025 07:14:18 +0000 (09:14 +0200)
committerMichał Kępień <michal@isc.org>
Tue, 6 May 2025 07:14:18 +0000 (09:14 +0200)
This reverts commit ae718fab5366465a4c928e4d8d89717431f78547.

lib/ns/query.c

index 746d3b6268a2bc886af0c6303be69aec0939c164..662ae1df32c56e8f2f8f7990b96188e98c3c5144 100644 (file)
@@ -11367,33 +11367,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.
                 */