1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

sapi/cgi: fix buffer limit on windows.

MSDN recommends dropping the deprecated `read` in favor of `_read`.
Also, the buffer size limit is INT_MAX.

Close GH-14022
This commit is contained in:
David Carlier
2024-04-20 20:03:48 +01:00
parent 2dbe2d62b3
commit 74843947f4
3 changed files with 8 additions and 4 deletions

4
NEWS
View File

@@ -2,6 +2,10 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? ????, PHP 8.2.20
- CGI:
. Fixed buffer limit on Windows, replacing read call usage by _read.
(David Carlier)
- DOM:
. Fix crashes when entity declaration is removed while still having entity
references. (nielsdos)

View File

@@ -965,9 +965,9 @@ static inline ssize_t safe_read(fcgi_request *req, const void *buf, size_t count
tmp = count - n;
if (!req->tcp) {
unsigned int in_len = tmp > UINT_MAX ? UINT_MAX : (unsigned int)tmp;
unsigned int in_len = tmp > INT_MAX ? INT_MAX : (unsigned int)tmp;
ret = read(req->fd, ((char*)buf)+n, in_len);
ret = _read(req->fd, ((char*)buf)+n, in_len);
} else {
int in_len = tmp > INT_MAX ? INT_MAX : (int)tmp;

View File

@@ -486,9 +486,9 @@ static size_t sapi_cgi_read_post(char *buffer, size_t count_bytes)
while (read_bytes < count_bytes) {
#ifdef PHP_WIN32
size_t diff = count_bytes - read_bytes;
unsigned int to_read = (diff > UINT_MAX) ? UINT_MAX : (unsigned int)diff;
unsigned int to_read = (diff > INT_MAX) ? INT_MAX : (unsigned int)diff;
tmp_read_bytes = read(STDIN_FILENO, buffer + read_bytes, to_read);
tmp_read_bytes = _read(STDIN_FILENO, buffer + read_bytes, to_read);
#else
tmp_read_bytes = read(STDIN_FILENO, buffer + read_bytes, count_bytes - read_bytes);
#endif