From 76df0459503de64fe5fabb916420faeed2ca667c Mon Sep 17 00:00:00 2001 From: Pieter Hintjens Date: Fri, 28 Jun 2013 12:04:01 +0200 Subject: [PATCH] Return EINVAL when trying to use CURVE without libsodium --- src/options.cpp | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/src/options.cpp b/src/options.cpp index 5f76d426..c717c253 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -284,12 +284,10 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, return 0; } break; - + +// If libsodium isn't installed, these options provoke EINVAL +# ifdef HAVE_LIBSODIUM case ZMQ_CURVE_SERVER: -# ifndef HAVE_LIBSODIUM - puts ("E: libzmq was not built using libsodium, CURVE not available"); - assert (false); -# endif if (is_int && (value == 0 || value == 1)) { as_server = value; mechanism = value? ZMQ_CURVE: ZMQ_NULL; @@ -298,10 +296,6 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, break; case ZMQ_CURVE_PUBLICKEY: -# ifndef HAVE_LIBSODIUM - puts ("E: libzmq was not built using libsodium, CURVE not available"); - assert (false); -# endif if (optvallen_ == CURVE_KEYSIZE) { memcpy (curve_public_key, optval_, CURVE_KEYSIZE); mechanism = ZMQ_CURVE; @@ -310,10 +304,6 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, break; case ZMQ_CURVE_SECRETKEY: -# ifndef HAVE_LIBSODIUM - puts ("E: libzmq was not built using libsodium, CURVE not available"); - assert (false); -# endif if (optvallen_ == CURVE_KEYSIZE) { memcpy (curve_secret_key, optval_, CURVE_KEYSIZE); mechanism = ZMQ_CURVE; @@ -322,10 +312,6 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, break; case ZMQ_CURVE_SERVERKEY: -# ifndef HAVE_LIBSODIUM - puts ("E: libzmq was not built using libsodium, CURVE not available"); - assert (false); -# endif if (optvallen_ == CURVE_KEYSIZE) { memcpy (curve_server_key, optval_, CURVE_KEYSIZE); as_server = 0; @@ -333,9 +319,7 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, return 0; } break; - - default: - break; +# endif } errno = EINVAL; return -1; @@ -555,6 +539,8 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_) } break; +// If libsodium isn't installed, these options provoke EINVAL +# ifdef HAVE_LIBSODIUM case ZMQ_CURVE_SERVER: if (is_int) { *value = as_server && mechanism == ZMQ_CURVE; @@ -582,6 +568,7 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_) return 0; } break; +# endif } errno = EINVAL; return -1;