diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2013-06-23 16:33:25 +0400 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2013-06-23 16:33:25 +0400 |
commit | 3d67aaf2215d06fd9fd61b91cf92d6950f82d770 (patch) | |
tree | 12a2ab24c9454074f8a5d27d5ccdb97c3c3a41b0 /core/src/main/java/org/bouncycastle/crypto/tls/RecordStream.java | |
parent | 9857222813443ea6ce0197377e54f4fa1efe18ad (diff) |
Avoid EOFException in RecordStream.readRecord if input closes between
records (defer to caller to decide).
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/tls/RecordStream.java')
-rw-r--r-- | core/src/main/java/org/bouncycastle/crypto/tls/RecordStream.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/tls/RecordStream.java b/core/src/main/java/org/bouncycastle/crypto/tls/RecordStream.java index 684eb1fc..d90c47d2 100644 --- a/core/src/main/java/org/bouncycastle/crypto/tls/RecordStream.java +++ b/core/src/main/java/org/bouncycastle/crypto/tls/RecordStream.java @@ -136,10 +136,17 @@ class RecordStream pendingCipher = null; } - public void readRecord() + public boolean readRecord() throws IOException { - short type = TlsUtils.readUint8(input); +// short type = TlsUtils.readUint8(input); + int i = input.read(); + if (i < 0) + { + return false; + } + + short type = (short)i; // TODO In earlier RFCs, it was "SHOULD ignore"; should this be version-dependent? /* @@ -172,6 +179,7 @@ class RecordStream int length = TlsUtils.readUint16(input); byte[] plaintext = decodeAndVerify(type, input, length); handler.processRecord(type, plaintext, 0, plaintext.length); + return true; } protected byte[] decodeAndVerify(short type, InputStream input, int len) |