Allow underscore characters in FQDNs and pointers.
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 5 Dec 2019 15:34:54 +0000 (10:34 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 5 Dec 2019 15:45:34 +0000 (10:45 -0500)
Modern DNS records can contain underscores for a number of reasons. In
particular, DKIM records involve a "_domainkey" part,

  https://tools.ietf.org/html/rfc6376

that is rejected by the current "fqdn" and "p" validation routines.
Moreover, any SRV records will have a service name prefixed with an
underscore:

  https://tools.ietf.org/html/rfc2782

To recognize these tokens as valid, this commit expands the "fqdn" and
"p" regular expressions to allow underscores as the first character in
each component of an FQDN.

valtz

diff --git a/valtz b/valtz
index c68c120e9a96b324a5de4619f3857b418d551e75..eebda76f4b17beb77fce88c1d3b4f5ecb282428f 100644 (file)
--- a/valtz
+++ b/valtz
@@ -202,7 +202,7 @@ my %token_validator = (
         # check all parts
         for my $hostpart (split /\./, $s)
         {
-            return 1005 unless $hostpart =~ /^[-a-z0-9]+$/i;
+            return 1005 unless $hostpart =~ /^_?[-a-z0-9]+$/i;
             return 1006 if $hostpart =~ /^-/;
             return 1007 if $hostpart =~ /-$/;
         }
@@ -268,7 +268,7 @@ my %token_validator = (
         # check all parts
         for (split /\./, $s)
         {
-            return 1005 unless /^[-[a-z0-9]+$/i;
+            return 1005 unless /^_?[-[a-z0-9]+$/i;
             return 1006 if /^-/;
             return 1007 if /-$/;
         }