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