diff options
author | Matthias Sohn <matthias.sohn@sap.com> | 2020-01-04 15:44:19 +0100 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2020-01-06 11:40:04 +0100 |
commit | d9e957dc2485d4a0737e537298e575365ec5eb2c (patch) | |
tree | 475904b94831ea8159093ce00d95d6c88943ce48 /org.eclipse.jgit/src/org | |
parent | ebea36aa07520f7f4b873930ca9b4dbca8db52ef (diff) | |
download | jgit-d9e957dc2485d4a0737e537298e575365ec5eb2c.tar.gz jgit-d9e957dc2485d4a0737e537298e575365ec5eb2c.zip |
SshSupport#runSshCommand: don't throw exception in finally block
The CommandFailedException which was thrown in finally block is silently
discarded [1]. Refactor this method to throw the exception after the
finally block.
This fixes the warning "Null comparison always yields false: The
variable failure can only be null at this location".
[1] https://wiki.sei.cmu.edu/confluence/display/java/ERR04-J.+Do+not+complete+abruptly+from+a+finally+block
https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.20.2
Change-Id: Idbfc303d9c9046ab9a43e0d4c6d65d325bdaf0ed
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit/src/org')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java index 913aa72867..ac5be1bf20 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/SshSupport.java @@ -94,6 +94,7 @@ public class SshSupport { CommandFailedException failure = null; @SuppressWarnings("resource") MessageWriter stderr = new MessageWriter(); + String out; try (MessageWriter stdout = new MessageWriter()) { session = SshSessionFactory.getInstance().getSession(sshUri, provider, fs, 1000 * timeout); @@ -108,12 +109,12 @@ public class SshSupport { // waitFor with timeout has a bug - JSch' exitValue() throws the // wrong exception type :( if (process.waitFor() == 0) { - return stdout.toString(); + out = stdout.toString(); } else { - return null; // still running after timeout + out = null; // still running after timeout } } catch (InterruptedException e) { - return null; // error + out = null; // error } } finally { if (errorThread != null) { @@ -147,10 +148,11 @@ public class SshSupport { if (session != null) { SshSessionFactory.getInstance().releaseSession(session); } - if (failure != null) { - throw failure; - } } + if (failure != null) { + throw failure; + } + return out; } } |