74 lines
2.4 KiB
Diff
74 lines
2.4 KiB
Diff
|
From 479db2113643e459c11db392e0fefd6400657c9e Mon Sep 17 00:00:00 2001
|
||
|
From: Constantin Rack <constantin@rack.li>
|
||
|
Date: Sat, 8 Nov 2014 10:50:17 +0100
|
||
|
Subject: [PATCH] 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
|
||
|
|
||
|
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||
|
---
|
||
|
Status: Upstream
|
||
|
|
||
|
diff --git a/src/curve_client.cpp b/src/curve_client.cpp
|
||
|
index 6019c54..77fc420 100644
|
||
|
--- a/src/curve_client.cpp
|
||
|
+++ b/src/curve_client.cpp
|
||
|
@@ -38,6 +38,7 @@ zmq::curve_client_t::curve_client_t (const options_t &options_) :
|
||
|
cn_peer_nonce(1),
|
||
|
sync()
|
||
|
{
|
||
|
+ int rc;
|
||
|
memcpy (public_key, options_.curve_public_key, crypto_box_PUBLICKEYBYTES);
|
||
|
memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES);
|
||
|
memcpy (server_key, options_.curve_server_key, crypto_box_PUBLICKEYBYTES);
|
||
|
@@ -47,12 +48,12 @@ zmq::curve_client_t::curve_client_t (const options_t &options_) :
|
||
|
unsigned char tmpbytes[4];
|
||
|
randombytes(tmpbytes, 4);
|
||
|
#else
|
||
|
- // todo check return code
|
||
|
- sodium_init();
|
||
|
+ rc = sodium_init ();
|
||
|
+ zmq_assert (rc != -1);
|
||
|
#endif
|
||
|
|
||
|
// 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);
|
||
|
}
|
||
|
|
||
|
diff --git a/src/curve_server.cpp b/src/curve_server.cpp
|
||
|
index a3c4243..22c32d6 100644
|
||
|
--- a/src/curve_server.cpp
|
||
|
+++ b/src/curve_server.cpp
|
||
|
@@ -42,6 +42,7 @@ zmq::curve_server_t::curve_server_t (session_base_t *session_,
|
||
|
cn_peer_nonce(1),
|
||
|
sync()
|
||
|
{
|
||
|
+ int rc;
|
||
|
// Fetch our secret key from socket options
|
||
|
memcpy (secret_key, options_.curve_secret_key, crypto_box_SECRETKEYBYTES);
|
||
|
scoped_lock_t lock (sync);
|
||
|
@@ -50,12 +51,12 @@ zmq::curve_server_t::curve_server_t (session_base_t *session_,
|
||
|
unsigned char tmpbytes[4];
|
||
|
randombytes(tmpbytes, 4);
|
||
|
#else
|
||
|
- // todo check return code
|
||
|
- sodium_init();
|
||
|
+ rc = sodium_init ();
|
||
|
+ zmq_assert (rc != -1);
|
||
|
#endif
|
||
|
|
||
|
// 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);
|
||
|
}
|
||
|
|
||
|
--
|
||
|
2.4.10
|
||
|
|