1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-07-31 00:03:07 +03:00

torture_connect: Test bad IPv6 connection trying IPv4

If IPv6 address fail to connect IPv4 should be tried in non-blocking mode.

Signed-off-by: Norbert Pocs <npocs@redhat.com>
Reviewed-by: Jakub Jelen <jjelen@redhat.com>
This commit is contained in:
Norbert Pocs
2023-04-19 13:50:20 +02:00
parent 3951bbabd5
commit c4a00ee430
5 changed files with 34 additions and 1 deletions

View File

@ -55,6 +55,9 @@ if (WITH_SFTP)
${SFTP_BENCHMARK_TESTS})
endif (WITH_SFTP)
set(TORTURE_CLIENT_ENVIRONMENT ${TORTURE_ENVIRONMENT})
list(APPEND TORTURE_CLIENT_ENVIRONMENT NSS_WRAPPER_HOSTS=${CMAKE_BINARY_DIR}/tests/etc/hosts)
foreach(_CLI_TEST ${LIBSSH_CLIENT_TESTS})
add_cmocka_test(${_CLI_TEST}
SOURCES ${_CLI_TEST}.c
@ -73,6 +76,6 @@ foreach(_CLI_TEST ${LIBSSH_CLIENT_TESTS})
TEST
${_CLI_TEST}
PROPERTY
ENVIRONMENT ${TORTURE_ENVIRONMENT})
ENVIRONMENT ${TORTURE_CLIENT_ENVIRONMENT})
endif()
endforeach()

View File

@ -120,6 +120,29 @@ static void torture_connect_nonblocking(void **state) {
assert_ssh_return_code(session, rc);
}
static void torture_connect_ipv6(void **state) {
struct torture_state *s = *state;
ssh_session session = s->ssh.session;
int rc;
rc = ssh_options_set(session, SSH_OPTIONS_HOST, "testing");
assert_ssh_return_code(session, rc);
/* set non-blocking mode */
ssh_set_blocking(session, 0);
do {
rc = ssh_connect(session);
} while (rc == SSH_AGAIN);
assert_ssh_return_code(session, rc);
/* should work for blocking mode too */
ssh_disconnect(session);
ssh_set_blocking(session, 1);
rc = ssh_connect(session);
assert_ssh_return_code(session, rc);
}
#if 0 /* This does not work with socket_wrapper */
static void torture_connect_timeout(void **state) {
struct torture_state *s = *state;
@ -240,6 +263,7 @@ int torture_run_tests(void) {
struct CMUnitTest tests[] = {
cmocka_unit_test_setup_teardown(torture_connect_peer_discon_msg, session_setup, session_teardown),
cmocka_unit_test_setup_teardown(torture_connect_nonblocking, session_setup, session_teardown),
cmocka_unit_test_setup_teardown(torture_connect_ipv6, session_setup, session_teardown),
cmocka_unit_test_setup_teardown(torture_connect_double, session_setup, session_teardown),
cmocka_unit_test_setup_teardown(torture_connect_failure, session_setup, session_teardown),
#if 0

View File

@ -1,2 +1,5 @@
127.0.0.10 server.libssh.site
127.0.0.21 client.libssh.site
123.0.0.11 testing
fd00::5357:5f0a testing

View File

@ -730,6 +730,7 @@ static void torture_setup_create_sshd_config(void **state, bool pam)
const char config_string[]=
"Port 22\n"
"ListenAddress 127.0.0.10\n"
"ListenAddress fd00::5357:5f0a\n"
"%s %s\n" /* ed25519 HostKey */
"%s %s\n" /* RSA HostKey */
"%s %s\n" /* ECDSA HostKey */
@ -765,6 +766,7 @@ static void torture_setup_create_sshd_config(void **state, bool pam)
const char fips_config_string[]=
"Port 22\n"
"ListenAddress 127.0.0.10\n"
"ListenAddress fd00::5357:5f0a\n"
"%s %s\n" /* RSA HostKey */
"%s %s\n" /* ECDSA HostKey */
"\n"

View File

@ -46,6 +46,7 @@
#endif /* assert_return_code */
#define TORTURE_SSH_SERVER "127.0.0.10"
#define TORTURE_SSH_SERVER_IP6 "fd00::5357:5f0a"
#define TORTURE_SSH_USER_BOB "bob"
#define TORTURE_SSH_USER_BOB_PASSWORD "secret"