diff --git a/phpseclib/File/ASN1.php b/phpseclib/File/ASN1.php index 6e0f72cb..ac10661f 100644 --- a/phpseclib/File/ASN1.php +++ b/phpseclib/File/ASN1.php @@ -518,6 +518,10 @@ abstract class ASN1 */ public static function asn1map($decoded, $mapping, $special = []) { + if (!is_array($decoded)) { + return false; + } + if (isset($mapping['explicit']) && is_array($decoded['content'])) { $decoded = $decoded['content'][0]; } diff --git a/tests/Unit/File/X509/X509Test.php b/tests/Unit/File/X509/X509Test.php index f46c128b..770f443c 100644 --- a/tests/Unit/File/X509/X509Test.php +++ b/tests/Unit/File/X509/X509Test.php @@ -1047,4 +1047,18 @@ ut3+b2Xvzq8yzmHMFtLIJ6Afu1jJpqD82BUAFcvi5vhnP8M7b974R18WCOpgNQvXDI+2/8ZINeU= $r = $x509->loadX509($r); $this->assertSame($r['tbsCertificate']['extensions'][5]['extnValue']['excludedSubtrees'][1]['base']['iPAddress'], array('0.0.0.0', '0.0.0.0')); } + + /** + * @group github1456 + */ + public function testRandomString() + { + $a = 'da7e705569d4196cd49cf3b3d92cd435ca34ccbe'; + $a = pack('H*', $a); + + $x509 = new X509(); + $r = $x509->loadX509($a); + + $this->assertFalse($r); + } }