Commit graph

65901 commits

Author SHA1 Message Date
David Carlier
037855fcd3 ext/intl: level up c++ runtime std for icu 74 and onwards.
to align with what is required to build icu 74 itself.

Close GH-13422.
2024-02-21 16:11:47 +00:00
David Carlier
211dc60044 ext/intl: adding new UCHAR_IDS_UNARY_OPERATOR/UCHAR_ID_COMPAT_MATH_START/UCHAR_ID_COMPAT_MATH_CONTINUE.
Close GH-13420.
2024-02-21 16:11:09 +00:00
David Carlier
22a3866f0c ext/intl: Timezone::getIanaID method addition.
returns the primary IANA zone ID from the provided timezone ID.
Most of the time, timezone ID==IANA ID.
available from icu >= 74.

Close GH-13419.
2024-02-21 16:09:22 +00:00
Peter Kokot
e72f0c887b
Simplify prctl and procctl Autoconf checks (#13450)
The AC_CHECK_FUNCS checks whether the linker sees the function in the
usual libraries, in this case libc. This is a simple trick to also check
existence of belonging headers, since the code uses HAVE_PRCTL and
HAVE_PROCCTL to include headers and call functions.
2024-02-21 09:04:37 +01:00
Ayesh Karunaratne
ba0f9fb501
ext/curl: Add feature_info assoc array to curl_version() (#13439)
The `phpinfo()` section of the Curl extension lists individual features
supported by the particular ext-Curl + libcurl build. However, the
`curl_version()` function return values do not indicate the same level of
details.

`curl_version()` has a `protocols` key that returns an array of all protocols
supported by the build. But the `features` key is a bitmask of all the features.
Checking the availability of certain feature requires knowing the corresponding
`CURL_VERSION` constant, and checking the availability of the constant and a
bitmask check for it in the `features` value.

For example, to determine HTTP2 support, it requires evaluating:

```php
defined('CURL_VERSION_HTTP2') && (curl_version()['features'] & CURL_VERSION_HTTP2 === CURL_VERSION_HTTP2)
```

To make feature availability checks more intuitive, this adds a new
`feature_list` key to `curl_version()` output array.

With it, checking for individual features availability is easier, and does
not require inspecting the availability of the `CURL_VERSION` constant and
the `features` key.

```php
!empty(curl_version()['feature_list']['HTTP2']);
```
2024-02-21 00:46:22 +00:00
Jorg Adam Sowa
e630aacf79
Remove HAVE_INET_PTON (#13410) 2024-02-21 00:43:56 +00:00
Dmitry Stogov
f5efaa39fa Update IR
IR commit: 873f13dd933acc38ba4cfe2a4aa8558867992a7e
2024-02-21 01:48:38 +03:00
Dmitry Stogov
23aac16d13 Update IR
IR commit: 67477a78251aafe35515eb7a339e309a0e0d4919
2024-02-21 01:13:31 +03:00
Peter Kokot
b41a5023f9
Remove malloc.h (#13436)
This removes the deprecated malloc.h header Autoconf check on *nix
systems and its HAVE_MALLOC_H symbol. It can be replaced mostly with the
stdlib.h. The libgd usptream also doesn't include it anymore.

On Windows, it is still used for some memory allocation functions, but
can be replaced with stdlib.h in the future.
2024-02-20 18:02:54 +01:00
Peter Kokot
056c43f848 [skip ci] Sync file permissions in Git repository
Git can track executable (0755) and non-executable (0644) file modes.
This is a minor file permissions sync across the php-src Git repository.

- build/config.guess (0755 as done upstream)
- build/config.sub (0755 as done upstream)
- ext/*/?*.stub.php (0644)
- ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk (0755 due to shebang usage)
2024-02-20 17:58:47 +01:00
Peter Kokot
0ddc3a23fa [skip ci] Fix Intel CET check in ext/pcre
This adds test program body `int main(void) { return 0; }` and fixes the
configure step with cache enabled (`configure -C`).
2024-02-19 14:25:40 +01:00
Dmitry Stogov
e3683ea479 Merge branch 'PHP-8.3'
* PHP-8.3:
  Prevent recording traces started from usupported VM instruction
2024-02-19 13:23:14 +03:00
Dmitry Stogov
00259952e4 Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Prevent recording traces started from usupported VM instruction
2024-02-19 13:23:05 +03:00
Dmitry Stogov
728b81d92e Prevent recording traces started from usupported VM instruction 2024-02-19 13:22:30 +03:00
Ilija Tovilo
fd47cd8b69
[skip ci] Fix ldap skipif 2024-02-19 10:16:13 +01:00
Peter Kokot
711e452037
Rename HAVE_PHP_SOAP symbol on Windows ext/soap (#13426)
This syncs the symbol name with the *nix build, where HAVE_SOAP is
defined.
2024-02-18 18:01:12 +01:00
Niels Dossche
60518e9695
Update error handling when node cannot be added (#13421)
This can only fail on OOM, so be consistent with the other locations and
throw an INVALID_STATE_ERR.
2024-02-18 15:35:41 +01:00
Kamil Tekiela
50598a7097
Tidy up pdo_mysql_attr_max_buffer_size.phpt 2024-02-18 13:09:19 +01:00
Saki Takamachi
d433035319
Fixed tests for libmysql (#13424) 2024-02-18 13:08:31 +01:00
Kamil Tekiela
1d45357409
Tidy up UT and add NEWS entry 2024-02-18 12:47:30 +01:00
Saki Takamachi
68f10504de
Fixed GH-13167 Fixed the behavior of bindValue and bindParam. (#13384)
Fixed to generate an error when a non-scalar value is passed in
`PDO_PARAM_EVT_EXEC_PRE` of `pdo_mysql_stmt_param_hook` unless
it is a `Stringable` object.
2024-02-18 12:10:21 +01:00
Máté Kocsis
10957e498c
Do not generate frameless info items when func info generation is disabled
While here, I fixed newlines around arginfo and function entry generation. Previously, newlines were repeated.
2024-02-18 11:39:00 +01:00
Máté Kocsis
90bf429bae
Remove unused register_html_constants() function 2024-02-18 09:17:04 +01:00
Ilija Tovilo
9f1b43f508
Merge branch 'PHP-8.3'
* PHP-8.3:
  Disable JIT on Apple Silicon + ZTS
2024-02-18 00:08:52 +01:00
Ilija Tovilo
f057d2b138
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Disable JIT on Apple Silicon + ZTS
2024-02-18 00:08:42 +01:00
Ilija Tovilo
6db95512b4
Disable JIT on Apple Silicon + ZTS
Apple Silicon has stricter rules about rwx mmap regions. They need to be created
using the MAP_JIT flag. However, the MAP_JIT seems to be incompatible with
MAP_SHARED. ZTS requires MAP_SHARED so that some threads may execute code from a
page while another writes/appends to it. We did not find another solution, other
than completely disabling JIT for Apple Silicon + ZTS.

See discussion in https://github.com/php/php-src/pull/13351.

Co-authored-by: Peter Kokot <peterkokot@gmail.com>
Fixes GH-13400
Closes GH-13396
2024-02-18 00:07:46 +01:00
Saki Takamachi
ed1c9d8954
ext/standard: Add more tests to round() (#13399) 2024-02-17 13:44:55 +00:00
Niels Dossche
ae5beff61b
Upgrade bundled pcre2lib to 10.43 (#13413) 2024-02-17 14:15:04 +01:00
David CARLIER
09415077f9
ext/ldap: few new unit tests (tls13 protocol). (#13409) 2024-02-16 18:26:08 +00:00
Jorg Adam Sowa
e7b1f2a95b
Change long2ip return type (#13395) 2024-02-16 17:11:18 +01:00
Peter Kokot
b5c3cbf94b
Check sockaddr_storage.ss_family with AC_CHECK_MEMBERS (#13407)
This simplifies the check. On AIX 6 and newer, the ss_family is
available, if compiled without defining COMPAT_43 (BSD 4.3
compatibility).
2024-02-16 14:24:55 +01:00
Peter Kokot
25923987b5
Refactor PHP_SOCKADDR_CHECKS (#13406)
Instead of the project macro, the sockaddr_storage and sockaddr.sa_len
can be checked with the AC_CHECK_TYPES and AC_CHECK_MEMBERS by including
the sys/socket.h. Some systems (~1988) didn't include the sys/types.h in
the socket.h (obsolete on current systems).

These macros by default define the HAVE_STRUCT_SOCKADDR_STORAGE and
HAVE_STRUCT_SOCKADDR_SA_LEN.
2024-02-16 13:29:20 +01:00
Dmitry Stogov
1f7cba2fec Update IR
IR commit: 89989794a25ac43778398545b32d030dddc0e8b1
2024-02-16 01:00:46 +03:00
Steve Wall
f6016c702f ext/ldap: Add LDAP_OPT_X_TLS_PROTOCOL_MAX and LDAP_OPT_X_TLS_PROTOCOL_TLS1_3
close GH-13405.
2024-02-15 21:43:46 +00:00
Niels Dossche
87abd500e3
Fix 32-bit fileinfo (#13404)
libmagic 5.45 has a regression on 32-bit that is fixed in current HEAD,
but that's not released yet. Pull in the upstream fix [1].

[1] 218fdf813f
2024-02-15 20:47:49 +01:00
Dmitry Stogov
ce96aa9188 Update IR
IR commit: f7c0ddb1b4630e1287b0239f85d64a6965dfea29
2024-02-14 23:57:22 +03:00
Peter Kokot
1e770d12c2
Use Autoconf AC_CHECK_TYPE for checking siginfo_t (#13389)
The siginfo_t is defined by including the signal.h. Some systems include
the siginfo.h in the signal.h. Including it separately is obsolete on
current systems.
2024-02-14 13:56:24 +01:00
Peter Kokot
b222c020bf
Fix linking ext/curl against OpenSSL (#13262)
Following 68f6ab7113, the ext/curl doesn't
need to be linked against OpenSSL anymore, if curl_version_info_data
ssl_version is OpenSSL/1.1 or later.

With OpenSSL 3 and later the check for old SSL crypto locking callbacks
was detected here.

This also uses a common PHP_SETUP_OPENSSL macro for checking OpenSSL and
syncs the minimum OpenSSL version (currently 1.0.2 or later) across the
PHP build system.
2024-02-14 13:52:01 +01:00
Máté Kocsis
844c1ac962
Add missing --EXTENSIONS-- section from frameless function inference test 2024-02-13 22:54:21 +01:00
haszi
e957e25c1c
Move constants from dir.c to stub file (#13312) 2024-02-13 22:07:15 +01:00
Niels Dossche
5941cdaaad
Fix ZTS crashes with persistent resources in modules (#13381)
On shutdown in ZTS the following happens:
- https://github.com/php/php-src/blob/master/Zend/zend.c#L1124-L1125
  gets executed. This destroys global persistent resources and destroys
  the modules. Furthermore, the modules are unloaded too.
- Further down, `ts_free_id(executor_globals_id)` gets executed, which
  calls `executor_globals_dtor`. This function destroys persistent
  resources for each thread.

Notice that in the last step, the modules that the persistent resource
belong to may already have been destroyed. This means that accessing
globals will cause a crash (I previously fixed this with ifdef magic),
or when the module is dynamically loaded we'll try jumping to a
destructor that is no longer loaded in memory. These scenarios cause
crashes.

It's not possible to move the `ts_free_id` call upwards, because that
may break assumptions of callers, and furthermore this would deallocate
the executor globals structure, which means that any access to those
will cause a segfault.

This patch adds a new API to the TSRM that allows running a callback on
a certain resource type. We use this API to destroy the persistent
resources in all threads prior to the module destruction, and keep the
rest of the resource dtor intact.

I verified this fix on Apache with postgres, both dynamically and
statically.

Fixes GH-12974.
2024-02-13 21:43:03 +01:00
Niels Dossche
be34b96975 Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix GH-13344: finfo::buffer(): Failed identify data 0:(null)
2024-02-13 21:21:07 +01:00
Niels Dossche
e71b597f4d Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix GH-13344: finfo::buffer(): Failed identify data 0:(null)
2024-02-13 21:15:37 +01:00
Niels Dossche
c2b671cb1b Fix GH-13344: finfo::buffer(): Failed identify data 0:(null)
Credits to ranvis for finding the upstream commit that fixes the issue.

This backports 029b82459e

Closes GH-13370.
2024-02-13 21:13:43 +01:00
Niels Dossche
b7c5813c98
Update libmagic to 5.45 (#13369)
* Update libmagic to 5.45

This also cleans up magicdata.patch: changes that are already in upstream file
were removed from that patch file.

There are five (expected) test output changes.
All these were also checked with the file command.

  - bug77961.phpt changes because there's now an early error-return in the
    `if (ts == FILE_BADSIZE) {` branch.
  - cve-2014-1943.phpt and cve-2014-1943-mb.phpt change because now the crafted
    data is recognised as a simh file.
  - bug71434.phpt now properly recognises it as a Python file.
  - ext/fileinfo/tests/finfo_file_basic.phpt more specific mime type.

* Adjust memory requirement for s390x fileinfo run

The larger database causes a higher memory usage.
Similar to 962c082a5b.

* [ci skip] NEWS
2024-02-13 21:11:57 +01:00
haszi
20c49f8524
Move PASSWORD constants to stubs (#13349) 2024-02-12 22:37:32 +01:00
Michael Voříšek
87edeed3b9
Remove UNEXPECTED from typed prop checks
Closes GH-13143
2024-02-12 11:35:43 +01:00
Dmitry Stogov
2289af889c Update IR
IR commit: ab6ebce1cc25f7d2c634bd13af043f76d6ef524e
2024-02-12 12:24:48 +03:00
Dmitry Stogov
a3620cd6e7 Update IR
IR commit: d2ab283e3c3bb4b5ba21701a4d18f14fd9b3d798
2024-02-12 09:36:33 +03:00
Dmitry Stogov
71cccc0bcc Merge branch 'PHP-8.3'
* PHP-8.3:
  Fix TLS access in JIT with MUSL (#13329)
2024-02-12 08:16:46 +03:00