diff options
author | Mattias Päivärinta <mattias.paivarinta@iis.se> | 2023-12-04 10:52:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-04 10:52:12 +0100 |
commit | 3b9154fa6e827dc63c53098ac9f8f86d79955db9 (patch) | |
tree | 258cda1d534a7ea6fee72fc028ba3bb6d446f152 /t | |
parent | 56d96c517203eb1cd1096f5fa5b7f9393b7e8587 (diff) | |
parent | 0541cca90eb6d610467543c8478e5a39041af51d (diff) |
Merge pull request #136 from mattias-p/ignore-incomplete-rr
Ignore incomplete RRs
Diffstat (limited to 't')
-rw-r--r-- | t/packet.t | 38 | ||||
-rw-r--r-- | t/rr.t | 7 |
2 files changed, 42 insertions, 3 deletions
@@ -1,8 +1,10 @@ -use Test::More; -use Test::Fatal; - use strict; use warnings; +use Test::More; + +use MIME::Base64; +use Test::Differences; +use Test::Fatal; use_ok('Zonemaster::LDNS'); @@ -59,4 +61,34 @@ subtest "croak when stringifying packet with malformed CAA" => sub { like( exception { $will_croak->() }, qr/^Failed to convert packet to string/ ); }; +subtest "Answer section" => sub { + # Parse a packet with a single incomplete MX record + my $data = decode_base64( "EjSFgAABAAIAAAAAB2V4YW1wbGUCc2UAAA8AAcAMAA8AAQABUYAAAgAKwAwAAQABAAFRgAAEwAACAQ=="); + my $p = Zonemaster::LDNS::Packet->new_from_wireformat( $data ); + + my $rr_count = scalar $p->answer; + + is $rr_count, 1, "keep complete RRs but ignore incomplete ones"; +}; + +subtest "Authority section" => sub { + # Parse a packet with a single incomplete MX record + my $data = decode_base64( "EjSFgAABAAAAAgAAB2V4YW1wbGUCc2UAAA8AAcAMAA8AAQABUYAAAgAKwAwAAQABAAFRgAAEwAACAQ==" ); + my $p = Zonemaster::LDNS::Packet->new_from_wireformat( $data ); + + my $rr_count = scalar $p->authority; + + is $rr_count, 1, "keep complete RRs but ignore incomplete ones"; +}; + +subtest "Additional section" => sub { + # Parse a packet with a single incomplete MX record + my $data = decode_base64( "EjSFgAABAAAAAAACB2V4YW1wbGUCc2UAAA8AAcAMAA8AAQABUYAAAgAKwAwAAQABAAFRgAAEwAACAQ==" ); + my $p = Zonemaster::LDNS::Packet->new_from_wireformat( $data ); + + my $rr_count = scalar $p->additional; + + is $rr_count, 1, "keep complete RRs but ignore incomplete ones"; +}; + done_testing(); @@ -255,6 +255,13 @@ subtest 'NSEC3PARAM with salt' => sub { is( lc($nsec3param->owner), 'whitehouse.gov.' ); }; +subtest 'SIG' => sub { + my $sig = Zonemaster::LDNS::RR->new_from_string('sig.example. 3600 IN SIG A 1 2 3600 19970102030405 19961211100908 2143 sig.example. AIYADP8d3zYNyQwW2EM4wXVFdslEJcUx/fxkfBeH1El4ixPFhpfHFElxbvKoWmvjDTCmfiYy2X+8XpFjwICHc398kzWsTMKlxovpz2FnCTM='); + isa_ok( $sig, 'Zonemaster::LDNS::RR::SIG' ); + can_ok( 'Zonemaster::LDNS::RR::SIG', qw(check_rd_count) ); + is( $sig->check_rd_count(), '1' ); +}; + subtest 'SRV' => sub { my $srv = Zonemaster::LDNS::RR->new( '_nicname._tcp.se. 172800 IN SRV 0 0 43 whois.nic-se.se.' ); is( $srv->type, 'SRV' ); |