summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Sustrik <sustrik@250bpm.com>2012-02-16 10:28:53 +0900
committerMartin Sustrik <sustrik@250bpm.com>2012-02-16 10:28:53 +0900
commit9ba5373f788958b61588203add314b8a9a5c4618 (patch)
tree55cbc96ed12ddf1b64d9674b53b85f168a151133
parenta0d548e6cdef36a8dae6e6834252475728bf8583 (diff)
Avoid too long timeouts in xs_poll
The timeout should be int. For historical reasons, however, it is defined as long. To fix the problem the value is checked in the runtime to assure it is not larger than INT_MAX. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
-rw-r--r--src/upoll.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/upoll.cpp b/src/upoll.cpp
index c4aa0a1..592cc42 100644
--- a/src/upoll.cpp
+++ b/src/upoll.cpp
@@ -56,10 +56,12 @@
#include <unistd.h>
#endif
+#include <limits.h>
+
int xs::upoll (xs_pollitem_t *items_, int nitems_, long timeout_)
{
#if defined XS_POLL_BASED_ON_POLL
- if (unlikely (nitems_ < 0)) {
+ if (unlikely (nitems_ < 0 || timeout_ > INT_MAX)) {
errno = EINVAL;
return -1;
}