summaryrefslogtreecommitdiff
path: root/Zend
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge branch 'PHP-8.0'Nikita Popov2020-10-301-1/+1
|\ \ \ | |/ / | | | | | | | | | * PHP-8.0: Fix signed integer overflow
| * | Fix signed integer overflowNikita Popov2020-10-301-1/+1
| | | | | | | | | | | | Fixes oss-fuzz #26763.
* | | Merge branch 'PHP-8.0'Dmitry Stogov2020-10-281-1/+5
|\ \ \ | |/ / | | | | | | | | | * PHP-8.0: Fixed run-time binding of preloaded dynamically declared function
| * | Merge branch 'PHP-7.4' into PHP-8.0Dmitry Stogov2020-10-281-1/+5
| |\ \ | | |/ | | | | | | | | | * PHP-7.4: Fixed run-time binding of preloaded dynamically declared function
| | * Fixed run-time binding of preloaded dynamically declared functionDmitry Stogov2020-10-281-1/+5
| | |
* | | UTF-16 text conversion handles truncated characters as illegalAlex Dowad2020-10-271-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This broke one old test (Zend/tests/multibyte_encoding_003.phpt), which used a PHP script encoded as UTF-16. The problem was that to terminate the test script, we need the text: "\n--EXPECT--". Out of that text, the terminating newline (0x0A byte) becomes part of the resulting test script; but a bare 0x0A byte with no 0x00 is not valid UTF-16. Since we now treat truncated UTF-16 characters as erroneous, an extra '?' is appended to the output as an 'illegal character' marker. Really, if we are running PHP scripts which are treated as encoded in UTF-16 or some other arbitrary text encoding (not ASCII), and the script is not actually a valid string in that encoding, inserting '?' characters into the code which the PHP interpreter runs is a bad thing to do. In such cases, the script shouldn't be treated as UTF-16 (or whatever) at all. I wonder if mbstring's encoding detection is being used in 'non-strict' mode?
* | | Merge branch 'PHP-8.0'Nikita Popov2020-10-261-1/+2
|\ \ \ | |/ / | | | | | | | | | * PHP-8.0: Declare may_retry_reparse_point on windows only
| * | Merge branch 'PHP-7.4' into PHP-8.0Nikita Popov2020-10-261-1/+2
| |\ \ | | |/ | | | | | | | | | * PHP-7.4: Declare may_retry_reparse_point on windows only
| | * Merge branch 'PHP-7.3' into PHP-7.4Nikita Popov2020-10-261-1/+2
| | |\ | | | | | | | | | | | | | | | | * PHP-7.3: Declare may_retry_reparse_point on windows only
| | | * Declare may_retry_reparse_point on windows onlyNikita Popov2020-10-261-1/+2
| | | |
* | | | Merge branch 'PHP-8.0'Christoph M. Becker2020-10-261-2/+4
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Fix #80258: Windows Deduplication Enabled, randon permission errors
| * | | Merge branch 'PHP-7.4' into PHP-8.0Christoph M. Becker2020-10-261-2/+4
| |\ \ \ | | |/ / | | | | | | | | | | | | * PHP-7.4: Fix #80258: Windows Deduplication Enabled, randon permission errors
| | * | Merge branch 'PHP-7.3' into PHP-7.4Christoph M. Becker2020-10-261-2/+4
| | |\ \ | | | |/ | | | | | | | | | | | | * PHP-7.3: Fix #80258: Windows Deduplication Enabled, randon permission errors
| | | * Fix #80258: Windows Deduplication Enabled, randon permission errorsChristoph M. Becker2020-10-261-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| | | * 7.3.25 is nextChristoph M. Becker2020-10-131-1/+1
| | | |
* | | | Merge branch 'PHP-8.0'Máté Kocsis2020-10-232-6/+11
|\ \ \ \ | |/ / /
| * | | Require stubs to declare return types for magic methods when possibleMáté Kocsis2020-10-232-6/+11
| | | | | | | | | | | | | | | | Closes GH-6376
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-231-2/+2
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Make GC default threshold handling consistent
| * | | Make GC default threshold handling consistentNikita Popov2020-10-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | While the initial threshold is set to 10001 roots, the threshold adjustment logic may then set it to 10000. The exact value really doesn't matter, but we should make it consistent.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-232-2/+29
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Don't allow passing unknown named params to class without ctor
| * | | Don't allow passing unknown named params to class without ctorNikita Popov2020-10-232-2/+29
| | | | | | | | | | | | | | | | | | | | | | | | See also https://externals.io/message/112083. Closes GH-6364.
* | | | Merge branch 'PHP-8.0'Máté Kocsis2020-10-223-31/+127
|\ \ \ \ | |/ / /
| * | | Run arginfo/ZPP verification tests in strict mode as wellMáté Kocsis2020-10-223-31/+127
| | | | | | | | | | | | | | | | Closes GH-6370
* | | | Accept zend_string in highlight_string APINikita Popov2020-10-222-12/+6
| | | |
* | | | Remove unused single.leaf memberNikita Popov2020-10-222-9/+6
| | | |
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-225-258/+221
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Simplify and fix generator tree management
| * | | Simplify and fix generator tree managementNikita Popov2020-10-225-258/+221
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes a number of related changes to the generator tree management, that should hopefully make it easier to understand, more robust and faster for the common linear-chain case. Fixes https://bugs.php.net/bug.php?id=80240, which was the original motivation here. * Generators now only add a ref to their direct parent. * Nodes only store their children, not their leafs, which avoids any need for leaf updating. This means it's no longer possible to fetch the child for a certain leaf, which is something we only needed in one place (update_current). If multi-children nodes are involved, this will require doing a walk in the other direction (from leaf to root). It does not affect the common case of single-child nodes. * The root/leaf pointers are now seen as a pair. One leaf generator can point to the current root. If a different leaf generator is used, we'll move the root pointer over to that one. Again, this is a cache to make the common linear chain case fast, trees may need to scan up the parent link. Closes GH-6344.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-191-0/+24
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Fixed bug #80255
| * | | Fixed bug #80255Nikita Popov2020-10-191-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | This was a copy&paste mistake, target_block was used where follow_block was intended. Also update copy&paste mistakes in the comments.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-161-0/+11
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Make sure output start filename is not freed early
| * | | Make sure output start filename is not freed earlyNikita Popov2020-10-161-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As filenames are no longer interned, we need to keep a reference to the zend_string to make sure it isn't freed. To avoid a nominal source compatibility break, create a new member in the globals.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-162-3/+4
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Fix leak when setting dynamic property on generator
| * | | Fix leak when setting dynamic property on generatorNikita Popov2020-10-162-3/+4
| | | |
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-152-39/+80
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Fix bug #80055
| * | | Fix bug #80055Nikita Popov2020-10-152-39/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to perform trait scope fixup for both methods involved in the inheritance check. For that purpose we already need to thread through a separate fn scope through the entire inheritance checking machinery.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-151-0/+4
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Skip arginfo test under msan
| * | | Skip arginfo test under msanNikita Popov2020-10-151-0/+4
| | | | | | | | | | | | | | | | | | | | Msan is missing interceptors for some functions that result in false positives.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-141-16/+75
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: More arginfo/zpp verification
| * | | More arginfo/zpp verificationNikita Popov2020-10-141-16/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Run all functions with a varying number of null arguments, which helps us flush out all kinds of bugs. Closes GH-5881.
* | | | Sanity check zpp max argument countNikita Popov2020-10-141-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | This would have prevented 9b4094c. Closes GH-6334.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-134-9/+56
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Fix handling of throwing undef var in verify return
| * | | Fix handling of throwing undef var in verify returnNikita Popov2020-10-134-9/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we have an undefined variable and null is not accepted by the return type, we want to throw just the undef var error. In this case this lead to an infinite loop, because we overwrite the exception opline in SAVE_OPLINE and it does not get reset when chaining into a previous exception. Add an assertiong to catch this case earlier.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-122-6/+17
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Fixed bug #80225
| * | | Fixed bug #80225Nikita Popov2020-10-122-6/+17
| | | | | | | | | | | | | | | | | | | | Namespaced and declares have a different interpretation of what "first statement" means.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-124-14/+44
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | * PHP-8.0: Detect self-addition of array more accurately Deindirect source elements in zend_hash_merge
| * | | Merge branch 'PHP-7.4' into PHP-8.0Nikita Popov2020-10-124-14/+44
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | * PHP-7.4: Detect self-addition of array more accurately Deindirect source elements in zend_hash_merge
| | * | Merge branch 'PHP-7.3' into PHP-7.4Nikita Popov2020-10-124-14/+44
| | |\ \ | | | |/ | | | | | | | | | | | | | | | | * PHP-7.3: Detect self-addition of array more accurately Deindirect source elements in zend_hash_merge
| | | * Detect self-addition of array more accuratelyNikita Popov2020-10-122-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | While the zvals may be different, they may still point to the same array. Fixes oss-fuzz #26245.
| | | * Deindirect source elements in zend_hash_mergeNikita Popov2020-10-122-13/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the RHS has INDIRECT elements, we do not those to be added to the LHS verbatim. As we're using UPDATE_INDIRECT, we might even create a nested INDIRECT that way. This is a side-quest of oss-fuzz #26245.
* | | | Merge branch 'PHP-8.0'Nikita Popov2020-10-122-25/+40
|\ \ \ \ | |/ / / | | | | | | | | | | | | * PHP-8.0: Avoid non-object in FE_FREE