#
d9695401 |
| 23-Aug-2024 |
Gina Peter Banyard |
Zend: Voidify virtual_cwd_(de)activate() (#15554) It always returned 0
|
#
479707b4 |
| 08-Jul-2024 |
David CARLIER |
tsrm_realpath_r for win32 mountpoints copy little optimisations. (#14852)
|
#
5d3fab93 |
| 11-Jun-2024 |
Peter Kokot |
Sync #if/ifdef/defined (#14520) These are either undefined or defined (to value 1): - __DragonFly__ - __FreeBSD__ - HAS_MCAST_EXT - HAVE_GETCWD - HAVE_GETWD - HAVE_GL
Sync #if/ifdef/defined (#14520) These are either undefined or defined (to value 1): - __DragonFly__ - __FreeBSD__ - HAS_MCAST_EXT - HAVE_GETCWD - HAVE_GETWD - HAVE_GLIBC_ICONV - HAVE_JIT - HAVE_LCHOWN - HAVE_NL_LANGINFO - HAVE_RL_CALLBACK_READ_CHAR - HAVE_RL_ON_NEW_LINE - HAVE_SQL_EXTENDED_FETCH - HAVE_UTIME Follow up of GH-5526 (-Wundef)
show more ...
|
#
927adfb1 |
| 20-Dec-2023 |
Cristian Rodríguez |
Use a single version of mempcpy(3) (#12257) While __php_mempcpy is only used by ext/standard/crypt_sha*, the mempcpy "pattern" is used everywhere. This commit removes __php_memp
Use a single version of mempcpy(3) (#12257) While __php_mempcpy is only used by ext/standard/crypt_sha*, the mempcpy "pattern" is used everywhere. This commit removes __php_mempcpy, adds zend_mempcpy and transforms open-coded parts into function calls.
show more ...
|
#
00008a86 |
| 12-Apr-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Remove unnecessary memory clearing in virtual_file_ex() (#10963) I checked a simple Laravel CRUD application's home page under Callgrind and found that the line: char resolved_path
Remove unnecessary memory clearing in virtual_file_ex() (#10963) I checked a simple Laravel CRUD application's home page under Callgrind and found that the line: char resolved_path[MAXPATHLEN] = {0}; took up about 0.95% of the spent instruction count. This is because when opcache revalidates the timestamps, it has to go through the function virtual_file_ex() which contains that line. That line will memset 4096 bytes on my system to all zeroes. This is bad for the data cache and for the runtime. I found that this memsetting is unnecessary in most cases, and that we can fix the one remaining case: * Lines 1020-1027 don't do anything with resolved_path, so that's okay. * Lines 1033-1098: - The !IS_ABSOLUTE_PATH branch will always result in a memcpy from path to resolved_path (+ sometimes an offset) with the total copied amount equal to path_length+1, so that includes a NUL byte. - The else branch either takes the WIN32 path or the non-WIN32 path. ° WIN32: There's a copy from path+2 with length path_length-1. Note that we chop off the first 2 bytes, so this also includes the NUL byte. ° Non-WIN32: Copies path_length+1 bytes, so that includes a NUL byte. At this point we know that resolved_path ends in a NUL byte. Going further in the code: * Lines 1100-1106 don't write to resolved_path, so no NUL byte is removed. * Lines 1108-1136: - The IS_UNC_PATH branch: ° Lines 1111-1112 don't overwrite the NUL byte, because we know the path length is at least 2 due to the IS_UNC_PATH check. ° Both while loops uppercase the path until a slash is found. If a NUL byte was found then it jumps to verify. Therefore, no NUL byte can be overwritten. Furthermore, Lines 1121 and 1129 cannot overwrite a NUL byte because the check at lines 1115 and 1123 would've jumped to verify when a NUL byte would be encountered. Therefore, the IS_UNC_PATH branch cannot overwrite a NUL byte, so the NUL byte we know we already got stays in place. - The else branch: ° We know the path length is at least 2 due to IS_ABSOLUTE_PATH. That means the earliest NUL byte can be at index 2, which can be overwritten on line 1133. We fix this by adding one byte write if the length is 2. All uses of resolved_path in lines 1139-1141 have a NUL byte at the end now. Lines 1154-1164 do a bunch of post-processing but line 1164 will make sure resolved_path still ends in a NUL byte. So therefore I propose to remove the huge memset, and add a single byte write in that one else branch I mentioned earlier. Looking at Callgrind, the instruction count before this patch for 200 requests is 14,264,569,942; and after the patch it's 14,129,358,195 (averaged over a handful of runs).
show more ...
|
Revision tags: php-8.2.0RC1, php-8.1.10, php-8.0.23, php-8.0.23RC1, php-8.1.10RC1, php-8.2.0beta3 |
|
#
a1f5c8a5 |
| 16-Aug-2022 |
Christoph M. Becker |
Fix GH-9227: Trailing dots and spaces in filenames are ignored Given that Windows ignores trailing dots and spaces in filenames, we catch that ourselves to avoid confusion with the respe
Fix GH-9227: Trailing dots and spaces in filenames are ignored Given that Windows ignores trailing dots and spaces in filenames, we catch that ourselves to avoid confusion with the respective filenames without these characters. Closes GH-9229.
show more ...
|
Revision tags: php-8.2.0beta2, php-8.1.9, php-8.0.22, php-8.1.9RC1, php-8.2.0beta1, php-8.0.22RC1, php-8.0.21, php-8.1.8, php-8.2.0alpha3, php-8.1.8RC1, php-8.2.0alpha2, php-8.0.21RC1, php-8.0.20, php-8.1.7, php-8.2.0alpha1, php-7.4.30, php-8.1.7RC1, php-8.0.20RC1 |
|
#
2ecd46f4 |
| 22-May-2022 |
George Peter Banyard |
Initialise zend_stat_t to fix MSAN build
|
#
926407f2 |
| 13-May-2022 |
George Peter Banyard |
Fix some MSAN complaints under Clang (#8553)
|
Revision tags: php-8.1.6, php-8.0.19, php-8.1.6RC1, php-8.0.19RC1, php-8.0.18, php-8.1.5, php-7.4.29, php-8.1.5RC1, php-8.0.18RC1, php-8.1.4, php-8.0.17, php-8.1.4RC1, php-8.0.17RC1, php-8.1.3, php-8.0.16, php-7.4.28, php-8.1.3RC1, php-8.0.16RC1, php-8.1.2, php-8.0.15, php-8.1.2RC1, php-8.0.15RC1, php-8.0.14, php-8.1.1, php-7.4.27, php-8.1.1RC1, php-8.0.14RC1, php-7.4.27RC1, php-8.1.0, php-8.0.13, php-7.4.26, php-7.3.33, php-8.1.0RC6, php-7.4.26RC1, php-8.0.13RC1, php-8.1.0RC5, php-7.3.32, php-7.4.25, php-8.0.12, php-8.1.0RC4, php-8.0.12RC1, php-7.4.25RC1, php-8.1.0RC3, php-8.0.11, php-7.4.24, php-7.3.31, php-8.1.0RC2, php-7.4.24RC1, php-8.0.11RC1, php-8.1.0RC1, php-7.4.23, php-8.0.10, php-7.3.30, php-8.1.0beta3, php-8.0.10RC1, php-7.4.23RC1, php-8.1.0beta2, php-8.0.9, php-7.4.22, php-8.1.0beta1, php-7.4.22RC1, php-8.0.9RC1, php-8.1.0alpha3, php-7.4.21, php-7.3.29, php-8.0.8, php-8.1.0alpha2, php-7.4.21RC1, php-8.0.8RC1, php-8.1.0alpha1, php-8.0.7, php-7.4.20 |
|
#
99a20856 |
| 21-May-2021 |
Dimitry Andric |
Fix bug #81068: Fix possible use-after-free in realpath_cache_clean() If ZTS is enabled, this can cause cwd_globals_ctor() to be called multiple times, each with a freshly allocated virt
Fix bug #81068: Fix possible use-after-free in realpath_cache_clean() If ZTS is enabled, this can cause cwd_globals_ctor() to be called multiple times, each with a freshly allocated virtual_cwd_globals instance. At shutdown time however, cwd_globals_dtor() will call realpath_cache_clean(), which then possibly cleans up the same realpath_cache instance more than once. Using AddressSanitzer, this shows up as a heap use-after-free. To avoid this, add a helper function to do the actual work on one instance of a realpath_cache, and call it both from cwd_globals_dtor() and realpath_cache_clean(). The former uses the virtual_cwd_globals parameter passed in via the destructor, the latter uses the CWDG() macro.
show more ...
|
Revision tags: php-8.0.7RC1, php-7.4.20RC1 |
|
#
aca6aefd |
| 14-May-2021 |
George Peter Banyard |
Remove 'register' type qualifier (#6980) The compiler should be smart enough to optimize this on its own
|
#
01b3fc03 |
| 06-May-2021 |
KsaR |
Update http->https in license (#6945) 1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https. 2. Update few license 3.0 to 3.01 as
Update http->https in license (#6945) 1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https. 2. Update few license 3.0 to 3.01 as 3.0 states "php 5.1.1, 4.1.1, and earlier". 3. In some license comments is "at through the world-wide-web" while most is without "at", so deleted. 4. fixed indentation in some files before |
show more ...
|
Revision tags: php-8.0.6, php-7.4.19, php-7.4.18, php-7.3.28, php-8.0.5 |
|
#
ea3c992b |
| 19-Apr-2021 |
Christoph M. Becker |
Fix #80960: opendir() warning wrong info when failed on Windows Firstly, we must not forget to set appropriate error codes for "manual" checks in `virtual_file_ex()`. Secondly,
Fix #80960: opendir() warning wrong info when failed on Windows Firstly, we must not forget to set appropriate error codes for "manual" checks in `virtual_file_ex()`. Secondly, we must not call `php_error_docref2()` for warnings regarding unary functions; thus, we introduce `php_win32_docref1_from_error()`. Closes GH-6872.
show more ...
|
Revision tags: php-8.0.5RC1, php-7.4.18RC1 |
|
#
462da6e0 |
| 31-Mar-2021 |
Josh Soref |
Fix spelling and grammar mistakes This PR corrects misspellings identified by the check-spelling action. The misspellings have been reported at jsoref@b6ba3e2#commitcomment-48946465
Fix spelling and grammar mistakes This PR corrects misspellings identified by the check-spelling action. The misspellings have been reported at jsoref@b6ba3e2#commitcomment-48946465 The action reports that the changes in this PR would make it happy: jsoref@602417c Closes GH-6822.
show more ...
|
Revision tags: php-8.0.4RC1, php-7.4.17RC1, php-8.0.3, php-7.4.16, php-8.0.3RC1, php-7.4.16RC1, php-8.0.2, php-7.4.15, php-7.3.27, php-8.0.2RC1, php-7.4.15RC2, php-7.4.15RC1, php-8.0.1, php-7.4.14, php-7.3.26, php-7.4.14RC1, php-8.0.1RC1, php-7.3.26RC1, php-8.0.0, php-7.3.25, php-7.4.13, php-8.0.0RC5, php-7.4.13RC1, php-8.0.0RC4, php-7.3.25RC1, php-7.4.12, php-8.0.0RC3, php-7.3.24, php-8.0.0RC2, php-7.4.12RC1, php-7.3.24RC1, php-7.2.34, php-8.0.0rc1 |
|
#
5caaf40b |
| 29-Sep-2020 |
George Peter Banyard |
Introduce pseudo-keyword ZEND_FALLTHROUGH And use it instead of comments
|
#
824cbc27 |
| 26-Oct-2020 |
Nikita Popov |
Declare may_retry_reparse_point on windows only
|
#
848e24f2 |
| 19-Oct-2020 |
Christoph M. Becker |
Fix #80258: Windows Deduplication Enabled, randon permission errors A recent bug fix regarding symlinks claimed: > After resolving reparse points, the path still may be a reparse
Fix #80258: Windows Deduplication Enabled, randon permission errors A recent bug fix regarding symlinks claimed: > After resolving reparse points, the path still may be a reparse > point; in that case we have to resolve that reparse point as well. While that is basically correct, some reparse points may point to inaccessible system folders (e.g. `IO_REPARSE_TAG_DEDUP` points to "\System Volume Information"). Since we don't know details about arbitrary reparse points, and are mainly interested in nested symlinks, we take a step back, and only resolve `IO_REPARSE_TAG_SYMLINK` for now. Close GH-6354.
show more ...
|
Revision tags: php-7.4.11, php-7.3.23, php-8.0.0beta4, php-7.4.11RC1, php-7.3.23RC1, php-8.0.0beta3, php-7.4.10, php-7.3.22 |
|
#
fa8d9b11 |
| 28-Aug-2020 |
George Peter Banyard |
Improve type declarations for Zend APIs Voidification of Zend API which always succeeded Use bool argument types instead of int for boolean arguments Use bool return type for functio
Improve type declarations for Zend APIs Voidification of Zend API which always succeeded Use bool argument types instead of int for boolean arguments Use bool return type for functions which return true/false (1/0) Use zend_result return type for functions which return SUCCESS/FAILURE as they don't follow normal boolean semantics Closes GH-6002
show more ...
|
Revision tags: php-8.0.0beta2, php-7.3.22RC1, php-7.4.10RC1, php-8.0.0beta1, php-7.4.9, php-7.2.33, php-7.3.21 |
|
#
c756f82c |
| 28-Jul-2020 |
Christoph M. Becker |
Fix #79806: realpath() erroneously resolves link to link After resolving reparse points, the path still may be a reparse point; in that case we have to resolve that reparse point as well.
|
#
1aeff522 |
| 27-Jul-2020 |
Christoph M. Becker |
Revert "Fix #79806: realpath() erroneously resolves link to link" This reverts commit d5b59b4303642adac91df2c93969a72bc0f5fa7d.
|
Revision tags: php-8.0.0alpha3, php-7.4.9RC1, php-7.3.21RC1 |
|
#
d5b59b43 |
| 15-Jul-2020 |
Christoph M. Becker |
Fix #79806: realpath() erroneously resolves link to link After resolving reparse points, the path still may be a reparse point; in that case we have to resolve that reparse point as well.
|
Revision tags: php-7.4.8, php-7.2.32, php-8.0.0alpha2, php-7.3.20, php-8.0.0alpha1, php-7.4.8RC1, php-7.3.20RC1, php-7.4.7, php-7.3.19 |
|
#
5a04796f |
| 27-May-2020 |
Christoph M. Becker |
Fix MSVC level 1 (severe) warnings We fix (hopefully) all instances of: * <https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4005>
Fix MSVC level 1 (severe) warnings We fix (hopefully) all instances of: * <https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4005> * <https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4024> * <https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4028> * <https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4047> * <https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4087> * <https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4090> * <https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4273> * <https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4312> `zend_llist_add_element()` and `zend_llist_prepend_element()` now explicitly expect a *const* pointer. We use the macro `ZEND_VOIDP()` instead of a `(void*)` cast to suppress C4090; this should prevent accidential removal of the cast by clarifying the intention, and makes it easier to remove the casts if the issue[1] will be resolved sometime. [1] <https://developercommunity.visualstudio.com/content/problem/390711/c-compiler-incorrect-propagation-of-const-qualifie.html>
show more ...
|
Revision tags: php-7.4.7RC1, php-7.3.19RC1, php-7.4.6, php-7.2.31, php-7.4.6RC1, php-7.3.18RC1 |
|
#
29968d8f |
| 24-Apr-2020 |
Christoph M. Becker |
Fix #79470: PHP incompatible with 3rd party file system on demand We add support for Activision HSM (`IO_REPARSE_TAG_ACTIVISION_HSM`) and VFS for Git (`IO_REPARSE_TAG_PROJFS`). The latt
Fix #79470: PHP incompatible with 3rd party file system on demand We add support for Activision HSM (`IO_REPARSE_TAG_ACTIVISION_HSM`) and VFS for Git (`IO_REPARSE_TAG_PROJFS`). The latter fixes bug #78784.
show more ...
|
Revision tags: php-7.2.30, php-7.4.5, php-7.3.17, php-7.4.5RC1, php-7.3.17RC1 |
|
#
97cb81ea |
| 23-Mar-2020 |
Nikita Popov |
Remove HAVE_REALPATH checks We do not actually use realpath(), but a custom implementation. Make sure the realpath() function is always available. Closes GH-5290.
|
Revision tags: php-7.3.18, php-7.4.4, php-7.2.29, php-7.3.16, php-7.4.4RC1, php-7.3.16RC1, php-7.4.3, php-7.2.28, php-7.3.15RC1, php-7.4.3RC1, php-7.3.15, php-7.2.27, php-7.4.2, php-7.3.14, php-7.3.14RC1, php-7.4.2RC1, php-7.4.1, php-7.2.26, php-7.3.13, php-7.4.1RC1, php-7.3.13RC1, php-7.2.26RC1, php-7.4.0, php-7.2.25, php-7.3.12, php-7.4.0RC6, php-7.3.12RC1, php-7.2.25RC1, php-7.4.0RC5, php-7.1.33, php-7.2.24, php-7.3.11, php-7.4.0RC4, php-7.3.11RC1, php-7.2.24RC1, php-7.4.0RC3 |
|
#
5d6e923d |
| 24-Sep-2019 |
Gabriel Caruso |
Remove mention of PHP major version in Copyright headers Closes GH-4732.
|
Revision tags: php-7.2.23, php-7.3.10, php-7.4.0RC2, php-7.2.23RC1, php-7.3.10RC1, php-7.4.0RC1, php-7.1.32, php-7.2.22, php-7.3.9, php-7.4.0beta4 |
|
#
81f52158 |
| 19-Aug-2019 |
Christoph M. Becker |
Fix #78220: Can't access OneDrive folder As of Windows 1903, when the OneDrive on-demand feature is enabled, the OneDrive folder is reported as reparse point by `FindFirstFile()`, but
Fix #78220: Can't access OneDrive folder As of Windows 1903, when the OneDrive on-demand feature is enabled, the OneDrive folder is reported as reparse point by `FindFirstFile()`, but trying to get information about the reparse point using `DeviceIoControl()` fails with `ERROR_NOT_A_REPARSE_POINT`. We work around this problem by falling back to `GetFileInformationByHandle()` if that happens, but only if the reparse point is reported as cloud reparse point, and only if PHP is running on Windows 1903 or later. The patch has been developed in collaboration with ab@php.net. We should keep an eye on the somewhat quirky OneDrive behavior, since it might change again in a future Windows release.
show more ...
|