diff options
Diffstat (limited to 'libssh/dh.c')
-rw-r--r-- | libssh/dh.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/libssh/dh.c b/libssh/dh.c index 439d198..f968421 100644 --- a/libssh/dh.c +++ b/libssh/dh.c @@ -234,18 +234,26 @@ int dh_generate_x(SSH_SESSION *session) { } /* used by server */ -void dh_generate_y(SSH_SESSION *session){ - session->next_crypto->y=bignum_new(); +int dh_generate_y(SSH_SESSION *session) { + session->next_crypto->y = bignum_new(); + if (session->next_crypto->y == NULL) { + return -1; + } + #ifdef HAVE_LIBGCRYPT - bignum_rand(session->next_crypto->y,128); + bignum_rand(session->next_crypto->y, 128); #elif defined HAVE_LIBCRYPTO - bignum_rand(session->next_crypto->y,128,0,-1); + bignum_rand(session->next_crypto->y, 128, 0, -1); #endif - /* not harder than this */ + + /* not harder than this */ #ifdef DEBUG_CRYPTO - ssh_print_bignum("y",session->next_crypto->y); + ssh_print_bignum("y", session->next_crypto->y); #endif + + return 0; } + /* used by server */ void dh_generate_e(SSH_SESSION *session){ #ifdef HAVE_LIBCRYPTO |