diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-02-01 16:48:36 +0100 |
---|---|---|
committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-02-04 16:01:37 +0100 |
commit | ce39d2fa73b72ce16a75ff2c17fe640e8da2ffb2 (patch) | |
tree | 67a9f6d7dceb6043c0f6cc44b69f2e4881731316 | |
parent | 90d3768f0fb7f89c5b114e5e996edc6deb9123b8 (diff) | |
download | libssh-ce39d2fa73b72ce16a75ff2c17fe640e8da2ffb2.tar.gz libssh-ce39d2fa73b72ce16a75ff2c17fe640e8da2ffb2.tar.xz libssh-ce39d2fa73b72ce16a75ff2c17fe640e8da2ffb2.zip |
knownhosts: add test case for bug #138
-rw-r--r-- | tests/client/torture_knownhosts.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/client/torture_knownhosts.c b/tests/client/torture_knownhosts.c index a0cd3ab6..4555b741 100644 --- a/tests/client/torture_knownhosts.c +++ b/tests/client/torture_knownhosts.c @@ -145,6 +145,48 @@ static void torture_knownhosts_other(void **state) { assert_true(rc == SSH_SERVER_FOUND_OTHER); } +static void torture_knownhosts_other_auto(void **state) { + ssh_session session = *state; + int rc; + + rc = ssh_options_set(session, SSH_OPTIONS_HOST, "localhost"); + assert_true(rc == SSH_OK); + + rc = ssh_options_set(session, SSH_OPTIONS_KNOWNHOSTS, KNOWNHOSTFILES); + assert_true(rc == SSH_OK); + + rc = ssh_options_set(session, SSH_OPTIONS_HOSTKEYS, "ssh-dss"); + assert_true(rc == SSH_OK); + + rc = ssh_connect(session); + assert_true(rc==SSH_OK); + + rc = ssh_is_server_known(session); + assert_true(rc == SSH_SERVER_NOT_KNOWN); + + rc = ssh_write_knownhost(session); + assert_true(rc == SSH_OK); + + ssh_disconnect(session); + ssh_free(session); + + /* connect again and check host key */ + *state = session = ssh_new(); + + rc = ssh_options_set(session, SSH_OPTIONS_HOST, "localhost"); + assert_true(rc == SSH_OK); + + rc = ssh_options_set(session, SSH_OPTIONS_KNOWNHOSTS, KNOWNHOSTFILES); + assert_true(rc == SSH_OK); + + rc = ssh_connect(session); + assert_true(rc==SSH_OK); + + /* ssh-rsa is the default but libssh should try ssh-dss instead */ + rc = ssh_is_server_known(session); + assert_true(rc == SSH_SERVER_KNOWN_OK); +} + static void torture_knownhosts_conflict(void **state) { ssh_session session = *state; FILE *file; @@ -227,6 +269,7 @@ int torture_run_tests(void) { unit_test_setup_teardown(torture_knownhosts_port, setup, teardown), unit_test_setup_teardown(torture_knownhosts_fail, setup, teardown), unit_test_setup_teardown(torture_knownhosts_other, setup, teardown), + unit_test_setup_teardown(torture_knownhosts_other_auto, setup, teardown), unit_test_setup_teardown(torture_knownhosts_conflict, setup, teardown), unit_test_setup_teardown(torture_knownhosts_precheck, setup, teardown) }; |