diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-02-01 16:48:36 +0100 |
---|---|---|
committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-02-01 16:48:36 +0100 |
commit | 8d450ef81aed60d54630446f601834b247942647 (patch) | |
tree | 5de4716591c5b4047d07788162d781bf77485eca /tests/client | |
parent | c433ac02bdfb5ec8d9a16074794be587cced59c1 (diff) | |
download | libssh-8d450ef81aed60d54630446f601834b247942647.tar.gz libssh-8d450ef81aed60d54630446f601834b247942647.tar.xz libssh-8d450ef81aed60d54630446f601834b247942647.zip |
knownhosts: add test case for bug #138
Diffstat (limited to 'tests/client')
-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 69f0d7dc..e8100719 100644 --- a/tests/client/torture_knownhosts.c +++ b/tests/client/torture_knownhosts.c @@ -162,6 +162,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; @@ -244,6 +286,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) }; |