From: Roger Meier Date: Thu, 26 Dec 2013 14:38:32 +0000 (+0100) Subject: THRIFT-2293 java: TSSLTransportFactory.createSSLContext() leaves files open X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=53db7cc486a9f1f0e000d977d853a6811238a9e6;p=common%2Fthrift.git THRIFT-2293 java: TSSLTransportFactory.createSSLContext() leaves files open Patch: Venura --- 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 25df97f1..044e06ab --- 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; }