diff options
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/src/util/io/pem/PemReader.cs | 11 | ||||
-rw-r--r-- | crypto/test/src/util/io/pem/test/AllTests.cs | 8 |
2 files changed, 15 insertions, 4 deletions
diff --git a/crypto/src/util/io/pem/PemReader.cs b/crypto/src/util/io/pem/PemReader.cs index bf712b6de..61e132fa7 100644 --- a/crypto/src/util/io/pem/PemReader.cs +++ b/crypto/src/util/io/pem/PemReader.cs @@ -39,11 +39,14 @@ namespace Org.BouncyCastle.Utilities.IO.Pem { line = line.Substring(BeginString.Length); int index = line.IndexOf('-'); - string type = line.Substring(0, index); - if (index > 0) - return LoadObject(type); - } + if (index > 0 && Platform.EndsWith(line, "-----") && (line.Length - index) == 5) + { + string type = line.Substring(0, index); + + return LoadObject(type); + } + } return null; } diff --git a/crypto/test/src/util/io/pem/test/AllTests.cs b/crypto/test/src/util/io/pem/test/AllTests.cs index 921c40cb8..c0ca667f5 100644 --- a/crypto/test/src/util/io/pem/test/AllTests.cs +++ b/crypto/test/src/util/io/pem/test/AllTests.cs @@ -63,6 +63,14 @@ namespace Org.BouncyCastle.Utilities.IO.Pem.Tests lengthTest("RSA PRIVATE KEY", headers, new byte[103]); } + [Test] + public void TestMalformed() + { + PemReader rd = new PemReader(new StringReader("-----BEGIN \n")); + + Assert.IsNull(rd.ReadPemObject()); + } + private void lengthTest(string type, IList headers, byte[] data) { StringWriter sw = new StringWriter(); |