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

122998 Commits

Author SHA1 Message Date
Derick Rethans e3bb2c9d9a Merge branch 'PHP-8.0' 2021-02-16 11:27:24 +00:00
Derick Rethans f73e419996 Merge branch 'PHP-7.4' into PHP-8.0 2021-02-16 11:27:17 +00:00
Derick Rethans 6d3d9104e6 PHP-7.4 is now 7.4.17-dev 2021-02-16 11:26:47 +00:00
Dmitry Stogov f8cf7152a9 Microoptimization of STRLEN and IN_ARRAY opcodes (based on https://github.com/php/php-src/pull/4981) 2021-02-16 14:11:47 +03:00
Nikita Popov eb8ad30cf1 Fix quadratic slowdown under asan in timelib
This is a hotfix for https://github.com/derickr/timelib/pull/94
until the issue is resolved upstream.
2021-02-16 11:56:17 +01:00
Florian Sowade c4d508c2bc Add dependency tracking for header files
This ensures all .c files which include a header file directly or
indirectly are rebuilt whenever the header file is changed.

Closes GH-6693.
2021-02-16 10:50:03 +01:00
Alexander Moskalev e727919b97 cURL: make possible to send file from buffer string
Add CURLStringFile class which works similarly to CURLFile, but
uploads a file from a string rather than a file. This avoids the
need to create a temporary file, or use of a data:// stream.

Basic usage:

    $file = new CURLStringFile($data, 'filename.txt', 'text/plain');
    curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => $file]);

Closes GH-6456.
2021-02-16 10:24:22 +01:00
Nikita Popov d16341dabe Merge branch 'PHP-8.0'
* PHP-8.0:
  Increase timeout on asan job
2021-02-16 10:16:13 +01:00
Nikita Popov 2d7ada2c0b Increase timeout on asan job
Regularly runs against the 5:10 hour limit on master. Increase it
to 6:00 hours.
2021-02-16 10:15:08 +01:00
Nikita Popov 45e6dc7beb Merge branch 'PHP-8.0'
* PHP-8.0:
  Suppress OpenSSL error on missing optional config
2021-02-16 10:12:59 +01:00
Nikita Popov 4fb8252186 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Suppress OpenSSL error on missing optional config
2021-02-16 10:12:42 +01:00
Nikita Popov 7566742754 Suppress OpenSSL error on missing optional config
openssl_pkey_new() fetches various options from the config file --
most of these are optional, and not specifying them is not an error
condition from the perspective of the user. Unfortunately, the
CONF_get_string() API pushes an error when accessing a key that
doesn't exist (_CONF_get_string does not, but that is presumably a
private API). This commit adds a helper php_openssl_conf_get_string()
that automatically clears the error in this case. I've found that
OpenSSL occasionally does the same thing internally:
https://github.com/openssl/openssl/blob/22040fb790c854cefb04bed98ed38ea6357daf83/apps/req.c#L515-L517

Closes GH-6699.
2021-02-16 10:11:00 +01:00
Nikita Popov 353f7ffb6b Delref only after successful allocation
Otherwise we may have inconsistent refcounts after OOM.

I expect this problem is much more prevalent, but this at least
fixes some string/array separation cases.

Fixes oss-fuzz #30999.
2021-02-16 10:01:46 +01:00
Christoph M. Becker 0cdc634fc4 Merge branch 'PHP-8.0'
* PHP-8.0:
  Adapt test case for libcurl 7.75.0+
2021-02-16 00:30:03 +01:00
Christoph M. Becker afe17cc1b6 Adapt test case for libcurl 7.75.0+
libcurl 7.75.0 finally adds support for `gophers://`, i.e. gopher over
TLS.  The protocol is neither standardized, nor is the protocol
registered with IANA, but well, it is there and the test case should
cater to that.
2021-02-16 00:28:34 +01:00
Nikita Popov 5f0b995e6c Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed bug #80747
2021-02-15 15:34:54 +01:00
Nikita Popov f43097a2d7 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fixed bug #80747
2021-02-15 15:34:21 +01:00
Nikita Popov 64b1085464 Fixed bug #80747
If RSA key generation fails, actually report that failure.
2021-02-15 15:34:01 +01:00
Nikita Popov e70f1b0488 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix symtable cache being used while cleaning symtable
2021-02-15 14:59:07 +01:00
Nikita Popov 882862563a Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fix symtable cache being used while cleaning symtable
2021-02-15 14:58:59 +01:00
Nikita Popov 7b7d99839c Fix symtable cache being used while cleaning symtable
We need to first clean the symtable and then check whether a cache
slot is available for it. Otherwise, it may happen that a destructor
runs while cleaning the table and uses up all the remaining slots
in the cache.

This is particularly insidious because once we overflow the cache,
the first pointer we modify is symtable_cache_ptr, making it hard
to understand what happened after the fact.

Fixes oss-fuzz #30815.
2021-02-15 14:58:38 +01:00
Nikita Popov 643a727c37 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix assertion failure in cufa optimization with named args
2021-02-15 12:43:50 +01:00
Nikita Popov c70220205e Fix assertion failure in cufa optimization with named args
Fixes oss-fuzz#30764.
2021-02-15 12:43:31 +01:00
Nikita Popov c91ea947b2 Use typed proprety for Transliterator::$id
This is a read-only property for which Transliterator internally
assigns a string value.

