Problem: return code of sodium_init() is not checked.

There are two todo comments in curve_client.cpp and curve_server.cpp that suggest
checking the return code of sodium_init() call. sodium_init() returns -1 on error,
0 on success and 1 if it has been called before and is already initalized:
https://github.com/jedisct1/libsodium/blob/master/src/libsodium/sodium/core.c
This commit is contained in:
Constantin Rack 2014-11-08 10:50:17 +01:00 committed by Bohdan Kmit
parent 2aa08155f4
commit 89d4e995ef
2 changed files with 8 additions and 6 deletions

View File

@ -48,6 +48,7 @@ zmq::curve_client_t::curve_client_t (const options_t &options_) :
cn_peer_nonce(1), cn_peer_nonce(1),
sync() sync()
{ {
int rc;
memcpy (public_key, options_.curve_public_key, crypto_box_PUBLICKEYBYTES); memcpy (public_key, options_.curve_public_key, crypto_box_PUBLICKEYBYTES);
memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES); memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES);
memcpy (server_key, options_.curve_server_key, crypto_box_PUBLICKEYBYTES); memcpy (server_key, options_.curve_server_key, crypto_box_PUBLICKEYBYTES);
@ -57,12 +58,12 @@ zmq::curve_client_t::curve_client_t (const options_t &options_) :
unsigned char tmpbytes[4]; unsigned char tmpbytes[4];
randombytes(tmpbytes, 4); randombytes(tmpbytes, 4);
#else #else
// todo check return code rc = sodium_init ();
sodium_init(); zmq_assert (rc != -1);
#endif #endif
// Generate short-term key pair // Generate short-term key pair
const int rc = crypto_box_keypair (cn_public, cn_secret); rc = crypto_box_keypair (cn_public, cn_secret);
zmq_assert (rc == 0); zmq_assert (rc == 0);
} }

View File

@ -52,6 +52,7 @@ zmq::curve_server_t::curve_server_t (session_base_t *session_,
cn_peer_nonce(1), cn_peer_nonce(1),
sync() sync()
{ {
int rc;
// Fetch our secret key from socket options // Fetch our secret key from socket options
memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES); memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES);
scoped_lock_t lock (sync); scoped_lock_t lock (sync);
@ -60,12 +61,12 @@ zmq::curve_server_t::curve_server_t (session_base_t *session_,
unsigned char tmpbytes[4]; unsigned char tmpbytes[4];
randombytes(tmpbytes, 4); randombytes(tmpbytes, 4);
#else #else
// todo check return code rc = sodium_init ();
sodium_init(); zmq_assert (rc != -1);
#endif #endif
// Generate short-term key pair // Generate short-term key pair
const int rc = crypto_box_keypair (cn_public, cn_secret); rc = crypto_box_keypair (cn_public, cn_secret);
zmq_assert (rc == 0); zmq_assert (rc == 0);
} }