This is an automated email from the ASF dual-hosted git repository. rouazana pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 95373094887123570f0b209882055ba26de3d319 Author: Gautier DI FOLCO <gdifo...@linagora.com> AuthorDate: Tue May 12 15:56:31 2020 +0200 JAMES-3179 Fix UrlResource InputStream leaks --- .../configuration/FileConfigurationProvider.java | 5 ++++ .../mailrepository/jdbc/JDBCMailRepository.java | 31 ++++++++++------------ .../james/jmap/draft/crypto/SecurityKeyLoader.java | 8 +++--- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/server/container/core/src/main/java/org/apache/james/server/core/configuration/FileConfigurationProvider.java b/server/container/core/src/main/java/org/apache/james/server/core/configuration/FileConfigurationProvider.java index 48b965b..0297774 100644 --- a/server/container/core/src/main/java/org/apache/james/server/core/configuration/FileConfigurationProvider.java +++ b/server/container/core/src/main/java/org/apache/james/server/core/configuration/FileConfigurationProvider.java @@ -57,6 +57,11 @@ public class FileConfigurationProvider implements ConfigurationProvider { XMLConfiguration xmlConfiguration = builder.getConfiguration(); FileHandler fileHandler = new FileHandler(xmlConfiguration); fileHandler.load(configStream); + try { + configStream.close(); + } catch (IOException ignored) { + // Ignored + } return xmlConfiguration; } diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java index ac64737..344c4c3 100644 --- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java +++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java @@ -263,28 +263,25 @@ public class JDBCMailRepository implements MailRepository, Configurable, Initial try (Connection conn = datasource.getConnection()) { // Initialise the sql strings. - InputStream sqlFile; - try { - sqlFile = fileSystem.getResource(sqlFileName); + try (InputStream sqlFile = fileSystem.getResource(sqlFileName)) { + LOGGER.debug("Reading SQL resources from file: {}, section {}.", sqlFileName, getClass().getName()); + + // Build the statement parameters + Map<String, String> sqlParameters = new HashMap<>(); + if (tableName != null) { + sqlParameters.put("table", tableName); + } + if (repositoryName != null) { + sqlParameters.put("repository", repositoryName); + } + + sqlQueries = new SqlResources(); + sqlQueries.init(sqlFile, this.getClass().getName(), conn, sqlParameters); } catch (Exception e) { LOGGER.error(e.getMessage(), e); throw e; } - LOGGER.debug("Reading SQL resources from file: {}, section {}.", sqlFileName, getClass().getName()); - - // Build the statement parameters - Map<String, String> sqlParameters = new HashMap<>(); - if (tableName != null) { - sqlParameters.put("table", tableName); - } - if (repositoryName != null) { - sqlParameters.put("repository", repositoryName); - } - - sqlQueries = new SqlResources(); - sqlQueries.init(sqlFile, this.getClass().getName(), conn, sqlParameters); - // Check if the required table exists. If not, create it. DatabaseMetaData dbMetaData = conn.getMetaData(); // Need to ask in the case that identifiers are stored, ask the diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/crypto/SecurityKeyLoader.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/crypto/SecurityKeyLoader.java index 38da9c4..6b208ca 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/crypto/SecurityKeyLoader.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/crypto/SecurityKeyLoader.java @@ -55,9 +55,11 @@ public class SecurityKeyLoader { Preconditions.checkState(jmapDraftConfiguration.isEnabled(), "JMAP is not enabled"); KeyStore keystore = KeyStore.getInstance(JKS); - InputStream fis = fileSystem.getResource(jmapDraftConfiguration.getKeystore()); - char[] secret = jmapDraftConfiguration.getSecret().toCharArray(); - keystore.load(fis, secret); + char[] secret; + try (InputStream fis = fileSystem.getResource(jmapDraftConfiguration.getKeystore())) { + secret = jmapDraftConfiguration.getSecret().toCharArray(); + keystore.load(fis, secret); + } Certificate aliasCertificate = Optional .ofNullable(keystore.getCertificate(ALIAS)) .orElseThrow(() -> new KeyStoreException("Alias '" + ALIAS + "' keystore can't be found")); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org