diff options
author | jvijtiuk <juraj.vijtiuk@sartura.hr> | 2018-02-12 18:01:48 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-02-12 20:05:49 +0100 |
commit | 963111b836af9a89c4156e92ab3ef5c03b346d87 (patch) | |
tree | 72164d09557448703d337f9ccb5b830d594435a8 | |
parent | ebcff9fd630f8bd26b0cda23e39c63805f2b781b (diff) | |
download | libssh-963111b836af9a89c4156e92ab3ef5c03b346d87.tar.gz libssh-963111b836af9a89c4156e92ab3ef5c03b346d87.tar.xz libssh-963111b836af9a89c4156e92ab3ef5c03b346d87.zip |
tests: Fix segfault with mbedTLS built without threading support
torture_rand and torture_server_x11 call ssh_init without checking
the return value. If mbedTLS is built without threading support
ssh_init fails but the tests continue and then segfault since threading
wasn't correctly initialised.
Add a section that documents requirements for mbedTLS usage in a
multi threaded environment to README.mbedtls.
Signed-off-by: Juraj Vijtiuk <juraj.vijtiuk@sartura.hr>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r-- | README.mbedtls | 16 | ||||
-rw-r--r-- | tests/unittests/torture_rand.c | 6 | ||||
-rw-r--r-- | tests/unittests/torture_server_x11.c | 6 |
3 files changed, 26 insertions, 2 deletions
diff --git a/README.mbedtls b/README.mbedtls index 5411f301..dd1f505d 100644 --- a/README.mbedtls +++ b/README.mbedtls @@ -1,3 +1,6 @@ +libssh mbedTLS ECDSA support +============================= + When built with mbedTLS, libssh currently does not support ECDSA key comparison. Since the comparison function is used during the verification of publickey authentication requests a libssh server will not be able to deal with ECDSA @@ -5,3 +8,16 @@ keys. In general, if the ssh_key_cmp function is used with mbedTLS, ECDSA key comparison won't work. + + +mbedTLS and libssh in multithreaded applications +================================================== + +To use libssh with mbedTLS in a multithreaded application, mbedTLS has to be +built with threading support enabled. + +If threading support is not available and multi threading is used, ssh_init +will fail. + +More information about building mbedTLS with threading support can be found +in the mbedTLS documentation. diff --git a/tests/unittests/torture_rand.c b/tests/unittests/torture_rand.c index 46815c48..6e666dfb 100644 --- a/tests/unittests/torture_rand.c +++ b/tests/unittests/torture_rand.c @@ -17,9 +17,13 @@ static int setup(void **state) { (void) state; + int rc; ssh_threads_set_callbacks(ssh_threads_get_pthread()); - ssh_init(); + rc = ssh_init(); + if (rc != SSH_OK) { + return -1; + } return 0; } diff --git a/tests/unittests/torture_server_x11.c b/tests/unittests/torture_server_x11.c index b12be556..4395dbf1 100644 --- a/tests/unittests/torture_server_x11.c +++ b/tests/unittests/torture_server_x11.c @@ -21,9 +21,13 @@ struct hostkey_state { static int setup(void **state) { struct hostkey_state *h; mode_t mask; + int rc; ssh_threads_set_callbacks(ssh_threads_get_pthread()); - ssh_init(); + rc = ssh_init(); + if (rc != SSH_OK) { + return -1; + } h = malloc(sizeof(struct hostkey_state)); assert_non_null(h); |