diff --git a/dnssec-tools/tools/modules/ZoneFile-Fast/Fast.pm b/dnssec-tools/tools/modules/ZoneFile-Fast/Fast.pm index db99379..54333d5 100644 --- a/dnssec-tools/tools/modules/ZoneFile-Fast/Fast.pm +++ b/dnssec-tools/tools/modules/ZoneFile-Fast/Fast.pm @@ -1310,8 +1310,10 @@ sub parse_tlsa { # got more data if (/\)\s*$/) { - if (/\G\s*(\S*)\s*\)\s*$/gc) { + while (/\G\s*([0-9A-Za-z]+)\s*/gc) { $tlsa->{'cert'} .= $1; + } + if (/\G\s*\)$/gc) { $tlsa->{'cert'} = lc($tlsa->{'cert'}); # we're done @@ -1321,7 +1323,7 @@ sub parse_tlsa push @zone, $tlsa; $tlsa = undef; } else { - error("bad tlsa last line"); + error("bad tlsa last line: $_"); } } else { if (/\G\s*(\S+)\s*$/gc) { diff --git a/dnssec-tools/tools/modules/ZoneFile-Fast/t/rrs.t b/dnssec-tools/tools/modules/ZoneFile-Fast/t/rrs.t index 2539b1c..af6cc00 100644 --- a/dnssec-tools/tools/modules/ZoneFile-Fast/t/rrs.t +++ b/dnssec-tools/tools/modules/ZoneFile-Fast/t/rrs.t @@ -65,7 +65,10 @@ BEGIN { ); if ($Net::DNS::VERSION > 0.72) { - push @test, q{acme.com. IN TLSA 3 0 1 1BFC4290C5798EFCC6D4A1F2D79C3C5F49ACCAC687DF42974B68A45F 05BA074F}, + push @test, q{acme.com. IN TLSA 3 0 1 1BFC4290C5798EFCC6D4A1F2D79C3C5F49ACCAC687DF42974B68A45F 05BA074F}; + push @test, q{acme.com. IN TLSA 3 0 1 ( 1BFC4290C5798EFCC6D4A1F2D79C3C5F49ACCAC687DF42974B68A45F 05BA074F )}; + push @test, q{acme.com. IN TLSA 3 0 1 ( + 1BFC4290C5798EFCC6D4A1F2D79C3C5F49ACCAC687DF42974B68A45F 05BA074F )}; } }