Also clean up the code handling this property a bit.
2021-02-15 12:27:25 +01:00
Nikita Popov 2ccf630917 Used typed properties for reflection $name and $class
These are read-only properties, and Reflection makes sure to assign
only strings.
2021-02-15 12:09:18 +01:00
Máté Kocsis a730dc0cf9 Generate class entries for snmp, soap, sockets, sodium, sqlite3, sysv*, tidy
Closes GH-6696
2021-02-15 11:45:26 +01:00
Nikita Popov f01ad22bab Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix #78680: mysqlnd pam plugin missing terminating null
2021-02-15 11:33:01 +01:00
Nikita Popov 8b9dd0a301 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fix #78680: mysqlnd pam plugin missing terminating null
2021-02-15 11:32:54 +01:00
Daniel Black 3646604203 Fix #78680: mysqlnd pam plugin missing terminating null
The PAM service requires the terminating null to be part
of the communication.

Tested with MariaDB-10.4(pam) and Percona Server 5.7.32(auth_pam_compat).

Also changed MySQL Enterprise test to the server side plugin, authentication_pam
as opposed to the client plugin mysql_clear_password.

Add additional check for pamtest user and pam service file as
all are required for the test.

More importantly, test result should actually succeed.

Thanks Geoff Montee for bug report.

Closes GH-78680.
2021-02-15 11:32:07 +01:00
David Carlier fe01a7c515 Avoid repeatedly calling strlen in FPM setproctitle implementation
Closes GH-6689.
2021-02-15 11:29:18 +01:00
Nikita Popov 549235d327 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix leak when breaking out of FilesystemIterator
  Fixed bug #80600
2021-02-15 10:38:32 +01:00
Nikita Popov 8e9eeca0b3 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fix leak when breaking out of FilesystemIterator
2021-02-15 10:38:21 +01:00
Nikita Popov 44a80b64b9 Fix leak when breaking out of FilesystemIterator
We need to always destroy current, not just when iter.data is not
set.

Take this opportunity to clean up the iterator destructor code a
bit, to remove redundant checks and incorrect comments.
2021-02-15 10:37:59 +01:00
Dmitry Stogov 15f713bd85 Persist class name before methods, because it may be used insted of "self" 2021-02-15 12:33:53 +03:00
Max Semenik 1f3f7c4374 CI: add --depth 1 to git clone for speed
Closes GH-6690.
2021-02-15 09:49:50 +01:00
David CARLIER 2b93ae601a Use VM_MAKE_TAG for macos memory tag
In case Apple changes the meaning of the macro in the future.

Closes GH-6687.
2021-02-15 09:48:04 +01:00
Max Semenik b11771271e Remove stray mentions of mbstring.func_overload
This feature has been completely removed.

Closes GH-6688.
2021-02-15 09:47:28 +01:00
Christopher Jones 843198eb84 Fix failures due to new deprecations 2021-02-15 12:17:46 +11:00
Máté Kocsis 5b5bfd6be4 Generate class entries from stubs for phar, posix, pspell, readline, reflection, session, shmop
Closes GH-6692
2021-02-15 00:11:22 +01:00
Máté Kocsis af56982a5e Generate class entries from stubs for oci8, odbc, openssl, pcntl, pdo, pgsql
Closes GH-6691
2021-02-14 23:19:21 +01:00
Máté Kocsis 6ce70447ac Generate zend class entries based on stubs
Closes GH-6685
2021-02-14 23:18:28 +01:00
Máté Kocsis 31088eef45 Enable class entry generation for sapi extensions 2021-02-14 12:03:48 +01:00
Tyson Andre 8ffc20ace6 Optimize Traversable unpacking in zend_vm_def.h
The C compiler sees that a dynamic function is being called, so it cannot infer
that iter->funcs has not changed.

This results in more assembly instructions and slightly more time to execute that code
path.

Unpacking traversables to arrays(`ZEND_ADD_ARRAY_UNPACK`),
starting foreach loops (`ZEND_FE_FETCH*`), etc. are affected.

```
<?php
/*
 * Before: 1.576 seconds
 * After:  1.474 seconds
 */
function example() {
    $start = hrtime(true);
    $it = new SplFixedArray(1000);
    $total = 0;
    for ($i = 0; $i < 100000; $i++) {
        $total += count([...$it]);
    }
    $end = hrtime(true);
    printf("Elapsed: %.6f\n", ($end - $start) / 1_000_000_000);
}
example();
```
2021-02-13 09:34:48 -05:00
Benjamin Eberlei 6ec25f386f Fixed bug #80600 2021-02-12 17:16:48 +01:00
Nikita Popov f74a02d263 Revert "Implement fetching TLS TCB offset on MacOS"
This reverts commit 1106ff9a0e.

Looks like this sauses segfaults on MacOs ZTS with JIT.
2021-02-12 15:16:05 +01:00
Nikita Popov b10416a652 Deprecate passing null to non-nullable arg of internal function
This deprecates passing null to non-nullable scale arguments of
internal functions, with the eventual goal of making the behavior
consistent with userland functions, where null is never accepted
for non-nullable arguments.

This change is expected to cause quite a lot of fallout. In most
cases, calling code should be adjusted to avoid passing null. In
some cases, PHP should be adjusted to make some function arguments
nullable. I have already fixed a number of functions before landing
this, but feel free to file a bug if you encounter a function that
doesn't accept null, but probably should. (The rule of thumb for
this to be applicable is that the function must have special behavior
for 0 or "", which is distinct from the natural behavior of the
parameter.)

RFC: https://wiki.php.net/rfc/deprecate_null_to_scalar_internal_arg

Closes GH-6475.
2021-02-11 21:46:13 +01:00
Nikita Popov f06895488a Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed bug #80718
2021-02-11 16:50:14 +01:00
Nikita Popov 5199686873 Fixed bug #80718 2021-02-11 16:49:39 +01:00
Nikita Popov f0b387d1e4 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed bug #80719
2021-02-11 16:14:12 +01:00
Nikita Popov 226395a335 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fixed bug #80719
2021-02-11 16:13:56 +01:00