Updated Branches:
  refs/heads/master 1406c9ada -> 53db7cc48

THRIFT-2293 java: TSSLTransportFactory.createSSLContext() leaves files open
Patch: Venura


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/53db7cc4
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/53db7cc4
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/53db7cc4

Branch: refs/heads/master
Commit: 53db7cc486a9f1f0e000d977d853a6811238a9e6
Parents: 1406c9a
Author: Roger Meier <[email protected]>
Authored: Thu Dec 26 15:38:32 2013 +0100
Committer: Roger Meier <[email protected]>
Committed: Thu Dec 26 15:38:32 2013 +0100

----------------------------------------------------------------------
 .../thrift/transport/TSSLTransportFactory.java    | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/53db7cc4/lib/java/src/org/apache/thrift/transport/TSSLTransportFactory.java
----------------------------------------------------------------------
diff --git a/lib/java/src/org/apache/thrift/transport/TSSLTransportFactory.java 
b/lib/java/src/org/apache/thrift/transport/TSSLTransportFactory.java
old mode 100644
new mode 100755
index 25df97f..044e06a
--- a/lib/java/src/org/apache/thrift/transport/TSSLTransportFactory.java
+++ b/lib/java/src/org/apache/thrift/transport/TSSLTransportFactory.java
@@ -20,6 +20,7 @@
 package org.apache.thrift.transport;
 
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.net.InetAddress;
 import java.security.KeyStore;
 
@@ -168,6 +169,8 @@ public class TSSLTransportFactory {
 
   private static SSLContext createSSLContext(TSSLTransportParameters params) 
throws TTransportException {
     SSLContext ctx;
+    FileInputStream fin = null;
+
     try {
       ctx = SSLContext.getInstance(params.protocol);
       TrustManagerFactory tmf = null;
@@ -176,14 +179,16 @@ public class TSSLTransportFactory {
       if (params.isTrustStoreSet) {
         tmf = TrustManagerFactory.getInstance(params.trustManagerType);
         KeyStore ts = KeyStore.getInstance(params.trustStoreType);
-        ts.load(new FileInputStream(params.trustStore), 
params.trustPass.toCharArray());
+        fin = new FileInputStream(params.trustStore);
+        ts.load(fin, params.trustPass.toCharArray());
         tmf.init(ts);
       }
 
       if (params.isKeyStoreSet) {
         kmf = KeyManagerFactory.getInstance(params.keyManagerType);
         KeyStore ks = KeyStore.getInstance(params.keyStoreType);
-        ks.load(new FileInputStream(params.keyStore), 
params.keyPass.toCharArray());
+        fin = new FileInputStream(params.keyStore);
+        ks.load(fin, params.keyPass.toCharArray());
         kmf.init(ks, params.keyPass.toCharArray());
       }
 
@@ -199,7 +204,16 @@ public class TSSLTransportFactory {
 
     } catch (Exception e) {
       throw new TTransportException("Error creating the transport", e);
+    } finally {
+      if (fin != null) {
+        try {
+          fin.close();
+        } catch (IOException e) {
+          e.printStackTrace();
+        }
+      }
     }
+
     return ctx;
   }
 

Reply via email to