summarylogtreecommitdiffstats
path: root/0001-Incorporated-PR-from-vanmelick-to-fix-SOA-and-define.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-Incorporated-PR-from-vanmelick-to-fix-SOA-and-define.patch')
-rw-r--r--0001-Incorporated-PR-from-vanmelick-to-fix-SOA-and-define.patch146
1 files changed, 146 insertions, 0 deletions
diff --git a/0001-Incorporated-PR-from-vanmelick-to-fix-SOA-and-define.patch b/0001-Incorporated-PR-from-vanmelick-to-fix-SOA-and-define.patch
new file mode 100644
index 000000000000..b5c12b332fad
--- /dev/null
+++ b/0001-Incorporated-PR-from-vanmelick-to-fix-SOA-and-define.patch
@@ -0,0 +1,146 @@
+From daab93c8d790d819e2bdbb4993ade65a9d63b6fd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C5=81aurent=20=CA=98=E2=9D=A2=C5=A6=20=C5=A6ough?=
+ <laurent.fough@gmail.com>
+Date: Sun, 23 Aug 2020 14:05:49 -0700
+Subject: [PATCH] Incorporated PR from @vanmelick to fix SOA and defined array
+ issues
+
+---
+ dnswalk | 44 +++++++++++++++++++++++---------------------
+ 1 file changed, 23 insertions(+), 21 deletions(-)
+
+diff --git a/dnswalk b/dnswalk
+index 356867f..94883ab 100755
+--- a/dnswalk
++++ b/dnswalk
+@@ -56,9 +56,9 @@ sub dowalk {
+ return unless $domain;
+ print "Checking $domain\n";
+ @subdoms=&doaxfr($domain);
+- &check_zone($domain) if (defined(@zone) && @zone);
++ &check_zone($domain) if (@zone);
+ undef @zone;
+- return if (!(defined(@subdoms) && @subdoms));
++ return if (!@subdoms);
+ @sortdoms = sort byhostname @subdoms;
+ local ($subdom);
+ if ($opt_r) {
+@@ -74,7 +74,7 @@ sub doaxfr {
+ local (%subdoms)=();
+ local ($subdom);
+ local(@servers) = &getauthservers($domain);
+- &printerr("BAD", "$domain has only one authoritative nameserver\n")
++ &printerr("BAD", "$domain has only one authoritative nameserver\n")
+ if (scalar(@servers) == 1);
+ &printerr("BAD", "$domain has NO authoritative nameservers!\n")
+ if (scalar(@servers) == 0);
+@@ -84,7 +84,7 @@ sub doaxfr {
+ my $res = new Net::DNS::Resolver;
+ $res->nameservers($server);
+ @zone=$res->axfr($domain);
+- unless (defined(@zone) && @zone) {
++ unless (@zone) {
+ print STDERR "failed\n";
+ &printerr("FAIL",
+ "Zone transfer of $domain from $server failed: ".
+@@ -104,7 +104,7 @@ sub doaxfr {
+ print STDERR "done.\n";
+ last SERVER;
+ } # foreach #
+- unless (defined(@zone) && @zone) {
++ unless (@zone) {
+ &printerr("BAD","All zone transfer attempts of $domain failed!\n");
+ return undef;
+ }
+@@ -125,8 +125,8 @@ sub getauthservers {
+ return if (!$domain);
+ $res = new Net::DNS::Resolver;
+ $ns_req = $res->query($domain, "NS");
+- &printerr("FAIL", "No nameservers found for $domain: ".
+- $res->errorstring ."\n")
++ &printerr("FAIL", "No nameservers found for $domain: ".
++ $res->errorstring ."\n")
+ unless (defined($ns_req) and ($ns_req->header->ancount > 0));
+ foreach $ns ($ns_req->answer) {
+ $ns_tmp = $ns->nsdname;
+@@ -150,11 +150,11 @@ sub getmaster {
+ my ($packet) = new Net::DNS::Packet($zone, "SOA", "IN");
+ my ($soa_req) = $res->send($packet);
+ unless (defined($soa_req)) {
+- &printerr("FAIL", "Cannot get SOA record for $zone:".
++ &printerr("FAIL", "Cannot get SOA record for $zone:".
+ $res->errorstring ."\n");
+ return "";
+ }
+- unless (($soa_req->header->ancount >= 1) &&
++ unless (($soa_req->header->ancount >= 1) &&
+ (($soa_req->answer)[0]->type eq "SOA")) {
+ &printerr("BAD", "SOA record not found for $zone\n");
+ return "";
+@@ -180,11 +180,13 @@ sub check_zone {
+ }
+ if ($rr->type eq "SOA") {
+ print STDERR 's' if $opt_d;
+- print "SOA=". $rr->mname ." contact=". $rr->rname ."\n";
++ my @soa = split(/\s+/,$rr->rdstring);
++ my $rname = $soa[1];
++ print "SOA=". $rr->mname ." contact=". $rname ."\n";
+ # basic address check. No "@", and user.dom.ain (two or more dots)
+- if (($rr->rname =~ /@/)||!($rr->rname =~ /\..*\./)) {
+- &printerr("WARN", "SOA contact name (".
+- $rr->rname .") is invalid\n");
++ if (($rname =~ /@/)||!($rname =~ /[^.]+(\.[^.]+){2,}/)) {
++ &printerr("WARN", "SOA contact name (".
++ $rname .") is invalid\n");
+ }
+ } elsif ($rr->type eq "PTR") {
+ print STDERR 'p' if $opt_d;
+@@ -197,7 +199,7 @@ sub check_zone {
+ @addrs)=gethostbyname($rr->ptrdname);
+ # if (!(($name, $aliases, $addrtype, $length,
+ # @addrs)=gethostbyname($rr->ptrdname))) {
+-# &printerr("FAIL", "gethostbyname(".
++# &printerr("FAIL", "gethostbyname(".
+ # $rr->ptrdname ."): $!\n");
+ # }
+ # else {
+@@ -206,9 +208,9 @@ sub check_zone {
+ ." PTR ". $rr->ptrdname .": unknown host\n");
+ }
+ elsif (!&equal($name,$rr->ptrdname)) {
+- &printerr("WARN", $rr->name
++ &printerr("WARN", $rr->name
+ ." PTR ". $rr->ptrdname .": CNAME (to $name)\n");
+- }
++ }
+ elsif (!&matchaddrlist($rr->name)) {
+ &printerr("WARN", $rr->name
+ ." PTR ". $rr->ptrdname .": A record not found\n");
+@@ -230,10 +232,10 @@ sub check_zone {
+ }
+ elsif ($opt_F && !&equal($name,$rr->name)) {
+ # Filter out "hostname-something" (like "neptune-le0")
+- if (index(split (/\./, $rr->name, 2) . "-",
++ if (index(split (/\./, $rr->name, 2) . "-",
+ split (/\./, $name, 2)) == -1 ) {
+- &printerr("WARN", $rr->name ." A ".
+- $rr->address .": points to $name\n")
++ &printerr("WARN", $rr->name ." A ".
++ $rr->address .": points to $name\n")
+ if ((split(/\./,$name))[0] ne "localhost");
+ }
+ }
+@@ -408,7 +410,7 @@ sub checklamer {
+ $res->errorstring ."\n");
+ return;
+ }
+- &printerr("BAD", "$zone NS $nameserver: lame NS delegation\n")
++ &printerr("BAD", "$zone NS $nameserver: lame NS delegation\n")
+ unless ($soa_req->header->aa);
+ return;
+-}
++}
+\ No newline at end of file
+--
+2.28.0
+