Skip to content

Commit aa9ac3f

Browse files
committed
Revert "[fix] handle potential buffer overflow on write"
This reverts commit 75a66e1.
1 parent 75be9f3 commit aa9ac3f

File tree

1 file changed

+10
-21
lines changed

1 file changed

+10
-21
lines changed

src/main/java/org/jruby/ext/openssl/SSLSocket.java

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -682,33 +682,22 @@ public int write(ByteBuffer src, boolean blocking) throws SSLException, IOExcept
682682
final boolean blockingMode = channel.isBlocking();
683683
if ( ! blocking ) channel.configureBlocking(false);
684684

685-
int written = 0;
686685
try {
687-
while (true) {
688-
if (netWriteData.hasRemaining()) flushData(blocking);
689-
else if (!src.hasRemaining()) break;
690-
691-
netWriteData.clear();
692-
final SSLEngineResult result = engine.wrap(src, netWriteData);
693-
netWriteData.flip();
694-
695-
switch (result.getStatus()) {
696-
case OK:
697-
written += result.bytesConsumed();
698-
break;
699-
case BUFFER_OVERFLOW:
700-
netWriteData = Utils.ensureCapacity(netWriteData, engine.getSession().getPacketBufferSize());
701-
netWriteData.position(netWriteData.limit());
702-
break;
703-
case CLOSED:
704-
throw getRuntime().newIOError("closed SSL engine"); // EOF?
705-
}
686+
if ( netWriteData.hasRemaining() ) {
687+
flushData(blocking);
688+
}
689+
netWriteData.clear();
690+
final SSLEngineResult result = engine.wrap(src, netWriteData);
691+
if ( result.getStatus() == SSLEngineResult.Status.CLOSED ) {
692+
throw getRuntime().newIOError("closed SSL engine");
706693
}
694+
netWriteData.flip();
695+
flushData(blocking);
696+
return result.bytesConsumed();
707697
}
708698
finally {
709699
if ( ! blocking ) channel.configureBlocking(blockingMode);
710700
}
711-
return written;
712701
}
713702

714703
public int read(final ByteBuffer dst, final boolean blocking) throws IOException {

0 commit comments

Comments
 (0)