You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2020/06/08 13:16:11 UTC
[james-project] 17/30: JAMES-3179 Fix UrlResource InputStream leaks
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 <gd...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org