1
0
mirror of https://github.com/php/php-src.git synced 2026-04-26 01:18:19 +02:00
Commit Graph

132355 Commits

Author SHA1 Message Date
George Peter Banyard 5d0304876f ext/imap: Remove php_imap_list_add_object() function
The symtable was always an array so use appropriate HashTable API
2023-06-18 13:05:02 +01:00
Niels Dossche 47708765d6 Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix GH-11404: DOMDocument::savexml and friends ommit xmlns="" declaration for null namespace, creating incorrect xml representation of the DOM
2023-06-17 13:42:10 +02:00
Niels Dossche bb3e5a8f55 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix GH-11404: DOMDocument::savexml and friends ommit xmlns="" declaration for null namespace, creating incorrect xml representation of the DOM
2023-06-17 13:36:44 +02:00
nielsdos 7eb3e9cd17 Fix GH-11404: DOMDocument::savexml and friends ommit xmlns="" declaration for null namespace, creating incorrect xml representation of the DOM
The NULL namespace is only correct when there is no default namespace
override. When there is, we need to manually set it to the empty string
namespace.

Closes GH-11428.
2023-06-17 13:36:00 +02:00
Ilija Tovilo 1518443500 Merge branch 'PHP-8.2'
* PHP-8.2:
  [skip ci] Don't suppress setup-slapd.sh output
2023-06-16 12:06:43 +02:00
Ilija Tovilo 2086740c9e Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  [skip ci] Don't suppress setup-slapd.sh output
2023-06-16 12:06:33 +02:00
Ilija Tovilo 1c85278fbe [skip ci] Don't suppress setup-slapd.sh output
This step frequently fails in CI. We would like to now why to see if we can
improve stability.
2023-06-16 12:04:05 +02:00
nielsdos 035105b252 Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix GH-11451: Invalid associative array containing duplicate keys
2023-06-15 21:56:40 +02:00
nielsdos 29a96e09b2 Fix GH-11451: Invalid associative array containing duplicate keys
It used the "add_new" variant which assumes the key doesn't already
exist. But in case of duplicate keys we have to take the last result.

Closes GH-11453.
2023-06-15 21:56:06 +02:00
nielsdos 08f6072263 Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix bug #55294 and #47530 and #47847: namespace reconciliation issues
2023-06-15 21:53:16 +02:00
nielsdos 923e72615f Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix bug #55294 and #47530 and #47847: namespace reconciliation issues
2023-06-15 21:50:47 +02:00
nielsdos b30be40b86 Fix bug #55294 and #47530 and #47847: namespace reconciliation issues
We'll use the DOM wrapper version of libxml2 instead of the regular one.
It's conforming to the behaviour we expect of DOM.
Most of this patch is tests.

I based and extended the tests on the code attached with the aforementioned
bug reports. Therefore the credits for the tests:
Co-authored-by: hilse at web dot de
Co-authored-by: robin2008 at altruists dot org
Co-authored-by: sgunderson at bigfoot dot com

We'll also change the searching point of the internal reconciliation to
start at the top of the added tree to avoid redundant work now that the
function is changed.

Closes GH-11454.
2023-06-15 21:50:00 +02:00
Tim Starling ea2ee60552 When running FPM tests, pass -n option to php-fpm
"make test" was failing for me, because I was running it prior to
install, and there was an old installed version which was incompatible.
The FPM tests were using the installed php.ini which referenced
installed dynamically linked extensions.

So, pass -n to php-fpm.

FPM\Tester::start() has $extensions, $iniEntries and
TEST_FPM_EXTENSION_DIR but they are not actually set by anything. Rather
than rely on the installed php.ini to be correct, it seems safer to pass
-n, and any tests that need specific config can pass $iniEntries.

