From: Pieter Lexis Date: Tue, 26 Jul 2016 11:48:01 +0000 (+0200) Subject: RPZ: filter correctly by name X-Git-Tag: rec-4.0.2~1^2~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5678437b582116fda9ff9d933fbcd21e09d8106a;p=thirdparty%2Fpdns.git RPZ: filter correctly by name Closes #4086 --- diff --git a/pdns/filterpo.cc b/pdns/filterpo.cc index d2434d2f60..55037f85b2 100644 --- a/pdns/filterpo.cc +++ b/pdns/filterpo.cc @@ -32,30 +32,30 @@ bool findNamedPolicy(const map& polmap, const { DNSName s(qname); - /* for www.powerdns.com, we need to check: - www.powerdns.com. - *.powerdns.com. - powerdns.com. - *.com. - com. - *. - . */ + /* for www.powerdns.com, we need to check: + www.powerdns.com. + *.powerdns.com. + *.com. + *. + */ bool first=true; + map::const_iterator iter; do { - auto iter = polmap.find(s); - if(iter != polmap.end()) { - pol=iter->second; - return true; - } - if(!first) { - iter = polmap.find(DNSName("*")+s); + if(first) { + iter = polmap.find(s); if(iter != polmap.end()) { - pol=iter->second; - return true; + pol=iter->second; + return true; } } first=false; + + iter = polmap.find(DNSName("*")+s); + if(iter != polmap.end()) { + pol=iter->second; + return true; + } } while(s.chopOff()); return false; }