From 4b172e2d78312bb3ba4ca9ff79b4d0c9a9722708 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Wed, 29 Jul 2009 22:19:52 +0000
Subject: [PATCH] Fix for issue 4156.
---
opendj-sdk/opends/src/server/org/opends/server/extensions/TLSByteChannel.java | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSByteChannel.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSByteChannel.java
index 4437367..d0283eb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSByteChannel.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/extensions/TLSByteChannel.java
@@ -35,11 +35,8 @@
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLEngine;
-import javax.net.ssl.SSLEngineResult;
-import javax.net.ssl.SSLPeerUnverifiedException;
-import javax.net.ssl.SSLSession;
+import javax.net.ssl.*;
+
import org.opends.server.admin.std.server.LDAPConnectionHandlerCfg;
import org.opends.server.api.ClientConnection;
import org.opends.server.loggers.debug.DebugTracer;
@@ -359,6 +356,12 @@
netData.clear();
SSLEngineResult res = sslEngine.wrap(clearData, netData);
netData.flip();
+ if(netData.remaining() == 0)
+ {
+ // wrap didn't produce any data from our clear buffer.
+ // Throw exception to prevent looping.
+ throw new SSLException("SSLEngine.wrap produced 0 bytes");
+ }
if(res.getStatus() != SSLEngineResult.Status.OK)
throw new ClosedChannelException();
if (hsStatus == SSLEngineResult.HandshakeStatus.NEED_TASK ||
--
Gitblit v1.10.0