diff --git a/src/main/java/com/github/fommil/ssh/SshRsaCrypto.java b/src/main/java/com/github/fommil/ssh/SshRsaCrypto.java index 18c60ef..25c82cb 100644 --- a/src/main/java/com/github/fommil/ssh/SshRsaCrypto.java +++ b/src/main/java/com/github/fommil/ssh/SshRsaCrypto.java @@ -34,8 +34,9 @@ private BigInteger readAsnInteger(DataInputStream in) throws IOException { checkArgument(in.read() == 2, "no INTEGER marker"); int length = in.read(); if (length >= 0x80) { - byte[] extended = new byte[length & 0x7f]; - in.readFully(extended); + byte[] extended = new byte[4]; + int bytesToRead = length & 0x7f; + in.readFully(extended, 4 - bytesToRead, bytesToRead); length = new BigInteger(extended).intValue(); } byte[] data = new byte[length]; @@ -139,4 +140,4 @@ public byte[] slurpPublicKey(String body) throws IOException { Base64 b64 = new Base64(); return b64.decode(contents[1]); } -} \ No newline at end of file +}