com php-src: Fixed bug #67406 built-in web-server segfaults on startup: sapi/cli/php_cli_server.c
| From: | Remi Collet | Date: | Tue, 10 Jun 2014 08:28:34 +0000 |
| Subject: | com php-src: Fixed bug #67406 built-in web-server segfaults on startup: sapi/cli/php_cli_server.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-78786@lists.php.net to get a copy of this message | ||
Commit: 58c6a08e00d4a8c99123cfb36f3a399a9b352d24
Author: Remi Collet <remi@php.net> Tue, 10 Jun 2014 10:28:34 +0200
Parents: 62857998c5f69aee1249db870b0fb08af9012fb9
Branches: PHP-5.4 PHP-5.5 PHP-5.6 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=58c6a08e00d4a8c99123cfb36f3a399a9b352d24
Log:
Fixed bug #67406 built-in web-server segfaults on startup
Reproduce on aarch64.
From select man page:
"select() may update the timeout argument to indicate how much time was left."
So "const" is not ok.
Bugs:
https://bugs..php.net/67406
Changed paths:
M sapi/cli/php_cli_server.c
Diff:
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server..c
index e838d30..3fd24ea 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -768,11 +768,11 @@ static void php_cli_server_poller_remove(php_cli_server_poller *poller, int
mode
#endif
} /* }}} */
-static int php_cli_server_poller_poll(php_cli_server_poller *poller, const struct timeval *tv) /*
{{{ */
+static int php_cli_server_poller_poll(php_cli_server_poller *poller, struct timeval *tv) /* {{{ */
{
memmove(&poller->active.rfds, &poller->rfds, sizeof(poller->rfds));
memmove(&poller->active.wfds, &poller->wfds, sizeof(poller->wfds));
- return php_select(poller->max_fd + 1, &poller->active.rfds, &poller->active.wfds,
NULL, (struct timeval *)tv);
+ return php_select(poller->max_fd + 1, &poller->active.rfds, &poller->active.wfds,
NULL, tv);
} /* }}} */
static int php_cli_server_poller_iter_on_active(php_cli_server_poller *poller, void *opaque,
int(*callback)(void *, int fd, int events)) /* {{{ */
@@ -2349,7 +2349,7 @@ static int php_cli_server_do_event_loop(php_cli_server *server TSRMLS_DC) /*
{{{
{
int retval = SUCCESS;
while (server->is_running) {
- static const struct timeval tv = { 1, 0 };
+ struct timeval tv = { 1, 0 };
int n = php_cli_server_poller_poll(&server->poller, &tv);
if (n > 0) {
php_cli_server_do_event_for_each_fd(server,