summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Lucina <mato@kotelna.sk>2010-09-04 16:12:33 +0200
committerMartin Lucina <mato@kotelna.sk>2010-09-04 16:12:33 +0200
commit51a84c15ded2d70985c9d971ebdf3f3c9c18d590 (patch)
treec904be1060873bb87bbbcd6f82057327aa3b6831
parentf850190c16df0d55015dc15cd5c0c50289db5dda (diff)
zmq::select_t, zmq_poll(): assert if FD_SETSIZE reached
Ensure that 0MQ does not attempt to call select() on more than FD_SETSIZE file descriptors.
-rw-r--r--src/select.cpp4
-rw-r--r--src/zmq.cpp4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/select.cpp b/src/select.cpp
index 7345cbb..59eb83e 100644
--- a/src/select.cpp
+++ b/src/select.cpp
@@ -65,6 +65,10 @@ zmq::select_t::handle_t zmq::select_t::add_fd (fd_t fd_, i_poll_events *events_)
fd_entry_t entry = {fd_, events_};
fds.push_back (entry);
+ // Ensure we do not attempt to select () on more than FD_SETSIZE
+ // file descriptors.
+ zmq_assert (fds.size () <= FD_SETSIZE);
+
// Start polling on errors.
FD_SET (fd_, &source_set_err);
diff --git a/src/zmq.cpp b/src/zmq.cpp
index 342a8a6..8b21d4b 100644
--- a/src/zmq.cpp
+++ b/src/zmq.cpp
@@ -530,6 +530,10 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_)
zmq::fd_t maxfd = zmq::retired_fd;
zmq::fd_t notify_fd = zmq::retired_fd;
+ // Ensure we do not attempt to select () on more than FD_SETSIZE
+ // file descriptors.
+ zmq_assert (nitems_ <= FD_SETSIZE);
+
for (int i = 0; i != nitems_; i++) {
// 0MQ sockets.