diff options
author | Julio Pintos <julio.pintos@avature.net> | 2014-03-14 16:47:30 -0300 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2014-04-20 16:21:49 -0700 |
commit | 49341e992ad7f8eb7f94d4c946fb74f8e33e7e75 (patch) | |
tree | 8515dc3b25612654f86dd997d32d954fbd7c09a9 | |
parent | a18cec1b865994735e5b4ab757ccc1a14f8607ff (diff) | |
download | php-git-49341e992ad7f8eb7f94d4c946fb74f8e33e7e75.tar.gz |
Fix #66908: php-fpm reload leaks epoll_create() file descriptor
This patch fixes descriptor leak which could lead to DoS once Max open files is reached
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | sapi/fpm/fpm/events/epoll.c | 6 |
2 files changed, 9 insertions, 1 deletions
@@ -11,6 +11,10 @@ PHP NEWS . Fixed bug #67081 (DOMDocumentType->internalSubset returns entire DOCTYPE tag, not only the subset). (Anatol) +- FPM: + . Fixed bug #66908 (php-fpm reload leaks epoll_create() file descriptor). + (Julio Pintos) + ?? ??? 2014, PHP 5.4.28 - Core: diff --git a/sapi/fpm/fpm/events/epoll.c b/sapi/fpm/fpm/events/epoll.c index 2857ea2a09..b55cb44b15 100644 --- a/sapi/fpm/fpm/events/epoll.c +++ b/sapi/fpm/fpm/events/epoll.c @@ -46,7 +46,7 @@ static struct fpm_event_module_s epoll_module = { static struct epoll_event *epollfds = NULL; static int nepollfds = 0; -static int epollfd = 0; +static int epollfd = -1; #endif /* HAVE_EPOLL */ @@ -103,6 +103,10 @@ static int fpm_event_epoll_clean() /* {{{ */ free(epollfds); epollfds = NULL; } + if (epollfd != -1) { + close(epollfd); + epollfd = -1; + } nepollfds = 0; |