diff options
author | louiz’ <louiz@louiz.org> | 2017-05-09 15:46:20 +0200 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2017-05-09 15:46:20 +0200 |
commit | f7e4adb10bff1c278a8543b230b10881ff3799fa (patch) | |
tree | 3b78a631533ad71b2c76f33081bad98fccc79753 /src/network/poller.cpp | |
parent | c046d2ea984a3a5e4069604dc4f61c2f9e60ca44 (diff) | |
download | biboumi-f7e4adb10bff1c278a8543b230b10881ff3799fa.tar.gz biboumi-f7e4adb10bff1c278a8543b230b10881ff3799fa.tar.bz2 biboumi-f7e4adb10bff1c278a8543b230b10881ff3799fa.tar.xz biboumi-f7e4adb10bff1c278a8543b230b10881ff3799fa.zip |
Avoid any potential int overflow
Diffstat (limited to 'src/network/poller.cpp')
-rw-r--r-- | src/network/poller.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/network/poller.cpp b/src/network/poller.cpp index ca49180..0f02cc5 100644 --- a/src/network/poller.cpp +++ b/src/network/poller.cpp @@ -200,7 +200,11 @@ int Poller::poll(const std::chrono::milliseconds& timeout) // Unblock all signals, only during the epoll_pwait call sigset_t empty_signal_set{}; sigemptyset(&empty_signal_set); - const int nb_events = ::epoll_pwait(this->epfd, revents, max_events, timeout.count(), + + int real_timeout = std::numeric_limits<int>::max(); + if (timeout.count() < real_timeout) // Just avoid any potential int overflow + real_timeout = static_cast<int>(timeout.count()); + const int nb_events = ::epoll_pwait(this->epfd, revents, max_events, real_timeout, &empty_signal_set); if (nb_events == -1) { |