summary refs log tree commit diff
path: root/pkgs/development/libraries/zeromq
diff options
context:
space:
mode:
authorDomen Kožar <domen@dev.si>2015-11-07 18:13:45 +0100
committerDomen Kožar <domen@dev.si>2015-11-07 18:13:50 +0100
commit310b7e24d24ae9eeb1c86ec8f026e1c2919195c9 (patch)
tree3e9570875747520730d96524156c55cb61cc52bc /pkgs/development/libraries/zeromq
parentc35e349409cb1e790b507542e7103da26287ac5f (diff)
downloadnixpkgs-310b7e24d24ae9eeb1c86ec8f026e1c2919195c9.tar
nixpkgs-310b7e24d24ae9eeb1c86ec8f026e1c2919195c9.tar.gz
nixpkgs-310b7e24d24ae9eeb1c86ec8f026e1c2919195c9.tar.bz2
nixpkgs-310b7e24d24ae9eeb1c86ec8f026e1c2919195c9.tar.lz
nixpkgs-310b7e24d24ae9eeb1c86ec8f026e1c2919195c9.tar.xz
nixpkgs-310b7e24d24ae9eeb1c86ec8f026e1c2919195c9.tar.zst
nixpkgs-310b7e24d24ae9eeb1c86ec8f026e1c2919195c9.zip
zeromq: add patch to fix build
Diffstat (limited to 'pkgs/development/libraries/zeromq')
-rw-r--r--pkgs/development/libraries/zeromq/4.x.nix3
-rw-r--r--pkgs/development/libraries/zeromq/sodium_warning.patch70
2 files changed, 73 insertions, 0 deletions
diff --git a/pkgs/development/libraries/zeromq/4.x.nix b/pkgs/development/libraries/zeromq/4.x.nix
index de91ac50428..4cac67a2da8 100644
--- a/pkgs/development/libraries/zeromq/4.x.nix
+++ b/pkgs/development/libraries/zeromq/4.x.nix
@@ -11,6 +11,9 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ libuuid libsodium ];
 
+  # https://github.com/zeromq/libzmq/commit/479db2113643e459c11db392e0fefd6400657c9e
+  patches = [ ./sodium_warning.patch ];
+
   meta = with stdenv.lib; {
     branch = "4";
     homepage = "http://www.zeromq.org";
diff --git a/pkgs/development/libraries/zeromq/sodium_warning.patch b/pkgs/development/libraries/zeromq/sodium_warning.patch
new file mode 100644
index 00000000000..4b84fd7edf4
--- /dev/null
+++ b/pkgs/development/libraries/zeromq/sodium_warning.patch
@@ -0,0 +1,70 @@
+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
+---
+ src/curve_client.cpp | 7 ++++---
+ src/curve_server.cpp | 7 ++++---
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+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);
+ }
+