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; }
