Skip to content

Commit 190c57a

Browse files
committed
Fix resource leak in loadAppKeyStore()
The FileInputStream was never closed. Also improve exception handling of the load(null, null) case, i.e. only catch declared checked exceptions of load(). Luckily we can use try/multi-catch since 1ee2c25.
1 parent 1ee2c25 commit 190c57a

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/de/duenndns/ssl/MemorizingTrustManager.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,14 @@
3939
import android.os.Handler;
4040

4141
import java.io.File;
42+
import java.io.FileNotFoundException;
4243
import java.io.IOException;
44+
import java.io.InputStream;
4345
import java.security.cert.*;
4446
import java.security.KeyStore;
4547
import java.security.KeyStoreException;
4648
import java.security.MessageDigest;
49+
import java.security.NoSuchAlgorithmException;
4750
import java.util.logging.Level;
4851
import java.util.logging.Logger;
4952
import java.text.SimpleDateFormat;
@@ -317,12 +320,24 @@ KeyStore loadAppKeyStore() {
317320
}
318321
try {
319322
ks.load(null, null);
320-
ks.load(new java.io.FileInputStream(keyStoreFile), "MTM".toCharArray());
321-
} catch (java.io.FileNotFoundException e) {
322-
LOGGER.log(Level.INFO, "getAppKeyStore(" + keyStoreFile + ") - file does not exist");
323-
} catch (Exception e) {
323+
} catch (NoSuchAlgorithmException | CertificateException | IOException e) {
324324
LOGGER.log(Level.SEVERE, "getAppKeyStore(" + keyStoreFile + ")", e);
325325
}
326+
InputStream is = null;
327+
try {
328+
is = new java.io.FileInputStream(keyStoreFile);
329+
ks.load(is, "MTM".toCharArray());
330+
} catch (NoSuchAlgorithmException | CertificateException | IOException e) {
331+
LOGGER.log(Level.INFO, "getAppKeyStore(" + keyStoreFile + ") - exception loading file key store");
332+
} finally {
333+
if (is != null) {
334+
try {
335+
is.close();
336+
} catch (IOException e) {
337+
LOGGER.log(Level.FINE, "getAppKeyStore(" + keyStoreFile + ") - exception closing file key store input stream");
338+
}
339+
}
340+
}
326341
return ks;
327342
}
328343

0 commit comments

Comments
 (0)