From: Wouter Wijngaards Date: Tue, 3 Jun 2008 12:32:08 +0000 (+0000) Subject: fixup localzone nodefault issue, the trailing dot was used in comparisons. X-Git-Tag: release-1.0.1~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7f2306161981ec4c1272c71bccad0aca48e5332;p=thirdparty%2Funbound.git fixup localzone nodefault issue, the trailing dot was used in comparisons. git-svn-id: file:///svn/unbound/trunk@1106 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 1b7f8021f..c0c2101ab 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -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 diff --git a/services/localzone.c b/services/localzone.c index 7e5d05005..11d4e6d6b 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -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 index 000000000..7cbef36a8 Binary files /dev/null and b/testdata/local_nodefault.tpkg differ