From bcfd5e4a9e302bca46b10dd6a4ec8dd416bc6b4c Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Fri, 17 Jul 2015 15:36:56 +0200 Subject: [PATCH 1/4] coverity 1147049: buffered file reader resource guard --- core/src/com/cloud/storage/template/VmdkProcessor.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/com/cloud/storage/template/VmdkProcessor.java b/core/src/com/cloud/storage/template/VmdkProcessor.java index 6903b74a674a..929157e5dcb4 100644 --- a/core/src/com/cloud/storage/template/VmdkProcessor.java +++ b/core/src/com/cloud/storage/template/VmdkProcessor.java @@ -86,9 +86,10 @@ public long getTemplateVirtualSize(String templatePath, String templateName) thr long virtualSize = 0; String templateFileFullPath = templatePath.endsWith(File.separator) ? templatePath : templatePath + File.separator; templateFileFullPath += templateName.endsWith(ImageFormat.VMDK.getFileExtension()) ? templateName : templateName + "." + ImageFormat.VMDK.getFileExtension(); - try { - FileReader fileReader = new FileReader(templateFileFullPath); - BufferedReader bufferedReader = new BufferedReader(fileReader); + try ( + FileReader fileReader = new FileReader(templateFileFullPath); + BufferedReader bufferedReader = new BufferedReader(fileReader); + ) { Pattern regex = Pattern.compile("(RW|RDONLY|NOACCESS) (\\d+) (FLAT|SPARSE|ZERO|VMFS|VMFSSPARSE|VMFSDRM|VMFSRAW)"); String line = null; while((line = bufferedReader.readLine()) != null) { @@ -99,7 +100,6 @@ public long getTemplateVirtualSize(String templatePath, String templateName) thr break; } } - bufferedReader.close(); } catch(FileNotFoundException ex) { String msg = "Unable to open file '" + templateFileFullPath + "' " + ex.toString(); s_logger.error(msg); From ee54fac054eaa6d1b7d67919793b7122c28d3d36 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Fri, 17 Jul 2015 15:47:39 +0200 Subject: [PATCH 2/4] coverity 1133705: output writer close --- server/src/com/cloud/server/ConfigurationServerImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java index 288eeebc6c6e..e7a928acfdb5 100644 --- a/server/src/com/cloud/server/ConfigurationServerImpl.java +++ b/server/src/com/cloud/server/ConfigurationServerImpl.java @@ -650,11 +650,11 @@ protected void updateSSLKeystore() { } else { // !keystoreFile.exists() and dbExisted // Export keystore to local file byte[] storeBytes = Base64.decodeBase64(dbString); - try { - String tmpKeystorePath = "/tmp/tmpkey"; - FileOutputStream fo = new FileOutputStream(tmpKeystorePath); + String tmpKeystorePath = "/tmp/tmpkey"; + try ( + FileOutputStream fo = new FileOutputStream(tmpKeystorePath); + ) { fo.write(storeBytes); - fo.close(); Script script = new Script(true, "cp", 5000, null); script.add("-f"); script.add(tmpKeystorePath); From 4b47bd2e715a4e2db9d6557069ddb9ebb02d2dfe Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Fri, 17 Jul 2015 15:56:04 +0200 Subject: [PATCH 3/4] coverity 1147051: trivial db resource leak in endpoint selector should have been nested try catches before try-with-resource beacame available --- .../endpoint/DefaultEndPointSelector.java | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java b/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java index 0778e5427b9e..d38aaed80ed6 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java +++ b/engine/storage/src/org/apache/cloudstack/storage/endpoint/DefaultEndPointSelector.java @@ -395,30 +395,19 @@ public EndPoint selectHypervisorHost(Scope scope) { sbuilder.append(" ORDER by rand() limit 1"); String sql = sbuilder.toString(); - PreparedStatement pstmt = null; - ResultSet rs = null; HostVO host = null; TransactionLegacy txn = TransactionLegacy.currentTxn(); - try { - pstmt = txn.prepareStatement(sql); - rs = pstmt.executeQuery(); + try ( + PreparedStatement pstmt = txn.prepareStatement(sql); + ResultSet rs = pstmt.executeQuery(); + ) { while (rs.next()) { long id = rs.getLong(1); host = hostDao.findById(id); } } catch (SQLException e) { s_logger.warn("can't find endpoint", e); - } finally { - try { - if (rs != null) { - rs.close(); - } - if (pstmt != null) { - pstmt.close(); - } - } catch (SQLException e) { - } } if (host == null) { From 8c833dc3ca80f4e1f7e1faeb147f2751ab7de4d3 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Fri, 17 Jul 2015 16:24:13 +0200 Subject: [PATCH 4/4] coverity 1125362, 1125363: assorted resource leaks --- .../crypt/EncryptionSecretKeyChecker.java | 42 +++++++------------ 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/utils/src/com/cloud/utils/crypt/EncryptionSecretKeyChecker.java b/utils/src/com/cloud/utils/crypt/EncryptionSecretKeyChecker.java index b28b067b9263..65249878bded 100644 --- a/utils/src/com/cloud/utils/crypt/EncryptionSecretKeyChecker.java +++ b/utils/src/com/cloud/utils/crypt/EncryptionSecretKeyChecker.java @@ -30,7 +30,6 @@ import javax.annotation.PostConstruct; -import org.apache.commons.io.IOUtils; import org.apache.log4j.Logger; import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; @@ -83,15 +82,12 @@ public void check(Properties dbProps) throws IOException { if(is == null) { //This is means we are not able to load key file from the classpath. throw new CloudRuntimeException(s_keyFile + " File containing secret key not found in the classpath: "); } - BufferedReader in = null; - try { - in = new BufferedReader(new InputStreamReader(is)); + + try (BufferedReader in = new BufferedReader(new InputStreamReader(is));) { secretKey = in.readLine(); //Check for null or empty secret key } catch (IOException e) { throw new CloudRuntimeException("Error while reading secret key from: " + s_keyFile, e); - } finally { - IOUtils.closeQuietly(in); } if (secretKey == null || secretKey.isEmpty()) { @@ -104,30 +100,24 @@ public void check(Properties dbProps) throws IOException { throw new CloudRuntimeException("Environment variable " + s_envKey + " is not set or empty"); } } else if (encryptionType.equals("web")) { - ServerSocket serverSocket = null; int port = 8097; - try { - serverSocket = new ServerSocket(port); + try (ServerSocket serverSocket = new ServerSocket(port);) { + s_logger.info("Waiting for admin to send secret key on port " + port); + try ( + Socket clientSocket = serverSocket.accept(); + PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); + BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + ) { + String inputLine; + if ((inputLine = in.readLine()) != null) { + secretKey = inputLine; + } + } catch (IOException e) { + throw new CloudRuntimeException("Accept failed on " + port); + } } catch (IOException ioex) { throw new CloudRuntimeException("Error initializing secret key reciever", ioex); } - s_logger.info("Waiting for admin to send secret key on port " + port); - Socket clientSocket = null; - try { - clientSocket = serverSocket.accept(); - } catch (IOException e) { - throw new CloudRuntimeException("Accept failed on " + port); - } - PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); - BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); - String inputLine; - if ((inputLine = in.readLine()) != null) { - secretKey = inputLine; - } - out.close(); - in.close(); - clientSocket.close(); - serverSocket.close(); } else { throw new CloudRuntimeException("Invalid encryption type: " + encryptionType); }