Skip Menu |

This queue is for tickets about the Net-DNS CPAN distribution.

Report information
The Basics
Id: 131481
Status: rejected
Priority: 0/
Queue: Net-DNS

People
Owner: Nobody in particular
Requestors: axel.burri [...] swisssign.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: Infinite loop in Net::DNS::Resolver::Recurse
Date: Wed, 15 Jan 2020 10:00:34 +0000
To: "bug-Net-DNS [...] rt.cpan.org" <bug-Net-DNS [...] rt.cpan.org>
From: Axel Burri <axel.burri [...] swisssign.com>
While resolving a domain with buggy entries, Net::DNS::Resolver::Recurse enters an infinite loop. Version info: - Net::DNS v1.21 - Perl v5.30.1 - Ubuntu 18.04.3 LTS Steps to reproduce: use Net::DNS::Resolver::Recurse; my $rresolver = Net::DNS::Resolver::Recurse->new(); $rresolver->debug(1); my $packet = $rresolver->send( 'junior-club.ch.', 'NS' ); See attachment for produced output.
Download out.xz
application/x-xz 1.9k

Message body not shown because it is not plain text.

The example domain name, if it exists at all, is unresolvable. $ dig @8.8.8.8 -t NS junior-club.ch. ; <<>> DiG 9.11.14-RedHat-9.11.14-2.fc31 <<>> @8.8.8.8 -t NS junior-club.ch. ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 6615 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;junior-club.ch. IN NS ;; Query time: 201 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Fri Jan 31 17:24:34 GMT 2020 ;; MSG SIZE rcvd: 43 The ch. nameservers reply with a referral to ns.everyware.ch. which responds with a referral back to ch. ns2.everyware.ch. responds with a refusal. Net::DNS::Resolver::Recurse follows the circular referrals relentlessly. The present simple-minded design cannot detect this situation and I see no compelling reason to tear it to bits to overcome this obvious mis-configuration. $ dig @a.nic.ch. -t NS junior-club.ch. ; <<>> DiG 9.11.14-RedHat-9.11.14-2.fc31 <<>> @a.nic.ch. -t NS junior-club.ch. ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30880 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;junior-club.ch. IN NS ;; AUTHORITY SECTION: junior-club.ch. 3600 IN NS ns.everyware.ch. junior-club.ch. 3600 IN NS ns2.everyware.ch. ;; Query time: 45 msec ;; SERVER: 130.59.31.41#53(130.59.31.41) ;; WHEN: Fri Jan 31 17:15:09 GMT 2020 ;; MSG SIZE rcvd: 90 $ dig @ns.everyware.ch. -t NS junior-club.ch. ; <<>> DiG 9.11.14-RedHat-9.11.14-2.fc31 <<>> @ns.everyware.ch. -t NS junior-club.ch. ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55194 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 8, ADDITIONAL: 15 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;junior-club.ch. IN NS ;; AUTHORITY SECTION: ch. 76449 IN NS e.nic.ch. ch. 76449 IN NS f.nic.ch. ch. 76449 IN NS g.nic.ch. ch. 76449 IN NS h.nic.ch. ch. 76449 IN NS a.nic.ch. ch. 76449 IN NS b.nic.ch. ch. 76449 IN NS c.nic.ch. ch. 76449 IN NS d.nic.ch. ;; ADDITIONAL SECTION: b.nic.ch. 76449 IN A 130.59.31.43 b.nic.ch. 169256 IN AAAA 2001:620:0:ff::58 c.nic.ch. 76449 IN A 147.28.0.39 c.nic.ch. 169256 IN AAAA 2001:418:1::39 d.nic.ch. 76449 IN A 200.160.0.5 d.nic.ch. 169256 IN AAAA 2001:12ff:0:a20::5 e.nic.ch. 76449 IN A 194.0.17.1 e.nic.ch. 169256 IN AAAA 2001:678:3::1 f.nic.ch. 76449 IN A 194.146.106.10 f.nic.ch. 169256 IN AAAA 2001:67c:1010:2::53 g.nic.ch. 76449 IN A 194.0.1.40 g.nic.ch. 169256 IN AAAA 2001:678:4::28 h.nic.ch. 76449 IN A 85.119.5.230 h.nic.ch. 169256 IN AAAA 2a03:bd80:36::1:203:230 ;; Query time: 53 msec ;; SERVER: 212.71.111.250#53(212.71.111.250) ;; WHEN: Fri Jan 31 17:17:56 GMT 2020 ;; MSG SIZE rcvd: 483 $ dig @ns2.everyware.ch. -t NS junior-club.ch. ; <<>> DiG 9.11.14-RedHat-9.11.14-2.fc31 <<>> @ns2.everyware.ch. -t NS junior-club.ch. ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 36395 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;junior-club.ch. IN NS ;; Query time: 51 msec ;; SERVER: 212.71.98.250#53(212.71.98.250) ;; WHEN: Fri Jan 31 17:19:14 GMT 2020 ;; MSG SIZE rcvd: 43