Closed
Description
The following test of decoding unsafe input will make an infinite loop spewing warnings in 0.26:
use Convert::ASN1;
my $asn = Convert::ASN1->new;
$asn->prepare(q<
[APPLICATION 7] SEQUENCE {
int INTEGER
}
>);
my $out;
$out = $asn->decode( pack("H*", "dfccd3fde3") );
$out = $asn->decode( pack("H*", "b0805f92cb") );I ran random 5-byte strings to find two repeatable examples.
Fix: Add a position check to the two do loops on lines 636 and 690 of _decode.pm:
do {
$tag .= substr($_[0],$pos++,1);
$b = ord substr($tag,-1);
} while($b & 0x80 && $pos < $end);This can happen in Convert::PEM when an incorrect password is used. See RT 27574 for an example.
Metadata
Metadata
Assignees
Labels
No labels