diff --git a/phpseclib/File/ASN1.php b/phpseclib/File/ASN1.php index 3b8f11bd..a304a000 100644 --- a/phpseclib/File/ASN1.php +++ b/phpseclib/File/ASN1.php @@ -493,6 +493,10 @@ class ASN1 */ function asn1map($decoded, $mapping, $special = array()) { + 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 9df21d97..92d756f2 100644 --- a/tests/Unit/File/X509/X509Test.php +++ b/tests/Unit/File/X509/X509Test.php @@ -797,4 +797,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 File_X509(); + $r = $x509->loadX509($a); + + $this->assertFalse($r); + } }