Package: dnssec-tools
Version: 1.7-3
Severity: normal
File: /usr/share/perl5/Net/DNS/ZoneFile/Fast.pm
Tags: patch

When donuts uses Net::DNS::ZoneFile::Fast.pm to parse zone files, it fails
to parse valid RP records having "." in the txt-dname field.  It generates
error messages of the form:

    bad txtdname in PTR, line 391

This is also misleading because it has nothing to do with PTR records.

The attached patch attempts to correct this problem so the RRs are parsed
correctly, and also fixes the error messages.


-- System Information:
Debian Release: 6.0.4
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.32-5-openvz-686 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages dnssec-tools depends on:
ii  bind9utils       1:9.7.3.dfsg-1~squeeze4 Utilities for BIND
ii  libnet-dns-perl  0.66-2                  Perform DNS queries from a Perl sc
ii  libnet-dns-sec-p 0.16-1                  DNSSEC extension to NET::DNS
ii  libtimedate-perl 1.2000-1                collection of modules to manipulat
ii  perl             5.10.1-17squeeze3       Larry Wall's Practical Extraction 

Versions of packages dnssec-tools recommends:
ii  bind9            1:9.7.3.dfsg-1~squeeze4 Internet Domain Name Server

dnssec-tools suggests no packages.

-- no debconf information
--- Fast.pm.old 2012-02-18 21:20:40.000000000 -0800
+++ Fast.pm     2012-02-18 21:23:50.000000000 -0800
@@ -902,11 +902,11 @@
              $mbox =~ s/^.// unless $mbox eq ".";
              chop $mbox;
          } else {
-             error("bad mbox in PTR");
+             error("bad mbox in RP");
          }
 
          my $txtdname;
-         if (/\G($pat_maybefullname)$pat_skip$/gc) {
+         if (/\G($pat_maybefullnameorroot)$pat_skip$/gc) {
              $txtdname = $1;
              $txtdname = "$txtdname$origin" unless $txtdname =~ /\.$/;
              chop $txtdname;
@@ -915,7 +915,7 @@
              $txtdname =~ s/^.// unless $txtdname eq ".";
              chop $txtdname;
          } else {
-             error("bad txtdname in PTR");
+             error("bad txtdname in RP");
          }
 
          push @zone, {

Reply via email to