Skip to content
forked from php/php-src

sync #16

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 116 commits into from
Apr 10, 2022
Merged

sync #16

merged 116 commits into from
Apr 10, 2022

Conversation

chopins
Copy link
Owner

@chopins chopins commented Apr 10, 2022

No description provided.

MaxKellermann and others added 30 commits March 24, 2022 15:03
* ext/opcache/ZendAccelerator: make check_persistent_script_access() static

* ext/opcache/ZendAccelerator: convert "int" to "bool"

* ext/opcache/zend_file_cache: convert "int" to "bool"

* ext/opcache: use true/false for zend_persistent_script.corrupted

* ext/opcache/ZendAccelerator: move duplicate code to zend_accel_discard_script()

* ext/opcache/ZendAccelerator: convert accel_deactivate_now() to function

Simplify the #iddef ZEND_WIN32.

* ext/opcache/zend_file_cache: simplify iovec initializer

* ext/opcache/zend_file_cache: add local zend_string* variables

Eliminates lots of redundant casts and avoids reloading the variable
from RAM into registers.

* ext/opcache/zend_file_cache: use ZSTR_VAL()

* ext/opcache/zend_file_cache: move code to zend_file_cache_script_write()

This eliminates duplicate error handling code.
* PHP-8.1:
  Fix IntlPartsIterator key off-by-one error
Fixes oss-fuzz #45981
* PHP-8.0:
  JIT: Fixed memory leak
* PHP-8.1:
  JIT: Fixed memory leak
As is, there is the possibility that integer underflow occurs, making
`_php_filter_validate_domain()` succeed for very long domain names.

Cf. <https://pwning.systems/posts/php_filter_var_shenanigans/>.
* PHP-8.0:
  Fix signedness confusion in php_filter_validate_domain()
* PHP-8.1:
  Fix signedness confusion in php_filter_validate_domain()
Integer parameters are stored in `zend_long` values, which have 64 bits
on LLP64, but `long` has only 32 bits there.

Adding a test might be overkill, because the broken behavior could
already be observed when running pg_select_001.phpt on Windows debug
builds, which report the stack corruption.

Closes GH-8263.
* PHP-8.0:
  Fix result_type related stack corruption on LLP64 architectures
* PHP-8.1:
  Fix result_type related stack corruption on LLP64 architectures
* PHP-8.0:
  Don't try to access memory outside string
* PHP-8.1:
  Don't try to access memory outside string
… <n> is mandatory for --show-slow and --set-timeout use <n> in help message instead of confusing [n]
* PHP-8.0:
  run-tests.php: fix TypeError: Unsupported operand types: string * int <n> is mandatory for --show-slow and --set-timeout use <n> in help message instead of confusing [n]
* PHP-8.1:
  run-tests.php: fix TypeError: Unsupported operand types: string * int <n> is mandatory for --show-slow and --set-timeout use <n> in help message instead of confusing [n]
* PHP-8.1:
  typo
We need to deref the values.

Closes GH-8262.
* PHP-8.0:
  Fix GH-8253: pg_insert() fails for references
* PHP-8.1:
  Fix GH-8253: pg_insert() fails for references
This issue has found by a static analyzer.

Closes GH-8272.
* PHP-8.0:
  Fix regression from #8058
* PHP-8.1:
  Fix regression from #8058
derickr and others added 29 commits April 7, 2022 10:45
We need to tell the test runner that ext/curl is required to run the
test.
Using more appropriate types
Fix comments
Early returns
Instead of using the unsupported `%I64u` and `%I64d` format specifiers
on Windows, we use the portable `PRIu64` and `PRId64` specifiers.

The `L64()` macro and the `my_longlong` typedef should be adapted as
well, as the `i64` literal suffix is still supported by MSVC, but using
`LL` or `ll` is recommended[1], and the standard `int64_t` is available
there anyway.  This is not urgent, though.

[1] <https://docs.microsoft.com/en-us/cpp/cpp/numeric-boolean-and-pointer-literals-cpp?view=msvc-170#integer-literals>

Closes GH-8268.
* PHP-8.0:
  Fix GH-8267: MySQLi uses unsupported format specifier on Windows
* PHP-8.1:
  Fix GH-8267: MySQLi uses unsupported format specifier on Windows
This fixes GH-7774.

spl_iterators.h was including php_pcre.h so that one object intern struct could
reference a pcre_cache_entry. These object interns should not be public, so they
can be moved out of the header file.

This change moves the object interns ouf of spl_iterators.h so that php_pcre.h
doesn't need to be included from there.
The deny_ptrace is a OS runtime setting and is off by default,
at least on workstations flavors (fedora) however it might be
different on production servers.
RFC: https://wiki.php.net/rfc/null-standalone-type

Also a drive-by consistency fix for error messages.
Use early returns, which fixes ValueError order of arguments and flattens the code
* PHP-8.0:
  Add nightly for GitHub actions
* PHP-8.1:
  Add nightly for GitHub actions
This was a left-over from the attept to trigger nightly via comment.
* PHP-8.0:
  Remove issue_comment trigger on nightly
* PHP-8.1:
  Remove issue_comment trigger on nightly
Report the file/line of the opline rather than the include location.

This should make issues like #8251 easier to debug.
* PHP-8.1:
  Improve file/line information for narrowing warning
This ensures that this will show up as a fuzzing failure.
We need to explicitly model the null return type for property
accesses on non-objects.
* PHP-8.1:
  Improve type narrowing fix
@chopins chopins merged commit b510ebd into chopins:master Apr 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.