Closes GH-11373
2023-06-15 18:00:50 +01:00
Jakub Zelenka 1fa5d306d8 Merge branch 'PHP-8.2' 2023-06-15 17:37:35 +01:00
Jakub Zelenka 6877b4f110 Merge branch 'PHP-8.1' into PHP-8.2 2023-06-15 17:37:09 +01:00
Jakub Zelenka 9b18466396 FPM: Add "pcntl" when running another test depending on pcntl 2023-06-15 17:36:00 +01:00
Mikhail Galanin 7ade242e28 sapi/fpm: add "pcntl" when running test depending pcntl_sigprocmask()
If "pcntl" is built as a shared module, the extension will not
load automatically when we spawn the FPM
2023-06-15 17:32:02 +01:00
Ilija Tovilo b3e33be443 Forward shutdown exceptions to user error handlers
Fixes GH-10695
Closes GH-110905
2023-06-15 17:11:22 +02:00
Máté Kocsis 96ea06a1d9 Add test for GH-11423 2023-06-15 01:06:29 +02:00
George Peter Banyard 85a4a80da3 ext/imap: Refactor + Update to modern property write API (#11415)
Use common functions for creating and setting up similar objects

The increase in verbosity compared to the ``add_property_*()`` version is somewhat unfortunate, but the behaviour of ``add_property_str()`` releasing the zend_string is suboptimal, confusing, and has me concerned.
2023-06-14 05:50:23 +01:00
Niels Dossche 38b5e949a3 [ci skip] Add myself to CODEOWNERS for dom and libxml (#11449) 2023-06-13 19:38:12 +02:00
nielsdos 1a5a53709f Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix cross-compilation check in phar generation for FreeBSD
2023-06-13 19:15:30 +02:00
nielsdos a9c6b840ad Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix cross-compilation check in phar generation for FreeBSD
2023-06-13 19:13:34 +02:00
Peter 4fcb3e0d34 Fix cross-compilation check in phar generation for FreeBSD
FreeBSD's shell is very POSIX strict. This patch makes sure it works
correctly under FreeBSD too.

Closes GH-11441.
2023-06-13 19:09:58 +02:00
David CARLIER ec3daea1d6 ext/pdo_pgsql: connection status update to distinguish from truly bad quality connections.
Close GH-11443
2023-06-13 18:08:06 +01:00
David CARLIER dd8514a0bd ext/pgsql: adding pg_set_error_context_visibility.
another level of context for pg_last_error/pg_result_error() to include
or not the context in those. PQSHOW_CONTEXT_ERRORS being the default.

Close GH-11395
2023-06-13 18:07:39 +01:00
Niels Dossche 5c789806ef Fix GH-11406: segfault with unpacking and magic method closure
The magic method trampoline closure may be variadic. However, the
arg_info for the variadic argument was not set, resulting in a crash
both in reflection and in the VM.

Fix it by creating an arg_info containing a single element in case of
the variadic case. The variadic argument is the last one (and in this
case only one) in the arg_info array.

We make sure the argument info is equivalent to the argument info of
`$closure` of the following code snippet:
```
function foo(...$arguments) {}
$closure = foo(...);
```

Closes GH-11417.
2023-06-13 17:39:47 +02:00
nielsdos 18f2f0a0ab Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix GH-11433: Unable to set CURLOPT_ACCEPT_ENCODING to NULL
  Fix "invalid state error" with cloned namespace declarations
  Fix lifetime issue with getAttributeNodeNS()
2023-06-13 17:38:04 +02:00
nielsdos c160693515 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix GH-11433: Unable to set CURLOPT_ACCEPT_ENCODING to NULL
  Fix "invalid state error" with cloned namespace declarations
  Fix lifetime issue with getAttributeNodeNS()
2023-06-13 17:35:16 +02:00
nielsdos a8a3b99e00 Fix GH-11433: Unable to set CURLOPT_ACCEPT_ENCODING to NULL
Closes GH-11446.
2023-06-13 17:30:57 +02:00
Niels Dossche 10d94aca4c Fix "invalid state error" with cloned namespace declarations
Closes GH-11429.
2023-06-13 17:30:18 +02:00
Niels Dossche e309fd8461 Fix lifetime issue with getAttributeNodeNS()
It's the same issue that I fixed previously in GH-11402, but in a
different place.

Closes GH-11422.
2023-06-13 17:29:37 +02:00
Jakub Zelenka 49fbbea2ea Fix GH-10406: fgets on a redis socket connection fails on PHP 8.3
This is an alternative implementation for GH-10406 that resets the
has_buffered_data flag after finishing stream read so it does not impact
other ops->read use like for example php_stream_get_line.

Closes GH-11421
2023-06-11 13:27:00 +01:00
Niels Dossche d22d0e26dc Implement GH-8641: STREAM_NOTIFY_COMPLETED over HTTP never emitted
This adds support for the completed event. Since the read handler could
be entered twice towards the end of the stream we remember what the eof
flag was before reading so we can emit the completed event when the flag
changes to true.

Closes GH-10505.
2023-06-10 19:47:36 +02:00
Niels Dossche 30c5ae4219 Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix #70359 and #78577: segfaults with DOMNameSpaceNode
2023-06-09 21:46:05 +02:00
Niels Dossche 2cbb0c0cc0 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix #70359 and #78577: segfaults with DOMNameSpaceNode
2023-06-09 21:41:49 +02:00
nielsdos f2d673fb18 Fix #70359 and #78577: segfaults with DOMNameSpaceNode
* Fix type confusion and parent reference
* Manually manage the lifetime of the parent
* Add regression tests
* Break out to a helper, and apply the use-after-free fix to xpath

Closes GH-11402.
2023-06-09 21:35:55 +02:00
Jakub Zelenka 981f01e131 Merge branch 'PHP-8.2' 2023-06-09 16:50:57 +01:00
Jakub Zelenka d687a1bf57 Merge branch 'PHP-8.1' into PHP-8.2 2023-06-09 16:50:24 +01:00
Jakub Zelenka 3fc013b2e2 Fix CS and checking for IPv6 SAN verify 2023-06-09 16:49:09 +01:00
Jakub Zelenka 45eae90dab Merge branch 'PHP-8.2' 2023-06-09 16:39:02 +01:00
Jakub Zelenka 58141f062b Merge branch 'PHP-8.1' into PHP-8.2 2023-06-09 16:38:14 +01:00
James Lucas fd09728bb6 Fix bug GH-9356: Incomplete SAN validation of IPv6 address
IPv6 addresses are valid entries in subjectAltNames. Certificate
Authorities may issue certificates including IPv6 addresses except
if they fall within addresses in the RFC 4193 range. Google and
CloudFlare provide IPv6 addresses in their DNS over HTTPS services.

Internal CAs do not have those restrictions and can issue Unique
local addresses in certificates.

Closes GH-11145
2023-06-09 16:33:46 +01:00
Bob Weinand 95e6ce6ede Merge branch 'PHP-8.2' 2023-06-09 14:01:44 +02:00
Bob Weinand 709540ccdc Fix add/remove observer API with multiple observers installed
Depending on the order in which observers were installed, some observers might have been executed twice after removal of another observer. Also, adding an observer could produce a bogus pointer.
2023-06-09 14:00:53 +02:00
nielsdos a38e3c999f Fix #79700: Bad performance with namespaced nodes due to wrong libxml assumption
* Use a prepending strategy instead of appending in dom_set_old_ns()

Looping to the end of the list is wasteful. We can just put the new
nodes at the front of the list. I don't believe we can fully prepend,
because libxml2 may assume that the xml namespace is the first one, so
we'll put the new ones as the second one.

* Reuse namespaces from doc->oldNs if possible in dom_get_ns()

* Add a test for reconciling a reused namespace

* Explain why there can't be a cycle between oldNs and nsDef

Closes GH-11376.

Also fixes #77894.
2023-06-08 19:43:58 +02:00
Niels Dossche 50b4df18e0 Get rid of return value for php_libxml_unregister_node() (#11398) 2023-06-08 17:44:55 +02:00
Mikhail Galanin a6911cbd4d Suppress warning when the test run under non-root (#11400)
When we run the test under non-root user, the test gets BORKed with:

Warning: pcntl_unshare(): Error 1: No privilege to use these flags in ext/pcntl/tests/pcntl_unshare_03.skip.php on line 8
skip Insufficient privileges for CLONE_NEWUSER

It looks like for the root-user there is the similar warning which is already suppressed (see the following "skip").
Let us skip the test properly if we aren't able to execute it
2023-06-08 16:16:47 +02:00
George Peter Banyard d5ad75108e More usage of known zend_str instead of C string (#11381) 2023-06-08 13:03:29 +01:00
Dmitry Stogov 962a777a37 Merge branch 'PHP-8.2'
* PHP-8.2:
  Keep consistent EG(current_execute_data) after return from generator (#11380)
2023-06-08 14:55:56 +03:00