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}) ${SFTP_BENCHMARK_TESTS})
endif (WITH_SFTP) 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}) foreach(_CLI_TEST ${LIBSSH_CLIENT_TESTS})
add_cmocka_test(${_CLI_TEST} add_cmocka_test(${_CLI_TEST}
SOURCES ${_CLI_TEST}.c SOURCES ${_CLI_TEST}.c
@ -73,6 +76,6 @@ foreach(_CLI_TEST ${LIBSSH_CLIENT_TESTS})
TEST TEST
${_CLI_TEST} ${_CLI_TEST}
PROPERTY PROPERTY
ENVIRONMENT ${TORTURE_ENVIRONMENT}) ENVIRONMENT ${TORTURE_CLIENT_ENVIRONMENT})
endif() endif()
endforeach() endforeach()

View File

@ -120,6 +120,29 @@ static void torture_connect_nonblocking(void **state) {
assert_ssh_return_code(session, rc); 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 */ #if 0 /* This does not work with socket_wrapper */
static void torture_connect_timeout(void **state) { static void torture_connect_timeout(void **state) {
struct torture_state *s = *state; struct torture_state *s = *state;
@ -240,6 +263,7 @@ int torture_run_tests(void) {
struct CMUnitTest tests[] = { struct CMUnitTest tests[] = {
cmocka_unit_test_setup_teardown(torture_connect_peer_discon_msg, session_setup, session_teardown), 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_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_double, session_setup, session_teardown),
cmocka_unit_test_setup_teardown(torture_connect_failure, session_setup, session_teardown), cmocka_unit_test_setup_teardown(torture_connect_failure, session_setup, session_teardown),
#if 0 #if 0

View File

@ -1,2 +1,5 @@
127.0.0.10 server.libssh.site 127.0.0.10 server.libssh.site
127.0.0.21 client.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[]= const char config_string[]=
"Port 22\n" "Port 22\n"
"ListenAddress 127.0.0.10\n" "ListenAddress 127.0.0.10\n"
"ListenAddress fd00::5357:5f0a\n"
"%s %s\n" /* ed25519 HostKey */ "%s %s\n" /* ed25519 HostKey */
"%s %s\n" /* RSA HostKey */ "%s %s\n" /* RSA HostKey */
"%s %s\n" /* ECDSA 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[]= const char fips_config_string[]=
"Port 22\n" "Port 22\n"
"ListenAddress 127.0.0.10\n" "ListenAddress 127.0.0.10\n"
"ListenAddress fd00::5357:5f0a\n"
"%s %s\n" /* RSA HostKey */ "%s %s\n" /* RSA HostKey */
"%s %s\n" /* ECDSA HostKey */ "%s %s\n" /* ECDSA HostKey */
"\n" "\n"

View File

@ -46,6 +46,7 @@
#endif /* assert_return_code */ #endif /* assert_return_code */
#define TORTURE_SSH_SERVER "127.0.0.10" #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 "bob"
#define TORTURE_SSH_USER_BOB_PASSWORD "secret" #define TORTURE_SSH_USER_BOB_PASSWORD "secret"