summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2012-04-18 09:04:54 +0200
committerOndřej Surý <ondrej@sury.org>2012-04-18 09:04:54 +0200
commit34bb053aebd84a0c341bf5241e0cd70e28129e88 (patch)
treeb9bcc0002c5dcb66470e12bc5b92e2c4a29651bc /src/common
parentc5e123fb66dfd412a0d89293f893871f9a2e7d12 (diff)
downloadknot-34bb053aebd84a0c341bf5241e0cd70e28129e88.tar.gz
Imported Upstream version 1.0.3upstream/1.0.3
Diffstat (limited to 'src/common')
-rw-r--r--src/common/acl.c1
-rw-r--r--src/common/fdset_epoll.c6
-rw-r--r--src/common/fdset_kqueue.c2
3 files changed, 5 insertions, 4 deletions
diff --git a/src/common/acl.c b/src/common/acl.c
index a3cabd4..c8e0488 100644
--- a/src/common/acl.c
+++ b/src/common/acl.c
@@ -17,6 +17,7 @@
#include <string.h>
#include <stdlib.h>
#include <assert.h>
+#include <sys/socket.h>
#include "common/acl.h"
diff --git a/src/common/fdset_epoll.c b/src/common/fdset_epoll.c
index f6f42f0..d4481b5 100644
--- a/src/common/fdset_epoll.c
+++ b/src/common/fdset_epoll.c
@@ -108,8 +108,8 @@ int fdset_epoll_remove(fdset_t *fdset, int fd)
--fdset->nfds;
/* Trim excessive memory if possible (retval is not interesting). */
- mreserve((char **)&fdset->events, sizeof(struct epoll_event), fdset->nfds,
- OS_FDS_CHUNKSIZE, &fdset->reserved);
+ mreserve((char **)&fdset->events, sizeof(struct epoll_event),
+ fdset->nfds + 1, OS_FDS_CHUNKSIZE, &fdset->reserved);
return 0;
}
@@ -173,7 +173,7 @@ int fdset_epoll_next(fdset_t *fdset, fdset_it_t *it)
}
/* Check boundaries. */
- if (it->pos >= fdset->polled) {
+ if (it->pos >= fdset->polled || it->pos >= fdset->nfds) {
return -1;
}
diff --git a/src/common/fdset_kqueue.c b/src/common/fdset_kqueue.c
index 2c7dd52..108c572 100644
--- a/src/common/fdset_kqueue.c
+++ b/src/common/fdset_kqueue.c
@@ -226,7 +226,7 @@ int fdset_kqueue_next(fdset_t *fdset, fdset_it_t *it)
}
/* Check boundaries. */
- if (it->pos >= fdset->polled) {
+ if (it->pos >= fdset->polled || it->pos >= fdset->nfds) {
return -1;
}