Merge branch 'PHP-7.4' into master

* PHP-7.4:
  Fix #79423: copy command is limited to size of file it can copy
This commit is contained in:
Christoph M. Becker 2020-09-22 13:19:06 +02:00
commit d893404fb9

View file

@ -774,6 +774,7 @@ static int php_stdiop_set_option(php_stream *stream, int option, int value, void
php_stream_mmap_range *range = (php_stream_mmap_range*)ptrparam;
HANDLE hfile = (HANDLE)_get_osfhandle(fd);
DWORD prot, acc, loffs = 0, delta = 0;
LARGE_INTEGER file_size;
switch (value) {
case PHP_STREAM_MMAP_SUPPORTED:
@ -810,7 +811,22 @@ static int php_stdiop_set_option(php_stream *stream, int option, int value, void
return PHP_STREAM_OPTION_RETURN_ERR;
}
size = GetFileSize(hfile, NULL);
if (!GetFileSizeEx(hfile, &file_size)) {
CloseHandle(data->file_mapping);
data->file_mapping = NULL;
return PHP_STREAM_OPTION_RETURN_ERR;
}
# if defined(_WIN64)
size = file_size.QuadPart;
# else
if (file_size.HighPart) {
CloseHandle(data->file_mapping);
data->file_mapping = NULL;
return PHP_STREAM_OPTION_RETURN_ERR;
} else {
size = file_size.LowPart;
}
# endif
if (range->offset > size) {
range->offset = size;
}