Repository: mina-sshd Updated Branches: refs/heads/master 77af61d35 -> 4554b304e
Updated findbugs check parameters Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/4554b304 Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/4554b304 Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/4554b304 Branch: refs/heads/master Commit: 4554b304e89696481f26fa94b4d471bb974fe3d0 Parents: 77af61d Author: Lyor Goldstein <[email protected]> Authored: Fri Jun 23 12:20:45 2017 +0300 Committer: Goldstein Lyor <[email protected]> Committed: Sun Jun 25 08:43:09 2017 +0300 ---------------------------------------------------------------------- pom.xml | 11 ++++--- .../keys/loader/putty/PuttyKeyReader.java | 7 +++- .../client/auth/pubkey/UserAuthPublicKey.java | 10 ++++-- .../client/simple/AbstractSimpleClient.java | 11 ++----- .../subsystem/sftp/DefaultCloseableHandle.java | 10 ++++++ .../common/config/keys/AuthorizedKeyEntry.java | 10 ++++++ .../apache/sshd/common/util/GenericUtils.java | 16 ++++++++- sshd-findbugs.xml | 34 ++++++++++++++++++++ .../apache/sshd/git/pack/GitPackCommand.java | 21 ++++++------ .../org/apache/sshd/git/pgm/GitPgmCommand.java | 20 ++++++------ 10 files changed, 110 insertions(+), 40 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 91da588..e420c3d 100644 --- a/pom.xml +++ b/pom.xml @@ -119,10 +119,6 @@ <httpcomps.version>4.4.1</httpcomps.version> </properties> - <prerequisites> - <maven>${min.required.maven.version}</maven> - </prerequisites> - <profiles> <profile> <id>quick</id> @@ -138,6 +134,12 @@ <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>findbugs-maven-plugin</artifactId> + <configuration> + <xmlOutput>true</xmlOutput> + <fork>false</fork> + <includeTests>true</includeTests> + <includeFilterFile>${workspace.root.dir}${file.separator}sshd-findbugs.xml</includeFilterFile> + </configuration> <executions> <execution> <id>run-findbugs</id> @@ -484,6 +486,7 @@ <exclude>src/test/resources/**</exclude> <exclude>**/stty-output-*.txt</exclude> <exclude>*checkstyle*</exclude> + <exclude>*findbugs*</exclude> <exclude>**/big-msg.txt</exclude> <!-- Eclipse files --> <exclude>.metadata/**</exclude> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/sshd-contrib/src/main/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyReader.java ---------------------------------------------------------------------- diff --git a/sshd-contrib/src/main/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyReader.java b/sshd-contrib/src/main/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyReader.java index ae00ef2..9f1bd73 100644 --- a/sshd-contrib/src/main/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyReader.java +++ b/sshd-contrib/src/main/java/org/apache/sshd/common/config/keys/loader/putty/PuttyKeyReader.java @@ -23,6 +23,7 @@ import java.io.Closeable; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.StreamCorruptedException; import java.math.BigInteger; /** @@ -37,7 +38,11 @@ public class PuttyKeyReader implements Closeable { } public void skip() throws IOException { - di.skipBytes(di.readInt()); + int skipSize = di.readInt(); + int effectiveSkip = di.skipBytes(skipSize); + if (skipSize != effectiveSkip) { + throw new StreamCorruptedException("Mismatched skip size: expected" + skipSize + ", actual=" + effectiveSkip); + } } private byte[] read() throws IOException { http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKey.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKey.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKey.java index f8a9b67..2bd6472 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKey.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKey.java @@ -45,9 +45,9 @@ import org.apache.sshd.common.util.buffer.ByteArrayBuffer; public class UserAuthPublicKey extends AbstractUserAuth implements SignatureFactoriesManager { public static final String NAME = UserAuthPublicKeyFactory.NAME; - private Iterator<PublicKeyIdentity> keys; - private PublicKeyIdentity current; - private List<NamedFactory<Signature>> factories; + protected Iterator<PublicKeyIdentity> keys; + protected PublicKeyIdentity current; + protected List<NamedFactory<Signature>> factories; public UserAuthPublicKey() { this(null); @@ -124,12 +124,14 @@ public class UserAuthPublicKey extends AbstractUserAuth implements SignatureFact throw new RuntimeSshException(e); } + String algo = KeyUtils.getKeyType(key); String name = getName(); if (log.isDebugEnabled()) { log.debug("sendAuthDataRequest({})[{}] send SSH_MSG_USERAUTH_REQUEST request {} type={} - fingerprint={}", session, service, name, algo, KeyUtils.getFingerPrint(key)); } + Buffer buffer = session.createBuffer(SshConstants.SSH_MSG_USERAUTH_REQUEST); buffer.putString(session.getUsername()); buffer.putString(service); @@ -166,6 +168,7 @@ public class UserAuthPublicKey extends AbstractUserAuth implements SignatureFact throw new RuntimeSshException(e); } + String algo = KeyUtils.getKeyType(key); String rspKeyType = buffer.getString(); if (!rspKeyType.equals(algo)) { @@ -196,6 +199,7 @@ public class UserAuthPublicKey extends AbstractUserAuth implements SignatureFact buffer.putString(algo); buffer.putPublicKey(key); appendSignature(session, service, name, username, algo, key, buffer); + session.writePacket(buffer); return true; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java b/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java index 904b7ec..475c9d4 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/simple/AbstractSimpleClient.java @@ -56,7 +56,7 @@ public abstract class AbstractSimpleClient extends AbstractLoggingBean implement protected SftpClient createSftpClient(final ClientSession session) throws IOException { Exception err = null; try { - final SftpClient client = session.createSftpClient(); + SftpClient client = session.createSftpClient(); try { return createSftpClient(session, client); } catch (Exception e) { @@ -191,7 +191,7 @@ public abstract class AbstractSimpleClient extends AbstractLoggingBean implement return createScpClient(sessionLogin(target, username, identity)); } - protected CloseableScpClient createScpClient(final ClientSession session) throws IOException { + protected CloseableScpClient createScpClient(ClientSession session) throws IOException { try { ScpClient client = Objects.requireNonNull(session, "No client session").createScpClient(); ClassLoader loader = getClass().getClassLoader(); @@ -230,12 +230,7 @@ public abstract class AbstractSimpleClient extends AbstractLoggingBean implement e.addSuppressed(t); } - if (e instanceof IOException) { - throw (IOException) e; - } else { - throw new IOException(e); - } + throw GenericUtils.toIOException(e); } } - } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultCloseableHandle.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultCloseableHandle.java b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultCloseableHandle.java index 6f4b14e..67ad906 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultCloseableHandle.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/subsystem/sftp/DefaultCloseableHandle.java @@ -52,4 +52,14 @@ public class DefaultCloseableHandle extends CloseableHandle { client.close(this); } } + + @Override // to avoid Findbugs[EQ_DOESNT_OVERRIDE_EQUALS] + public int hashCode() { + return super.hashCode(); + } + + @Override // to avoid Findbugs[EQ_DOESNT_OVERRIDE_EQUALS] + public boolean equals(Object obj) { + return super.equals(obj); + } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/sshd-core/src/main/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntry.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntry.java b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntry.java index ac4ddde..342f831 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntry.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntry.java @@ -125,6 +125,16 @@ public class AuthorizedKeyEntry extends PublicKeyEntry { return key; } + @Override // to avoid Findbugs[EQ_DOESNT_OVERRIDE_EQUALS] + public int hashCode() { + return super.hashCode(); + } + + @Override // to avoid Findbugs[EQ_DOESNT_OVERRIDE_EQUALS] + public boolean equals(Object obj) { + return super.equals(obj); + } + @Override public String toString() { String entry = super.toString(); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java index 28456f9..39036b8 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/util/GenericUtils.java @@ -19,6 +19,7 @@ package org.apache.sshd.common.util; +import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.UndeclaredThrowableException; import java.util.ArrayList; @@ -140,7 +141,7 @@ public final class GenericUtils { } public static int safeCompare(String s1, String s2, boolean caseSensitive) { - if (s1 == s2) { + if (isSameReference(s1, s2)) { return 0; } else if (s1 == null) { return +1; // push null(s) to end @@ -153,6 +154,10 @@ public final class GenericUtils { } } + public static <T> boolean isSameReference(T o1, T o2) { + return o1 == o2; + } + public static int length(CharSequence cs) { return cs == null ? 0 : cs.length(); } @@ -731,6 +736,7 @@ public final class GenericUtils { return t; // no special handling required or available } + /** * @param t The original {@link Throwable} - ignored if {@code null} * @return If {@link Throwable#getCause()} is non-{@code null} then @@ -775,6 +781,14 @@ public final class GenericUtils { return current; } + public static IOException toIOException(Throwable e) { + if (e instanceof IOException) { + return (IOException) e; + } else { + return new IOException(e); + } + } + /** * Wraps a value into a {@link Supplier} * @param <T> Type of value being supplied http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/sshd-findbugs.xml ---------------------------------------------------------------------- diff --git a/sshd-findbugs.xml b/sshd-findbugs.xml new file mode 100644 index 0000000..1e1f3a1 --- /dev/null +++ b/sshd-findbugs.xml @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<FindBugsFilter> + <!-- See http://findbugs.sourceforge.net/manual/filter.html for available format options --> + + <Match> + <!-- Exclude Groovy files --> + <Source name="~.*\.groovy" /> + </Match> + + <!-- See http://findbugs.sourceforge.net/bugDescriptions.html for available built-in bug codes and patterns --> + + <Match> + <Bug code="BIT,CN,Co,DMI,ES,FS,HE,ISC,ME,RR" /> + </Match> + + <Match> + <Bug pattern="BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS,BC_IMPOSSIBLE_CAST,BC_IMPOSSIBLE_DOWNCAST" /> + </Match> + <Match> + <Bug pattern="BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY,BC_IMPOSSIBLE_INSTANCEOF" /> + </Match> + + <Match> + <Bug pattern="DM_NEW_FOR_GETCLASS" /> + </Match> + + <Match> + <Bug pattern="EQ_ABSTRACT_SELF,EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS,EQ_SELF_NO_OBJECT,EQ_ALWAYS_FALSE,EQ_ALWAYS_TRUE,EQ_COMPARING_CLASS_NAMES" /> + </Match> + <Match> + <Bug pattern="EQ_OTHER_NO_OBJECT,EQ_OTHER_USE_OBJECT,EQ_SELF_USE_OBJECT,EQ_DOESNT_OVERRIDE_EQUALS" /> + </Match> + +</FindBugsFilter> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java ---------------------------------------------------------------------- diff --git a/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java b/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java index 500e020..229cbfb 100644 --- a/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java +++ b/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java @@ -155,39 +155,35 @@ public class GitPackCommand extends AbstractLoggingBean implements Command, Runn } List<String> list = new ArrayList<>(); - StringBuilder sb = new StringBuilder(); - int expecting = CHAR | DELIMITER | STARTQUOTE; - boolean isEscaped = false; for (int i = 0; i < value.length(); i++) { char c = value.charAt(i); - boolean isDelimiter = delim.indexOf(c) >= 0; - - if (!isEscaped && c == '\\') { + if (!isEscaped && (c == '\\')) { isEscaped = true; continue; } if (isEscaped) { sb.append(c); - } else if (isDelimiter && (expecting & DELIMITER) > 0) { + } else if (isDelimiter && ((expecting & DELIMITER) != 0)) { if (trim) { - list.add(sb.toString().trim()); + String str = sb.toString(); + list.add(str.trim()); } else { list.add(sb.toString()); } sb.delete(0, sb.length()); expecting = CHAR | DELIMITER | STARTQUOTE; - } else if ((c == '"') && (expecting & STARTQUOTE) > 0) { + } else if ((c == '"') && ((expecting & STARTQUOTE) != 0)) { sb.append(c); expecting = CHAR | ENDQUOTE; - } else if ((c == '"') && (expecting & ENDQUOTE) > 0) { + } else if ((c == '"') && ((expecting & ENDQUOTE) != 0)) { sb.append(c); expecting = CHAR | STARTQUOTE | DELIMITER; - } else if ((expecting & CHAR) > 0) { + } else if ((expecting & CHAR) != 0) { sb.append(c); } else { throw new IllegalArgumentException("Invalid delimited string: " + value); @@ -198,7 +194,8 @@ public class GitPackCommand extends AbstractLoggingBean implements Command, Runn if (sb.length() > 0) { if (trim) { - list.add(sb.toString().trim()); + String str = sb.toString(); + list.add(str.trim()); } else { list.add(sb.toString()); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/4554b304/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java ---------------------------------------------------------------------- diff --git a/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java b/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java index 2e6434f..013f4e5 100644 --- a/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java +++ b/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java @@ -142,39 +142,36 @@ public class GitPgmCommand extends AbstractLoggingBean implements Command, Runna } List<String> list = new ArrayList<>(); - StringBuilder sb = new StringBuilder(); - int expecting = CHAR | DELIMITER | STARTQUOTE; - boolean isEscaped = false; for (int i = 0; i < value.length(); i++) { char c = value.charAt(i); - boolean isDelimiter = delim.indexOf(c) >= 0; - if (!isEscaped && c == '\\') { + if (!isEscaped && (c == '\\')) { isEscaped = true; continue; } if (isEscaped) { sb.append(c); - } else if (isDelimiter && (expecting & DELIMITER) > 0) { + } else if (isDelimiter && ((expecting & DELIMITER) != 0)) { if (trim) { - list.add(sb.toString().trim()); + String str = sb.toString(); + list.add(str.trim()); } else { list.add(sb.toString()); } sb.delete(0, sb.length()); expecting = CHAR | DELIMITER | STARTQUOTE; - } else if ((c == '"') && (expecting & STARTQUOTE) > 0) { + } else if ((c == '"') && ((expecting & STARTQUOTE) != 0)) { sb.append(c); expecting = CHAR | ENDQUOTE; - } else if ((c == '"') && (expecting & ENDQUOTE) > 0) { + } else if ((c == '"') && ((expecting & ENDQUOTE) != 0)) { sb.append(c); expecting = CHAR | STARTQUOTE | DELIMITER; - } else if ((expecting & CHAR) > 0) { + } else if ((expecting & CHAR) != 0) { sb.append(c); } else { throw new IllegalArgumentException("Invalid delimited string: " + value); @@ -185,7 +182,8 @@ public class GitPgmCommand extends AbstractLoggingBean implements Command, Runna if (sb.length() > 0) { if (trim) { - list.add(sb.toString().trim()); + String str = sb.toString(); + list.add(str.trim()); } else { list.add(sb.toString()); }
