Michael Orlitzky [Wed, 21 Oct 2020 18:17:38 +0000 (14:17 -0400)]
Drop the "-s" option.
With all due respect to the original authors, the behavior of the "-s"
flag is trivial to implement with the POSIX "find" command. The
benefit of having it reimplemented in valtz itself is small.
Michael Orlitzky [Wed, 21 Oct 2020 18:11:14 +0000 (14:11 -0400)]
Show only a usage summary when -h is passed.
There was a long "usage" string contained within the program itself
that is now contained within the man page. The long usage would be
shown with "valtz -h", and a shorter one would be shown with simply
"valtz", which is an error by itself. This commit also unifies those
two: if you try to run valtz with no arguments, the "valtz -h" output
is shown but the exit code will be non-zero.
Michael Orlitzky [Wed, 21 Oct 2020 01:43:50 +0000 (21:43 -0400)]
Drop the "-x" flag.
The "-x" flag used to set the exit code non-zero on error, thus making
it easier to detect errors in shell scripts. But I can imagine no
situation where returning zero unconditionally is preferable; and so,
I've removed the flag and enabled the "-x" behavior by default.
Michael Orlitzky [Tue, 20 Oct 2020 22:00:52 +0000 (18:00 -0400)]
Warn about IP addresses in hostname fields.
A common error is to specify an IP address as the result of an MX
lookup. The RFCs (974, 1035, 2181...) state that the result should be
a "domain name," which in this context, means "host name." This commit
adds a check on "hostname" fields that rejects a dotted-quad contained
therein. In particular, it catches the aforementioned MX record error.
There is a patch for djbdns that adds support for SRV records to both
tinydns-data and axfr-get:
From: Michael Handler <handler@sub-rosa.com>
To: dns@list.cr.yp.to
Subject: tinydns-data SRV & axfr-get SRV/PTR patches
Date: Thu, 14 Sep 2000 20:37:50 -040
Many distributions carry the patch, but valtz rejects the SRV records
because it doesn't recognize the "S" indicator or know how to validate
the port, weight, or priority fields.
This commit adds support for the new record type, and adds validation
routines for the three new fields. All of them are the same: ports,
weights, and priorities are all integers between 0 and 65536.
Allow underscore characters in FQDNs and pointers.
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.