| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| | |
* PHP-7.4:
Fix #75776: Flushing streams with compression filter is broken
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
First, the `bzip2.compress` filter has the same issue as `zlib.deflate`
so we port the respective fix[1] to ext/bz2.
Second, there is still an issue, if a stream with an attached
compression filter is flushed before it is closed, without any writes
in between. In that case, the compression is never finalized. We fix
this by enforcing a `_php_stream_flush()` with the `closing` flag set
in `_php_stream_free()`, whenever a write filter is attached. This
call is superfluous for most write filters, but does not hurt, even
when it is unnecessary.
[1] <http://git.php.net/?p=php-src.git;a=commit;h=20e75329f2adb11dd231852c061926d0e4080929>
Closes GH-6703.
|
|\ \
| |/
| |
| |
| | |
* PHP-7.4:
Fix #80384: limit read buffer size
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In the case of a stream with no filters, php_stream_fill_read_buffer
only reads stream->chunk_size into the read buffer. If the stream has
filters attached, it could unnecessarily buffer a large amount of data.
With this change, php_stream_fill_read_buffer only proceeds until either
the requested size or stream->chunk_size is available in the read buffer.
Co-authored-by: Christoph M. Becker <cmbecker69@gmx.de>
Closes GH-6444.
|
|\ \
| |/
| |
| |
| | |
* PHP-7.4:
Fix #77069: stream filter loses final block of data
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Reading from a stream may return greater than zero, but nonetheless the
stream's EOF flag may have been set. We have to cater to this
condition by setting the close flag for filters.
We also have to cater to that change in the zlib.inflate filter:
If `inflate()` is called with flush mode `Z_FINISH`, but the output
buffer is not large enough to inflate all available data, it fails with
`Z_BUF_ERROR`. However, `Z_BUF_ERROR` is not fatal; in fact, the zlib
manual states: "If deflate returns with Z_OK or Z_BUF_ERROR, this
function must be called again with Z_FINISH and more output space
(updated avail_out) but no more input data, until it returns with
Z_STREAM_END or an error." Hence, we do so.
Closes GH-6001.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
mysqlnd currently sets error_reporting=0 to suppress errors while
writing to streams. Unfortunately these errors are still visible
to userland error handlers, which is a source of confusion.
See for example https://bugs.php.net/bug.php?id=80412.
Instead add a stream flag that suppresses the emission of
read/write errors in the first place, and set it in mysqlnd.
I think it might be useful to have this option for userland as
well in the future, but for now this is just an internal
mechanism.
Closes GH-6458.
|
| |
| |
| |
| |
| |
| |
| | |
The toggling of the `REPORT_ERRORS` looks fishy, and likely was
intented as clearing.
Closes GH-6190.
|
|\ \
| |/
| |
| |
| | |
* PHP-7.4:
Fix #76735: Incorrect message in fopen on invalid mode
|
| |\
| | |
| | |
| | |
| | | |
* PHP-7.3:
Fix #76735: Incorrect message in fopen on invalid mode
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We have to log errors in `stream_opener` callbacks to the wrapper's
error log, because otherwise we may pick up an unrelated `errno` or a
most generic message.
Closes GH-6187.
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* PHP-7.4:
Fix #76943: Inconsistent stream_wrapper_restore() errors
|
| |\ \
| | |/
| | |
| | |
| | | |
* PHP-7.3:
Fix #76943: Inconsistent stream_wrapper_restore() errors
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If restoring of any not registered built-in wrapper is requested, the
function is supposed to fail with a warning, so we have to check this
condition first.
Furthermore, to be able to detect whether a built-in wrapper has been
changed, it is not sufficient to check whether *any* userland wrapper
has been registered, but rather whether the specific wrapper has been
modified.
Closes GH-6183.
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* PHP-7.4:
Fix #79423: copy command is limited to size of file it can copy
|
| |\ \
| | |/
| | |
| | |
| | | |
* PHP-7.3:
Fix #79423: copy command is limited to size of file it can copy
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Passing `NULL` as `lpFileSizeHigh` to `GetFileSize()` gives wrong
results for files larger than 0xFFFFFFFF bytes. We fix this by using
`GetFileSizeEx()`, and let the mapping fail, if the file size is too
large for the architecture.
Closes GH-5319.
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* PHP-7.4:
Fix mmap copying
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Instead of attempting to map large files into memory at once, we map
chunks of at most `PHP_STREAM_MMAP_MAX` bytes, and repeat that until we
hit the point where `php_stream_seek()` fails (see bug 54902), and copy
the rest of the file by reading and writing small chunks.
We also fix the mapping behavior for zero bytes on Windows, which did
not error (as with `mmap()`), but would have mapped the remaining file.
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* PHP-7.4:
Fix #80067: Omitting the port in bindto setting errors
|
| |\ \
| | |/
| | |
| | |
| | | |
* PHP-7.3:
Fix #80067: Omitting the port in bindto setting errors
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
A recent commit[1] which fixed a memory leak introduced a regression
regarding the formerly liberal handling of IP addresses to bind to. We
fix this by reverting that commit, and fix the memory leak where it
actually occurs. In other words, this fix is less intrusive than the
former fix.
[1] <http://git.php.net/?p=php-src.git;a=commit;h=0b8c83f5936581942715d14883cdebddc18bad30>
Closes GH-6104.
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* PHP-7.4:
Fix #80048: Bug #69100 has not been fixed for Windows
|
| |\ \
| | |/
| | |
| | |
| | | |
* PHP-7.3:
Fix #80048: Bug #69100 has not been fixed for Windows
|
| | |
| | |
| | |
| | |
| | |
| | | |
We fix the erroneous length calculation on Windows, too.
Closes GH-6067.
|
| | |
| | |
| | |
| | |
| | | |
Instead of internal __size_t / __off64_t types use ssize_t and off64_t.
This makes it work on musl as well.
|
| | |
| | |
| | |
| | |
| | | |
Instead of internal __size_t / __off64_t types use ssize_t and off64_t.
This makes it work on musl as well.
|
| | |
| | |
| | |
| | | |
Closes GH-5902
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* PHP-7.4:
Handle bindto error
|
| |\ \
| | |/
| | |
| | |
| | | |
* PHP-7.3:
Handle bindto error
|
| | |
| | |
| | |
| | | |
Closes GH-5903.
|
| | |
| | |
| | |
| | | |
Closes GH-5876
|
| | | |
|
| | |
| | |
| | |
| | | |
Closes GH-5777.
|
| | |
| | |
| | |
| | | |
Closes GH-5590
|
| | | |
|
| | |
| | |
| | |
| | | |
Closes GH-5758
|
| | |
| | |
| | |
| | |
| | | |
For the rare cases where references are part of the API,
construct them explicitly. Otherwise do not allow separation.
|
| | | |
|
| | |
| | |
| | |
| | | |
Closes GH-5676.
|
| | |
| | |
| | |
| | | |
Close GH-5675.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Despite the docs claiming that data: wrappers would not be writable[1],
they are implemented as writing to a memory stream. That does not seem
to be particularly sensible, so we disallow writing altogether.
[1] <https://www.php.net/manual/en/wrappers.data.php#refsect1-wrappers.data-options>
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* PHP-7.4:
Fixed bug #79468
|
| |\ \
| | |/
| | |
| | |
| | | |
* PHP-7.3:
Fixed bug #79468
|
| | |
| | |
| | |
| | | |
Close the stream filter resources when removing them from the stream.
|
|\ \ \
| |/ /
| | |
| | |
| | | |
* PHP-7.4:
Fix #78210: Invalid pointer address
|
| |\ \
| | |/
| | |
| | |
| | | |
* PHP-7.3:
Fix #78210: Invalid pointer address
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is actually about three distinct issues:
* If an empty string is passed as $address to `stream_socket_sendto()`,
the `sa` is not initialized, so we must not pass it as `addr` to
`php_stream_xport_sendto()`.
* On POSIX, `recvfrom()` truncates messages which are too long to fit
into the specified buffer (unless `MSG_PEEK` is given), discards the
excessive bytes, and returns the buffer length. On Windows, the same
happens, but `recvfrom()` returns `SOCKET_ERROR` with the error code
`WSAEMSGSIZE`. We have to catch this for best POSIX compatibility.
* In `php_network_parse_network_address_with_port()`, we have to zero
`in6` (not only its alias `sa`) to properly support IPv6.
Co-Authored-By: Nikita Popov <nikita.ppv@googlemail.com>
|
| | |
| | |
| | |
| | | |
If no error is passed, it is always silent.
|