diff options
author | Michael Wallner <mike@php.net> | 2013-10-25 09:42:54 +0200 |
---|---|---|
committer | Michael Wallner <mike@php.net> | 2013-10-28 07:37:47 +0100 |
commit | 8962f3ff0c76c5710f5e14d6f342f44498ff882b (patch) | |
tree | f8cd1ca0143545b4120e3ca07552667db4bd011c | |
parent | d1727d8401238cb816a9b900efaf221a33a8e764 (diff) | |
download | php-git-8962f3ff0c76c5710f5e14d6f342f44498ff882b.tar.gz |
fix limitation of upload size == (U)INT_MAX in CGI
-rw-r--r-- | sapi/cgi/cgi_main.c | 5 | ||||
-rw-r--r-- | sapi/fpm/fpm/fpm_main.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index 221b002175..43816d4d13 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -524,8 +524,11 @@ static int sapi_fcgi_read_post(char *buffer, uint count_bytes TSRMLS_DC) uint read_bytes = 0; int tmp_read_bytes; fcgi_request *request = (fcgi_request*) SG(server_context); + size_t remaining = SG(request_info).content_length - SG(read_post_bytes); - count_bytes = MIN(count_bytes, (uint) SG(request_info).content_length - SG(read_post_bytes)); + if (remaining < count_bytes) { + count_bytes = remaining; + } while (read_bytes < count_bytes) { tmp_read_bytes = fcgi_read(request, buffer + read_bytes, count_bytes - read_bytes); if (tmp_read_bytes <= 0) { diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c index 4b20e632dd..91abfea959 100644 --- a/sapi/fpm/fpm/fpm_main.c +++ b/sapi/fpm/fpm/fpm_main.c @@ -498,8 +498,11 @@ static int sapi_cgi_read_post(char *buffer, uint count_bytes TSRMLS_DC) { uint read_bytes = 0; int tmp_read_bytes; + size_t remaining = SG(request_info).content_length - SG(read_post_bytes); - count_bytes = MIN(count_bytes, (uint) SG(request_info).content_length - SG(read_post_bytes)); + if (remaining < count_bytes) { + count_bytes = remaining; + } while (read_bytes < count_bytes) { fcgi_request *request = (fcgi_request*) SG(server_context); if (request_body_fd == -1) { |