]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
fixup localzone nodefault issue, the trailing dot was used in comparisons.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 3 Jun 2008 12:32:08 +0000 (12:32 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 3 Jun 2008 12:32:08 +0000 (12:32 +0000)
git-svn-id: file:///svn/unbound/trunk@1106 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
services/localzone.c
testdata/local_nodefault.tpkg [new file with mode: 0644]

index 1b7f8021fb994e68215444822c9f4feed525f501..c0c2101ab40ccca0569b8633ecc9a930de91d760 100644 (file)
@@ -1,3 +1,7 @@
+3 June 2008: Wouter
+       - fixup local-zone: "30.172.in-addr.arpa." nodefault, so that the
+         trailing dot is not used during comparison.
+
 2 June 2008: Wouter
        - Jelte fixed bugs in my absence
          - bug 178: fixed unportable shell usage in configure (relied on 
index 7e5d0500583b4e5354a607ea47280cd7e4d15f22..11d4e6d6b7b230197cea5901fc793791d4e6ccbe 100644 (file)
@@ -528,9 +528,15 @@ static int
 lz_nodefault(struct config_file* cfg, const char* name)
 {
        struct config_strlist* p;
+       size_t len = strlen(name);
+       if(len == 0) return 0;
+       if(name[len-1] == '.') len--;
+
        for(p = cfg->local_zones_nodefault; p; p = p->next) {
-               /* compare zone name, lowercase */
-               if(strcasecmp(p->str, name) == 0)
+               /* compare zone name, lowercase, compare without ending . */
+               if(strncasecmp(p->str, name, len) == 0 && 
+                       (strlen(p->str) == len || (strlen(p->str)==len+1 &&
+                       p->str[len] == '.')))
                        return 1;
        }
        return 0;
@@ -614,28 +620,28 @@ lz_enter_defaults(struct local_zones* zones, struct config_file* cfg,
                        return 0;
                }
        }
-       if (    !add_as112_default(zones, cfg, buf, "10.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "16.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "17.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "18.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "19.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "20.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "21.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "22.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "23.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "24.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "25.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "26.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "27.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "28.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "29.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "30.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "31.172.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "168.192.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "0.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "254.169.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "2.0.192.in-addr.arpa") ||
-               !add_as112_default(zones, cfg, buf, "255.255.255.255.in-addr.arpa") ||
+       if (    !add_as112_default(zones, cfg, buf, "10.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "16.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "17.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "18.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "19.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "20.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "21.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "22.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "23.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "24.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "25.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "26.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "27.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "28.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "29.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "30.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "31.172.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "168.192.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "0.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "254.169.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "2.0.192.in-addr.arpa.") ||
+               !add_as112_default(zones, cfg, buf, "255.255.255.255.in-addr.arpa.") ||
                !add_as112_default(zones, cfg, buf, "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.") ||
                !add_as112_default(zones, cfg, buf, "d.f.ip6.arpa.") ||
                !add_as112_default(zones, cfg, buf, "8.e.f.ip6.arpa.") ||
diff --git a/testdata/local_nodefault.tpkg b/testdata/local_nodefault.tpkg
new file mode 100644 (file)
index 0000000..7cbef36
Binary files /dev/null and b/testdata/local_nodefault.tpkg differ