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 aaeb5aa4..1ade6d86 100644 --- a/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java +++ b/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java @@ -200,7 +200,10 @@ public class OpenSSHKnownHosts if (marker != null) { i++; } - + if(split.length < 3) { + LOG.error("Error reading entry `{}`", line); + return null; + } final String hostnames = split[i++]; final String sType = split[i++]; diff --git a/src/test/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHostsTest.java b/src/test/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHostsTest.java index 02e9f585..8edfaee7 100644 --- a/src/test/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHostsTest.java +++ b/src/test/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHostsTest.java @@ -80,4 +80,9 @@ public class OpenSSHKnownHostsTest { assertTrue(kh.verify("69.163.155.180", 22, key)); } + @Test + public void testVerifyIndexError() throws Exception { + final OpenSSHKnownHosts v = new OpenSSHKnownHosts(new File("src/test/resources/known_hosts.invalid")); + assertTrue(v.entries().isEmpty()); + } } diff --git a/src/test/resources/known_hosts.invalid b/src/test/resources/known_hosts.invalid new file mode 100644 index 00000000..edd846e6 --- /dev/null +++ b/src/test/resources/known_hosts.invalid @@ -0,0 +1 @@ +M36Lo+Ik5ukNugvvoNFlpnyiHMmtKxt3FpyEfYuryXjNqMNWHn/ARVnpUIl5jRLTB7WBzyLYMG7X5nuoFL9zYqKGtHxChbDunxMVbspw5WXI9VN+qxcLwmITmpEvI9ApyS/Ox2ZyN7zw==