Your fix looks perfect for the interim, many thanks!

On Thu, Mar 01, 2007 at 10:42:56AM +0100, Andreas Henriksson wrote:
> On Thu, Mar 01, 2007 at 12:29:48AM +0100, bert hubert wrote:
> > I fail to reproduce the bug. PowerDNS does misparse the ( record, which is
> > sad, and fixed in SVN (the fix is intrusive and should not be backported
> > probably).
> 
> I guess you've found that pdns expects opening ( for multiline records
> to not have anything after it.
> 
> ie.
> foo TXT ( "lala"
> "baba"
> )
> 
> will throw away "lala" and only return "baba".
> I don't think this is a big enough deal to warrant a change now that debian
> is frozen since a long time.
> 
> > 
> > But although we misparse the record, I don't see the other behaviour your
> > mention.
> 
> The original mail in the bug report talked about a different kind of
> record, not present in the example zone JvW sent.
> 
> ie.
> foo TXT "lala(foobar)baba"
> 
> pdns/backends/bind/zoneparser2.cc - eatLine() seems to not respect that
> the " is first, and wrongly assumes that any line which contains a ( is
> a multiline record, which screws up the parsing of the rest of the
> zone....
> 
> > 
> > Can you give me a step-by-step so I can see your problem? I already loaded
> > your zone, and added several braces to them, and reloaded etc.
> > 
> 
> I've attached an updated version of the example zone which contains a
> "foo.a-eskwadraat.nl" record... 
> 
> $ host -t txt foo.a-eskwadraat.nl localhost
> Using domain server:
> Name: localhost
> Address: 127.0.0.1#53
> Aliases:
> 
> foo.a-eskwadraat.nl descriptive text "lala\010@ txt ( \"study
> association a-eskwadraat\" \"princetonplein 5\" \"nl-3584 cc utrecht\"
> \"+31-30-253-4499"
> 
> 
> > My debian contains 'pdns-2.9.20-7+b1'.
> > 
> > Thanks. If you get the description in to me today (UTC+2), I'll promise to
> > look into it Friday.
> 
> Something like this might be whats needed.... Would be awesome if you
> could verify if it's correct.
> 
> 
> diff -uriNp pdns-2.9.20/pdns/backends/bind/zoneparser2.cc 
> pdns-2.9.20-noparensintxt/pdns/backends/bind/zoneparser2.cc
> --- pdns-2.9.20/pdns/backends/bind/zoneparser2.cc     2006-03-15 
> 19:29:38.000000000 +0100
> +++ pdns-2.9.20-noparensintxt/pdns/backends/bind/zoneparser2.cc       
> 2007-03-01 10:46:29.000000000 +0100
> @@ -201,10 +201,12 @@ bool ZoneParser::eatLine(const string& l
>    static string tline;
>    static string lastfirstword;
>    string::size_type pos=string::npos;
> +  string::size_type contentpos=string::npos;
>  
>    if(tline.empty()) {
> +    contentpos=line.find_first_of("\"");
>      pos=line.find_first_of("(");
> -    if(pos!=string::npos) { // this is a line that continues
> +    if((pos!=string::npos) && ((contentpos==string::npos) || 
> (contentpos>pos))) { // this is a line that continues
>        tline=line.substr(0,pos);
>        return false;
>      }
> 
> -- 
> Regards,
> Andreas Henriksson
> 
> 
> !DSPAM:45e6a1f3174501188220721!

> ; $Id: db.nl.a-eskwadraat 2753 2007-01-18 14:32:37Z root $
> ; Zone file for A-Eskwadraat.nl
> ;
> ; rewrite door jeroen, 2 april 2002
> 
> $TTL 1D
> @     IN      SOA     ns.A-Eskwadraat.nl. sysop.A-Eskwadraat.nl. (
>                               2007011301      ; serial
>                                       6H      ; refresh, seconds
>                                       1H      ; retry, seconds
>                                       4W      ; expire, seconds
>                                       1D )    ; minimum, seconds
> 
> ;
> ; rewrite door jeroen, 2 april 2002
> 
> foo           TXT     "lala(bar)baba"
> 
> @             TXT     (
>                         "Study Association A-Eskwadraat"
>                         "Princetonplein 5"
>                         "NL-3584 CC Utrecht"
>                         "+31-30-253-4499"
>                       )
> 
>               LOC     52 5 14 N  5 9 56 E  50m  10m  30m 50m
> 
> ; de primary nameserver
>               NS      ns
> 
> ; de primary mail exchanger
>               MX  10  mail
> ; en de vaste backup
>               MX  20  mail.wolffelaar.nl.
> 
> ; NS en MX records MOETEN naar een A wijzen (dus geen CNAME)
> ns            A       131.211.39.72
> mail          A       131.211.39.72
> 
> ; VPN stuff
> vpn-tunnel    A       131.211.39.77
> vpns          CNAME   @
> vpn           CNAME   @
> 
> ; Aliassen voor sevices die over VPN moeten
> ftp           CNAME   vpn-tunnel
> imap          CNAME   vpn-tunnel
> pop3          CNAME   vpn-tunnel
> home          CNAME   vpn-tunnel
> homes         CNAME   vpn-tunnel
> homedirs      CNAME   vpn-tunnel
> 
> ; @ heeft al records, kan dus geen CNAME zijn.
> @             A       1.2.3.4
> 
> ; *.a-eskwadraat.nl verwijst nu naar square
> *             CNAME   @
> 
> ; Voor DOMjudge/escapade:
> ;judge  15      CNAME   madeleine.students.cs.uu.nl.
> 
> ; Erik en Judith
> erik          A       83.83.35.241
> 
> ; Kerberos
> _kerberos     TXT     "A-ESKWADRAAT.NL"
> _kerberos._udp        SRV     0 0 88 euclides.localdomain.
> _kerberos._tcp        SRV     0 0 88 euclides.localdomain.
> 
> ; backup NS:
> @             NS      ns1.xel.nl.
>               NS      ns3.xel.nl.

> diff -uriNp pdns-2.9.20/pdns/backends/bind/zoneparser2.cc 
> pdns-2.9.20-noparensintxt/pdns/backends/bind/zoneparser2.cc
> --- pdns-2.9.20/pdns/backends/bind/zoneparser2.cc     2006-03-15 
> 19:29:38.000000000 +0100
> +++ pdns-2.9.20-noparensintxt/pdns/backends/bind/zoneparser2.cc       
> 2007-03-01 10:46:29.000000000 +0100
> @@ -201,10 +201,12 @@ bool ZoneParser::eatLine(const string& l
>    static string tline;
>    static string lastfirstword;
>    string::size_type pos=string::npos;
> +  string::size_type contentpos=string::npos;
>  
>    if(tline.empty()) {
> +    contentpos=line.find_first_of("\"");
>      pos=line.find_first_of("(");
> -    if(pos!=string::npos) { // this is a line that continues
> +    if((pos!=string::npos) && ((contentpos==string::npos) || 
> (contentpos>pos))) { // this is a line that continues
>        tline=line.substr(0,pos);
>        return false;
>      }


-- 
http://www.PowerDNS.com      Open source, database driven DNS Software 
http://netherlabs.nl              Open and Closed source services


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to