mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
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:
commit
d893404fb9
1 changed files with 17 additions and 1 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue