diff --git a/src/main/java/com/hierynomus/sshj/transport/verification/KnownHostMatchers.java b/src/main/java/com/hierynomus/sshj/transport/verification/KnownHostMatchers.java index 2c52d96b1..08e5d8b78 100644 --- a/src/main/java/com/hierynomus/sshj/transport/verification/KnownHostMatchers.java +++ b/src/main/java/com/hierynomus/sshj/transport/verification/KnownHostMatchers.java @@ -135,7 +135,7 @@ private static class WildcardHostMatcher implements HostMatcher { private final Pattern pattern; public WildcardHostMatcher(String hostEntry) { - this.pattern = Pattern.compile(hostEntry.replace(".", "\\.").replace("*", ".*").replace("?", ".")); + this.pattern = Pattern.compile("^" + hostEntry.replace("[", "\\[").replace("]", "\\]").replace(".", "\\.").replace("*", ".*").replace("?", ".") + "$"); } @Override diff --git a/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java b/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java index 1c035b981..38b3c3005 100644 --- a/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java +++ b/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java @@ -360,7 +360,7 @@ private String getKeyString() { } protected String getHostPart() { - return hostPart; + return hostPart; } } diff --git a/src/test/groovy/com/hierynomus/sshj/transport/verification/KnownHostMatchersTest.groovy b/src/test/groovy/com/hierynomus/sshj/transport/verification/KnownHostMatchersTest.groovy index 715989fd5..d335c7538 100644 --- a/src/test/groovy/com/hierynomus/sshj/transport/verification/KnownHostMatchersTest.groovy +++ b/src/test/groovy/com/hierynomus/sshj/transport/verification/KnownHostMatchersTest.groovy @@ -49,6 +49,11 @@ class KnownHostMatchersSpec extends Specification { "aaa.b??.com" | "aaa.bccd.com" | false "|1|F1E1KeoE/eEWhi10WpGv4OdiO6Y=|3988QV0VE8wmZL7suNrYQLITLCg=" | "192.168.1.61" | true "|1|F1E1KeoE/eEWhi10WpGv4OdiO6Y=|3988QV0VE8wmZL7suNrYQLITLCg=" | "192.168.2.61" | false + "[aaa.bbb.com]:2222" | "aaa.bbb.com" | false + "[aaa.bbb.com]:2222" | "[aaa.bbb.com]:2222" | true + "[aaa.?bb.com]:2222" | "[aaa.dbb.com]:2222" | true + "[aaa.?xb.com]:2222" | "[aaa.dbb.com]:2222" | false + "[*.bbb.com]:2222" | "[aaa.bbb.com]:2222" | true yesno = match ? "" : "no" } }