From 7e9479083d6dc6d84c393a96eb718bccc0185b9b Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Thu, 28 Jan 2021 17:00:16 +0100 Subject: [PATCH] Fix #80654: file_get_contents() maxlen fails above (2**31)-1 bytes We remove the arbitrary restriction to `INT_MAX`; it is superfluous on 32bit systems where `ZEND_LONG_MAX == INT_MAX` anyway, and not useful on 64bit systems, where larger files should be readable, if the `memory_limit` is large enough. Closes GH-6648. --- NEWS | 4 ++++ ext/standard/file.c | 4 ---- ext/standard/streamsfuncs.c | 4 ---- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index 3349f4acda3..9ca7f5624b0 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,10 @@ PHP NEWS semicolon) (cmb) . Fixed bug #70091 (Phar does not mark UTF-8 filenames in ZIP archives). (cmb) +- Standard: + . Fixed bug #80654 (file_get_contents() maxlen fails above (2**31)-1 bytes). + (cmb) + - Zip: . Fixed bug #80648 (Fix for bug 79296 should be based on runtime version). (cmb, Remi) diff --git a/ext/standard/file.c b/ext/standard/file.c index 12c21c93cd4..3bd3421603f 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -564,10 +564,6 @@ PHP_FUNCTION(file_get_contents) RETURN_FALSE; } - if (maxlen > INT_MAX) { - php_error_docref(NULL, E_WARNING, "maxlen truncated from " ZEND_LONG_FMT " to %d bytes", maxlen, INT_MAX); - maxlen = INT_MAX; - } if ((contents = php_stream_copy_to_mem(stream, maxlen, 0)) != NULL) { RETVAL_STR(contents); } else { diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index 68ad6483e81..907feba7417 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -456,10 +456,6 @@ PHP_FUNCTION(stream_get_contents) } } - if (maxlen > INT_MAX) { - php_error_docref(NULL, E_WARNING, "maxlen truncated from " ZEND_LONG_FMT " to %d bytes", maxlen, INT_MAX); - maxlen = INT_MAX; - } if ((contents = php_stream_copy_to_mem(stream, maxlen, 0))) { RETURN_STR(contents); } else {