]> granicus.if.org Git - php/log
php
4 years agoFix #80118: Erroneous whitespace match with JIT only
Christoph M. Becker [Sat, 19 Sep 2020 10:37:57 +0000 (12:37 +0200)]
Fix #80118: Erroneous whitespace match with JIT only

We backport r1273[1] from PCRE2.

[1] <https://vcs.pcre.org/pcre2?revision=1273&view=revision>

Closes GH-6165.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Sun, 20 Sep 2020 13:36:30 +0000 (15:36 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #80114: parse_url does not accept URLs with port 0

4 years agoFix #80114: parse_url does not accept URLs with port 0
Christoph M. Becker [Sun, 20 Sep 2020 11:45:09 +0000 (13:45 +0200)]
Fix #80114: parse_url does not accept URLs with port 0

URIs with a 0 port are generally valid, so `parse_url()` should
recognize such URIs, but still report the port as missing.

Co-authored-by: twosee <twose@qq.com>
Closes GH-6152.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Sun, 20 Sep 2020 08:02:32 +0000 (10:02 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix mysqli build with mysqlnd and without PDO

4 years agoFix mysqli build with mysqlnd and without PDO
Bob Weinand [Sun, 20 Sep 2020 00:57:39 +0000 (02:57 +0200)]
Fix mysqli build with mysqlnd and without PDO

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Fri, 18 Sep 2020 13:30:06 +0000 (15:30 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #78179: mysqli/mysqlnd transaction extensions

4 years agoFix #78179: mysqli/mysqlnd transaction extensions
Daniel Black [Tue, 21 Jul 2020 06:23:14 +0000 (16:23 +1000)]
Fix #78179: mysqli/mysqlnd transaction extensions

MariaDB versioning created a mess with regarding testing
features based on version. We sidestep the problem here
by assuming the extensions are present, and if a syntax
error occurs with a SQL mode TRANS_START_READ_WRITE |
TRANS_START_READ_ONLY enabled, then output the same
warning as before.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Fri, 18 Sep 2020 13:25:35 +0000 (15:25 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Support NO_BACKSLASH_ESCAPES with newer libmysqlclient

4 years agoSupport NO_BACKSLASH_ESCAPES with newer libmysqlclient
Nikita Popov [Fri, 18 Sep 2020 08:29:28 +0000 (10:29 +0200)]
Support NO_BACKSLASH_ESCAPES with newer libmysqlclient

Requires the use of mysql_real_escape_string_quote().

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Fri, 18 Sep 2020 12:50:02 +0000 (14:50 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Use MyISAM engine for new test

4 years agoUse MyISAM engine for new test
Nikita Popov [Fri, 18 Sep 2020 12:26:34 +0000 (14:26 +0200)]
Use MyISAM engine for new test

Travis on 7.3 is showing this error:

> The size of BLOB/TEXT data inserted in one transaction is greater
> than 10% of redo log size. Increase the redo log size using
> innodb_log_file_size.

Force MyISAM engine to avoid this.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Fri, 18 Sep 2020 10:56:11 +0000 (12:56 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix bug #80107: Handling of large compressed packets
  Bug #80107 Add test for mysqli_query() fails for ~16 MB long query when compression is enabled

4 years agoFix bug #80107: Handling of large compressed packets
Nikita Popov [Wed, 16 Sep 2020 14:18:29 +0000 (16:18 +0200)]
Fix bug #80107: Handling of large compressed packets

There's two layers of packet splitting going on. First, packets
need to be split into having a payload of exactly 2^24-1 bytes or
being the last packet. If the split packet has size between 2^24-5
and 2^24-1 bytes, the compressed packets also needs to be split,
though the choice of split doesn't matter here. I'm splitting off
the first 8192 bytes, as that's what I observe libmysqlclient to be
doing.

4 years agoBug #80107 Add test for mysqli_query() fails for ~16 MB long query when compression...
Máté Kocsis [Tue, 15 Sep 2020 17:14:57 +0000 (19:14 +0200)]
Bug #80107 Add test for mysqli_query() fails for ~16 MB long query when compression is enabled

4 years agoFix bundled libpcre2 build regarding the `-fcf-protection` gcc flag
Christoph M. Becker [Thu, 17 Sep 2020 14:16:44 +0000 (16:16 +0200)]
Fix bundled libpcre2 build regarding the `-fcf-protection` gcc flag

Cf. <https://bugs.exim.org/show_bug.cgi?id=2578>.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Thu, 17 Sep 2020 14:03:26 +0000 (16:03 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix mysqli_release_savepoint() on mysqlnd

4 years agoFix mysqli_release_savepoint() on mysqlnd
Nikita Popov [Thu, 17 Sep 2020 13:59:09 +0000 (15:59 +0200)]
Fix mysqli_release_savepoint() on mysqlnd

mysqli_release_savepoint() was not actually releasing a savepoint...

4 years agoUpdate to PCRE2 10.35
Christoph M. Becker [Thu, 17 Sep 2020 11:44:42 +0000 (13:44 +0200)]
Update to PCRE2 10.35

We also backport the fix for bug #79846, and add a test case for the
related bug #79363.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Thu, 17 Sep 2020 10:37:57 +0000 (12:37 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #80115: mysqlnd.debug doesn't recognize absolute paths with slashes

4 years agoFix #80115: mysqlnd.debug doesn't recognize absolute paths with slashes
Christoph M. Becker [Thu, 17 Sep 2020 10:37:02 +0000 (12:37 +0200)]
Fix #80115: mysqlnd.debug doesn't recognize absolute paths with slashes

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Thu, 17 Sep 2020 09:32:01 +0000 (11:32 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  pdo_mysql/mysqli (native) libmysqlclient_r no-longer used
  mysql: native mysql-8.0 uses _Bool
  mysqli: use native api

4 years agopdo_mysql/mysqli (native) libmysqlclient_r no-longer used
Daniel Black [Sun, 13 Sep 2020 04:09:49 +0000 (14:09 +1000)]
pdo_mysql/mysqli (native) libmysqlclient_r no-longer used

The mysqlclient_r library exists in mysql-5.6 for compatibility only.

Later versions have it removed.

4 years agomysql: native mysql-8.0 uses _Bool
Daniel Black [Sat, 12 Sep 2020 05:29:23 +0000 (15:29 +1000)]
mysql: native mysql-8.0 uses _Bool

MySQL-8.0 removes option MYSQLI_OPT_SSL_VERIFY_SERVER_CERT

4 years agomysqli: use native api
Daniel Black [Sat, 29 Aug 2020 07:18:57 +0000 (17:18 +1000)]
mysqli: use native api

Tested with:
* mysql-5.6.49-linux-glibc2.12-x86_64
* mysql-5.7.31-linux-glibc2.12-x86_64
* mysql-8.0.21-linux-glibc2.17-x86_64
* mariadb-10.5.6

configure --with-mysqli=/usr/local/$version/bin/mysql_config   --with-pdo-mysql=/usr/local/$version

MySQL-8.0 removed my_bool
Some options where deprecated in mysql-8.0

MY_CHARSET_INFO used with exposed api mysql_get_character_set_info
rather than internal structures.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Thu, 17 Sep 2020 08:31:30 +0000 (10:31 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  ext/soap: Compare Set-Cookie header case-insensitively

4 years agoext/soap: Compare Set-Cookie header case-insensitively
Gabríel Arthúr Pétursson [Wed, 16 Sep 2020 14:18:00 +0000 (14:18 +0000)]
ext/soap: Compare Set-Cookie header case-insensitively

Closes GH-6143.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Thu, 17 Sep 2020 08:13:42 +0000 (10:13 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fixed bug #80083

4 years agoFixed bug #80083
Nikita Popov [Thu, 17 Sep 2020 08:12:10 +0000 (10:12 +0200)]
Fixed bug #80083

Add db2_execute() to the list of functions accessing the local
scope. Ideally the API wouldn't do that, but it seems most
pragmatic to address this on the opcache side at this point.

4 years agoFix assumption about property guard hash value
Nikita Popov [Tue, 15 Sep 2020 13:25:22 +0000 (15:25 +0200)]
Fix assumption about property guard hash value

The "member" string here does not necessarily have a pre-calculated
hash value. In particular this is not the case if the class has no
properties.

Fixes oss-fuzz #25546.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Tue, 15 Sep 2020 08:57:39 +0000 (10:57 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  7.3.24 is next

4 years ago7.3.24 is next
Christoph M. Becker [Tue, 15 Sep 2020 08:51:41 +0000 (10:51 +0200)]
7.3.24 is next

4 years agoThe next release here will be 7.4.12
Derick Rethans [Tue, 15 Sep 2020 08:36:57 +0000 (09:36 +0100)]
The next release here will be 7.4.12

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Mon, 14 Sep 2020 20:34:58 +0000 (22:34 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Avoid segfault if module/extension version is not defined

4 years agoAvoid segfault if module/extension version is not defined
Christoph M. Becker [Mon, 14 Sep 2020 20:31:15 +0000 (22:31 +0200)]
Avoid segfault if module/extension version is not defined

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Fri, 11 Sep 2020 12:46:28 +0000 (14:46 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #80067: Omitting the port in bindto setting errors

4 years agoFix #80067: Omitting the port in bindto setting errors
Christoph M. Becker [Wed, 9 Sep 2020 12:28:55 +0000 (14:28 +0200)]
Fix #80067: Omitting the port in bindto setting errors

A recent commit[1] which fixed a memory leak introduced a regression
regarding the formerly liberal handling of IP addresses to bind to.  We
fix this by reverting that commit, and fix the memory leak where it
actually occurs.  In other words, this fix is less intrusive than the
former fix.

[1] <http://git.php.net/?p=php-src.git;a=commit;h=0b8c83f5936581942715d14883cdebddc18bad30>

Closes GH-6104.

4 years agoFix azure i386 build, again
Nikita Popov [Thu, 10 Sep 2020 07:26:51 +0000 (09:26 +0200)]
Fix azure i386 build, again

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Sammy Kaye Powers [Wed, 9 Sep 2020 19:36:51 +0000 (12:36 -0700)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #79825: opcache.file_cache causes SIGSEGV with custom opcode handlers

4 years agoFix #79825: opcache.file_cache causes SIGSEGV with custom opcode handlers
Sammy Kaye Powers [Fri, 10 Jul 2020 17:20:40 +0000 (10:20 -0700)]
Fix #79825: opcache.file_cache causes SIGSEGV with custom opcode handlers

Modules may have changed after restart which can cause dangling pointers from custom opcode handlers in the second-level cache files. This fix includes the installed module names and versions in the accel_system_id hash as entropy. Closes GH-5836

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Tue, 8 Sep 2020 16:07:57 +0000 (18:07 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #72941: Modifying bucket->data by-ref has no effect any longer

4 years agoFix #72941: Modifying bucket->data by-ref has no effect any longer
Christoph M. Becker [Tue, 8 Sep 2020 13:09:30 +0000 (15:09 +0200)]
Fix #72941: Modifying bucket->data by-ref has no effect any longer

To match the PHP 5 behavior, we have to explicitly cater to `buffer` or
`data` being references.

Closes GH-6096.

4 years agoSupport more placeholders in bless_tests.php
Nikita Popov [Tue, 8 Sep 2020 10:16:31 +0000 (12:16 +0200)]
Support more placeholders in bless_tests.php

And don't replace trailing --CLEAN-- sections.

4 years agoRevert "Update libzip on macos"
Nikita Popov [Tue, 8 Sep 2020 07:51:55 +0000 (09:51 +0200)]
Revert "Update libzip on macos"

This reverts commit 090bddb93488b6bcf411e970afe77d96f86f4ac8.

4 years agoRevert "Manually build re2c on macos"
Nikita Popov [Tue, 8 Sep 2020 07:49:19 +0000 (09:49 +0200)]
Revert "Manually build re2c on macos"

This reverts commit 9bbe236f6adead060d83c87a581674f4917db3de.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Tue, 8 Sep 2020 08:01:03 +0000 (10:01 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fixed bug #80077

4 years agoFixed bug #80077
Nikita Popov [Tue, 8 Sep 2020 07:58:35 +0000 (09:58 +0200)]
Fixed bug #80077

Quoting from the bug report:

> The domain names passed to getmxrr() do not contain a trailing dot.
> DNS lookups which do not find records will (depending on the local
> resolver config) try again by adding the local domain to the end of
> the searched host/domain. In many environments there's an mx record
> for any subdomain of the local domain and the MX query will return
> a hit. But the test expects no hit. So the test fails when checking
> that "qa.php.net" does not have an MX record in DNS. In our local
> environment the resolver falls back to also check qa.php.net.kippdata.de
> which does have an MX record. Using "qa.php.net." instead of "qa.php.net"
> should fix this for everyone.

4 years agoDon't leave behind temporary file in bug70362.phpt
Nikita Popov [Mon, 7 Sep 2020 14:15:44 +0000 (16:15 +0200)]
Don't leave behind temporary file in bug70362.phpt

4 years agoFix azure i386 build
Nikita Popov [Sat, 5 Sep 2020 19:39:39 +0000 (21:39 +0200)]
Fix azure i386 build

Looks like pgsql on i386 broke even more.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Fri, 4 Sep 2020 08:59:41 +0000 (10:59 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Avoid duplicate octal warning during heredoc scan ahead

4 years agoAvoid duplicate octal warning during heredoc scan ahead
Nikita Popov [Fri, 4 Sep 2020 08:58:51 +0000 (10:58 +0200)]
Avoid duplicate octal warning during heredoc scan ahead

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Thu, 3 Sep 2020 15:12:50 +0000 (17:12 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fixed bug #80049

4 years agoFixed bug #80049
Nikita Popov [Thu, 3 Sep 2020 15:10:34 +0000 (17:10 +0200)]
Fixed bug #80049

Type checking may convert to refcounted values, so force freeing
of extra args.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Thu, 3 Sep 2020 13:44:38 +0000 (15:44 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #80048: Bug #69100 has not been fixed for Windows

4 years agoFix #80048: Bug #69100 has not been fixed for Windows
Christoph M. Becker [Thu, 3 Sep 2020 12:27:45 +0000 (14:27 +0200)]
Fix #80048: Bug #69100 has not been fixed for Windows

We fix the erroneous length calculation on Windows, too.

Closes GH-6067.

4 years agoFixed bug #80046
Nikita Popov [Thu, 3 Sep 2020 09:16:50 +0000 (11:16 +0200)]
Fixed bug #80046

We already protect against optimizing away loop frees in DFA pass,
but not in block pass.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Thu, 3 Sep 2020 08:30:39 +0000 (10:30 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Skip test if A: drive exists

4 years agoSkip test if A: drive exists
Christoph M. Becker [Thu, 3 Sep 2020 08:26:05 +0000 (10:26 +0200)]
Skip test if A: drive exists

Otherwise the test case will fail for a very different reason.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Thu, 3 Sep 2020 07:51:35 +0000 (09:51 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Handle memory limit error during string reallocation correctly

4 years agoHandle memory limit error during string reallocation correctly
Nikita Popov [Thu, 3 Sep 2020 07:45:54 +0000 (09:45 +0200)]
Handle memory limit error during string reallocation correctly

Do not decrement the refcount before allocating the new string,
as the allocation operation may bail out and cause a use-after-free
lateron. We can only decrement the refcount once the allocation
has succeeded.

Fixes oss-fuzz #25384.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Wed, 2 Sep 2020 14:45:57 +0000 (16:45 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix binary-safety of parse_url

4 years agoFix binary-safety of parse_url
Nikita Popov [Wed, 2 Sep 2020 14:43:00 +0000 (16:43 +0200)]
Fix binary-safety of parse_url

php_parse_url() is intended to support strings that are not zero
terminated. We can't use strcspn in the implementation.

As we have two uses of strcspn, add a helper.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Wed, 2 Sep 2020 08:53:13 +0000 (10:53 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix throwing of yield from related exceptions into generator

4 years agoFix throwing of yield from related exceptions into generator
Nikita Popov [Wed, 2 Sep 2020 08:50:14 +0000 (10:50 +0200)]
Fix throwing of yield from related exceptions into generator

Use the general zend_generator_throw_exception() helper for this.
Otherwise we don't handle the off-by-one opline correctly (should
we maybe just stop doing that?)

This is a followup to ad750c3bb6e7b48384c6265eb9d3bcf5b4000652,
which fixed a different yield from exception handling problem that
happened to show up in the same test case from oss-fuzz #25321.
Now both issues should be fixed.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Wed, 2 Sep 2020 08:16:35 +0000 (10:16 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix infinite loop on string offset during by-ref list assign

4 years agoFix infinite loop on string offset during by-ref list assign
Nikita Popov [Wed, 2 Sep 2020 08:13:42 +0000 (10:13 +0200)]
Fix infinite loop on string offset during by-ref list assign

There is a deeper underlying issue here, in that the opcodes violate
VM write-fetch safety, but let's fix the infinite loop first.

This fixes oss-fuzz #25352.

4 years agoCheck for null EX(func) in write_property
Nikita Popov [Tue, 1 Sep 2020 13:14:32 +0000 (15:14 +0200)]
Check for null EX(func) in write_property

This can happen if zend_call_function inserted a dummy frame,
and we already switched to the dummy frame in leave_helper,
and an exception is thrown during CV destruction.

Fixes oss-fuzz #25343.

4 years agoFix pi node removal when removing predecessor
Nikita Popov [Tue, 1 Sep 2020 10:22:56 +0000 (12:22 +0200)]
Fix pi node removal when removing predecessor

We can't just remove the uses, we need to replace uses.

The test case only fails on master with SSA integrity violations,
but I believe the root issue also existed previously.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Mon, 31 Aug 2020 15:05:44 +0000 (17:05 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix leak on assign concat of array and empty string

4 years agoFix leak on assign concat of array and empty string
Nikita Popov [Mon, 31 Aug 2020 15:03:27 +0000 (17:03 +0200)]
Fix leak on assign concat of array and empty string

4 years agoFix leak on consteval exception in ReflectionClass::__toString()
Nikita Popov [Mon, 31 Aug 2020 13:10:09 +0000 (15:10 +0200)]
Fix leak on consteval exception in ReflectionClass::__toString()

4 years agoCheck update constant failure in ReflectionClassConstant::__toString()
Nikita Popov [Mon, 31 Aug 2020 12:49:16 +0000 (14:49 +0200)]
Check update constant failure in ReflectionClassConstant::__toString()

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Derick Rethans [Mon, 31 Aug 2020 11:31:44 +0000 (12:31 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

4 years agoFixed test case
Derick Rethans [Mon, 31 Aug 2020 11:31:23 +0000 (12:31 +0100)]
Fixed test case

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Derick Rethans [Mon, 31 Aug 2020 10:41:57 +0000 (11:41 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

4 years agoUpdate timelib to 2018.04
Derick Rethans [Mon, 31 Aug 2020 10:41:41 +0000 (11:41 +0100)]
Update timelib to 2018.04

4 years agoFix bug #80037
Nikita Popov [Mon, 31 Aug 2020 10:17:00 +0000 (12:17 +0200)]
Fix bug #80037

If we're accessing an uninitialized typed property and __get is
defined, don't perform a read_property callback, as __get is
supposed to have no effect on uninitialized typed properties.
Usually it doesn't, but by-reference assignments cannot be
performed through read_property.

I'm deleting the test for bug #80039 again, as it doesn't really
make sense anymore with this fix.

4 years agoAdd test for bug #80039
Nikita Popov [Mon, 31 Aug 2020 09:22:16 +0000 (11:22 +0200)]
Add test for bug #80039

This has already been fixed by 247105ae1ae2a04608078f7fcfe88dacab9f55a4,
but let's add the additional test case.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Matteo Beccati [Mon, 31 Aug 2020 09:08:26 +0000 (11:08 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #80027 Terrible performance using $query->fetch on queries with many bind parameters

4 years agoFix #80027 Terrible performance using $query->fetch on queries with many bind parameters
Matteo Beccati [Mon, 31 Aug 2020 08:45:36 +0000 (10:45 +0200)]
Fix #80027 Terrible performance using $query->fetch on queries with many bind parameters

Added new flags that allow skipping param_evt(s) that are not used by drivers,
in a backwards and forward compatible manner. Updated the pgsql, mysql, sqlite
and oci drivers to properly use the new flags. I've left out pdo_dblib, which
doesn't have a param_hook, and pdo_firebird, which seems to be using
PARAM_EVT_NORMALIZE in a wrong context (param type vs event type).

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Mon, 31 Aug 2020 08:51:49 +0000 (10:51 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix handling of exception if valid() during yield from

4 years agoFix handling of exception if valid() during yield from
Nikita Popov [Mon, 31 Aug 2020 08:51:00 +0000 (10:51 +0200)]
Fix handling of exception if valid() during yield from

Fixes oss-fuzz #25296.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Mon, 31 Aug 2020 07:32:40 +0000 (09:32 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Make MAX_IFD_NESTING_LEVEL an actual nesting level

4 years agoMake MAX_IFD_NESTING_LEVEL an actual nesting level
Nikita Popov [Wed, 12 Aug 2020 08:09:37 +0000 (10:09 +0200)]
Make MAX_IFD_NESTING_LEVEL an actual nesting level

Currently we only ever increment ifd_nesting_level, so this ends up
being a limit on the total number of IFD tags and we regularly get
bug reports of it being exceeded. I think the intention behind this
limit was to prevent recursion stack overflow, and for that we only
need to check actual recursive usage. I've implemented that here,
and dropped the nesting limit down to a smaller value
(which still passes our tests).

However, it seems that we do also need to have a total limit on
the number of tags, as we don't catch some instances of infinite
looping otherwise. Add this as a separate limit with a higher
value, that should hopefully be sufficient.

This is expected to fix a number of bugs:

https://bugs.php.net/bug.php?id=78083
https://bugs.php.net/bug.php?id=78701
https://bugs.php.net/bug.php?id=79907
https://bugs.php.net/bug.php?id=80016

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
twosee [Sun, 30 Aug 2020 08:25:12 +0000 (16:25 +0800)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Improve error_handing replacement functions

4 years agoImprove error_handing replacement functions
twosee [Thu, 27 Aug 2020 16:54:46 +0000 (00:54 +0800)]
Improve error_handing replacement functions

We explicitly skip calls to user_error_handler in EH_THROW mode

Closes GH-6050.

4 years agoDon't assert when comparing uninit DateTimeZone objects
Nikita Popov [Thu, 27 Aug 2020 14:18:45 +0000 (16:18 +0200)]
Don't assert when comparing uninit DateTimeZone objects

Nothing guarantees that the objects are initialized here... just
check as usual.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Thu, 27 Aug 2020 13:51:35 +0000 (15:51 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Require non-negative length in stream_get_contents()

4 years agoRequire non-negative length in stream_get_contents()
Nikita Popov [Thu, 27 Aug 2020 13:49:33 +0000 (15:49 +0200)]
Require non-negative length in stream_get_contents()

If the length is not -1, require it to be non-negative.

Using such lengths doesn't make sense (as only -1 is special-case
to read in chunks, anything else will end up doing a huge upfront
allocation) and can lead to string allocation overflow.

A similar check is already in place for file_get_contents(). That
one does not allow -1 (and uses null instead), but this function
is explicitly specified to accept -1, so stick to that behavior.

4 years agoCatch potential exceptions during to string conversion
Christoph M. Becker [Tue, 25 Aug 2020 13:40:17 +0000 (15:40 +0200)]
Catch potential exceptions during to string conversion

As of PHP 7.4.0, exceptions are allowed to be thrown from inside
`__toString()` methods; we have to cater to that, and catch these
exceptions early.

Closes GH-6042

4 years agoProperty handle read_property exception in fetch_property_address
Nikita Popov [Wed, 26 Aug 2020 14:10:29 +0000 (16:10 +0200)]
Property handle read_property exception in fetch_property_address

Otherwise we leak (and corrupt uninitialized_zval).

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Wed, 26 Aug 2020 13:40:57 +0000 (15:40 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix com_safearray_proxy related memory management issues

4 years agoFix com_safearray_proxy related memory management issues
Christoph M. Becker [Wed, 26 Aug 2020 13:31:26 +0000 (15:31 +0200)]
Fix com_safearray_proxy related memory management issues

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Wed, 26 Aug 2020 13:01:22 +0000 (15:01 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Separate COM::__construct()s $server_name array

4 years agoSeparate COM::__construct()s $server_name array
Christoph M. Becker [Tue, 25 Aug 2020 11:48:50 +0000 (13:48 +0200)]
Separate COM::__construct()s $server_name array

This may otherwise be modified.

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Wed, 26 Aug 2020 12:52:09 +0000 (14:52 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #64130: COM obj parameters passed by reference are not updated

4 years agoFix #64130: COM obj parameters passed by reference are not updated
Christoph M. Becker [Wed, 26 Aug 2020 12:45:13 +0000 (14:45 +0200)]
Fix #64130: COM obj parameters passed by reference are not updated

`ITypeInfo_GetIDsOfNames()` is supposed to fail with `E_NOTIMPL` for
out-of-process servers, thus we should not remove the already available
typeinfo of the object in this case.

We also properly free the `byref_vals`.

4 years agoFix file name clash in test
Nikita Popov [Wed, 26 Aug 2020 10:32:06 +0000 (12:32 +0200)]
Fix file name clash in test

4 years agoAvoid socket path clash in test
Nikita Popov [Wed, 26 Aug 2020 10:11:22 +0000 (12:11 +0200)]
Avoid socket path clash in test

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Wed, 26 Aug 2020 09:32:31 +0000 (11:32 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix memory leak when yielding from non-iterable

4 years agoFix memory leak when yielding from non-iterable
Nikita Popov [Wed, 26 Aug 2020 09:32:01 +0000 (11:32 +0200)]
Fix memory leak when yielding from non-iterable