summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2020-12-23 13:52:24 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2020-12-23 13:52:45 +0100
commit7d9ddd61ecc2c99be8709cfa6b51e716343ad5da (patch)
treef8d5bcb15b3da44ac1a4061962a17b4867a0a3a0 /main
parent288332077fa22b78afda1951a357444a901a9da9 (diff)
parent70dfbe00684eb1c31d5b49f643e4736696c3b7df (diff)
downloadphp-git-7d9ddd61ecc2c99be8709cfa6b51e716343ad5da.tar.gz
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4: Fix #80384: limit read buffer size
Diffstat (limited to 'main')
-rw-r--r--main/streams/streams.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c
index 0524bd28a2..86522afa84 100644
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -540,6 +540,7 @@ PHPAPI int _php_stream_fill_read_buffer(php_stream *stream, size_t size)
/* allocate/fill the buffer */
if (stream->readfilters.head) {
+ size_t to_read_now = MIN(size, stream->chunk_size);
char *chunk_buf;
php_stream_bucket_brigade brig_in = { NULL, NULL }, brig_out = { NULL, NULL };
php_stream_bucket_brigade *brig_inp = &brig_in, *brig_outp = &brig_out, *brig_swap;
@@ -547,7 +548,7 @@ PHPAPI int _php_stream_fill_read_buffer(php_stream *stream, size_t size)
/* allocate a buffer for reading chunks */
chunk_buf = emalloc(stream->chunk_size);
- while (!stream->eof && (stream->writepos - stream->readpos < (zend_off_t)size)) {
+ while (!stream->eof && (stream->writepos - stream->readpos < (zend_off_t)to_read_now)) {
ssize_t justread = 0;
int flags;
php_stream_bucket *bucket;