1
0
mirror of https://github.com/php/php-src.git synced 2026-04-21 06:51:18 +02:00
Commit Graph

63868 Commits

Author SHA1 Message Date
David CARLIER
2da299703a ext/intl IntlChar::enumCharNames changes the signature to void.
Close GH-10904
2023-03-28 18:07:35 +01:00
George Peter Banyard
dfae7f9835 Merge branch 'PHP-8.2'
* PHP-8.2:
  ext/imap/config.m4: -Werror=implicit-function-declaration compatibility.
2023-03-28 15:20:03 +01:00
George Peter Banyard
0ff059c553 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  ext/imap/config.m4: -Werror=implicit-function-declaration compatibility.
2023-03-28 15:19:43 +01:00
Michael Orlitzky
f9cbeaa033 ext/imap/config.m4: -Werror=implicit-function-declaration compatibility.
The recent clang-16 throws errors for implicitly defined functions by
default. In many ./configure tests, an undefined function (which is
"implicitly defined" when you try to call it) is undefined because it
really does not exist. But in one case, utf8_to_mutf7() is undefined
because we forgot to include the header that defines it.

This commit updates the test for utf8_to_mutf7:

  * We now include the header (c-client.h) that defines it.
  * A "checking... yes/no" message was added to the test.
  * The test was switched from PHP_IMAP_TEST_BUILD to AC_COMPILE_IFELSE.
    This was the easiest way to avoid a return-type mismatch that runs
    afoul of -Werror=implicit-int.
  * CPPFLAGS is temporarily amended with the -I flag needed to find
    c-client.h.

Fixes GH-10947.

Closes GH-10948

Signed-off-by: George Peter Banyard <girgias@php.net>
2023-03-28 15:18:18 +01:00
Calvin Buckley
180f785404 Note where a session was already started (#10736)
* Note where a session was already started

Duplicated session starts can be annoying to debug. The error that
occurs when a session is already active doesn't tell you where it
was initialized, so figuring out the callsite involves manual
debugging to find it out.

This keeps track of the call site of session_start as a request
global, and frees at the end of the request. It should make it
easier to find these instances for PHP users.

The resulting message can look like:
Notice: session_start(): Ignoring session_start() because a session is already active (started from /home/calvin/src/php-src/inc.php on line 4) in /home/calvin/src/php-src/index.php on line 9

Fixes GH-10721

* Convert to using zend_string for session start location

* Fix leak with session start callsite filename

If this was already initialized, we'd forget it. Have shared free
between session_start and RSHUTDOWN.

* For sessions that are automatically started, note that

Easy to forget that you have this set, in which case, session start
is done at RINIT outside of user code. Because this config option
can't change at runtime, we can check for it and make the error
more specific if that's the case.
2023-03-28 15:14:21 +01:00
David Carlier
7623bf0b06 ext/intl: breakiterator::setText returns false on failure.
Close GH-10820
2023-03-28 13:29:09 +01:00
Niels Dossche
d78b3fe943 Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix test for GH-10908
2023-03-28 00:12:28 +02:00
Niels Dossche
1357d1eb41 Fix test for GH-10908
It turns out that the version of Firebird influences the test in terms
of supported data types. On Windows on 8.2 we seem to be using a
different version than on 8.1. Fix it by amending the test.
The core issue is still tested in the test, it's just that not all
datatypes are tested anymore (which isn't strictly necessary anyway).
2023-03-28 00:11:17 +02:00
David CARLIER
2b354318d9 ext/posix: proposing posix_eaccess. unlike access, it is not standard but available in enough platforms ; on linux it's euidaccess in reality eaccess being 'just' an alias. key difference is eaccess checks the effective user id instead.
Close GH-10917
2023-03-27 22:32:16 +01:00
Ilija Tovilo
f1333bc9fe Merge branch 'PHP-8.2'
* PHP-8.2:
  Reset EG(trampoline).op_array.last_var that FFI may modify
2023-03-27 23:00:12 +02:00
Ilija Tovilo
69c57bea3d Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Reset EG(trampoline).op_array.last_var that FFI may modify
2023-03-27 22:59:58 +02:00
Ilija Tovilo
4e0bd03681 Reset EG(trampoline).op_array.last_var that FFI may modify
Closes GH-10916
2023-03-27 22:59:00 +02:00
Niels Dossche
42ecd8858b Merge branch 'PHP-8.2'
* PHP-8.2:
  Revert "Handle indirect zvals in SplFixedArray::__serialize"
2023-03-27 21:54:08 +02:00
Niels Dossche
0d524eda94 Revert "Handle indirect zvals in SplFixedArray::__serialize"
This reverts commit e698938229.
2023-03-27 21:47:02 +02:00
Niels Dossche
abcb88e594 Merge branch 'PHP-8.2'
* PHP-8.2:
  Handle indirect zvals in SplFixedArray::__serialize
  Fix GH-10908: Bus error with PDO Firebird on RPI with 64 bit kernel and 32 bit userland
2023-03-27 21:21:37 +02:00
Niels Dossche
fa1cdfed76 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix GH-10908: Bus error with PDO Firebird on RPI with 64 bit kernel and 32 bit userland
2023-03-27 21:14:46 +02:00
Niels Dossche
e698938229 Handle indirect zvals in SplFixedArray::__serialize
Closes GH-10925.
2023-03-27 21:02:29 +02:00
Niels Dossche
21e0305f5d Fix GH-10908: Bus error with PDO Firebird on RPI with 64 bit kernel and 32 bit userland
The alignment of sqldata is in most cases only the basic alignment,
so the code type-puns it to a larger type, it *can* crash due to the
misaligned access. This is only an issue for types > 4 bytes because
every sensible system requires an alignment of at least 4 bytes for
allocated data.

Even though this patch uses memcpy, the compiler is smart enough to
optimise it to something more efficient, especially on x86.
This is just the usual approach to solve these alignment problems.

Actually, unaligned memory access is undefined behaviour, so even on x86
platforms, where the bug doesn't cause a crash, this can be problematic.
Furthermore, even though the issue talks about a 64-bit kernel and
32-bit userspace, this doesn't necessarily need to be the case to
trigger this crash.

Test was Co-authored-by: rvk01

Closes GH-10920.
2023-03-27 21:01:06 +02:00
Dmitry Stogov
22d5d146e5 Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix incorrect optimization
2023-03-27 17:58:35 +03:00
Dmitry Stogov
1f5d9534ae Fix incorrect optimization
Fixes oss-fuzz #57482
2023-03-27 17:57:54 +03:00
Ilija Tovilo
be4db6b550 Suppress snmp lib memory leak, xfail ASAN tests
I don't know enough about this library to fix those :(
2023-03-27 16:38:44 +02:00
Ilija Tovilo
11fbf3da35 Merge branch 'PHP-8.2'
* PHP-8.2:
  Unparallelize IO heavy tests
2023-03-27 16:34:19 +02:00
Ilija Tovilo
9b15537e9a Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Unparallelize IO heavy tests
2023-03-27 16:34:11 +02:00
Ilija Tovilo
e1ec67acd6 Unparallelize IO heavy tests
Alternative to GH-10892. This is somewhat unfortunate since these are also the
slow tests. I'm also not sure if this actually helps.

Closes GH-10953
2023-03-27 16:33:36 +02:00
Ilija Tovilo
b73b70f097 Rename --with-opcache-capstone to --with-capstone (#10952) 2023-03-27 12:59:27 +02:00
Alex Dowad
c4fb049bf6 For UTF-7, emit error marker if Base64 section ends abruptly after first half of surrogate pair
This (rare) situation was already handled correctly for the 1st and 2nd
of every 3 codepoints in a Base64-encoded section of a UTF-7 string.
However, it was not handled correctly if it happened on the 3rd,
6th, 9th, etc. codepoint of such a Base64-encoded section.
2023-03-27 11:34:11 +02:00
Niels Dossche
6ec69d727a Improve the warning message for unpack() in case not enough values were provided (#10949) 2023-03-27 00:04:42 +02:00
Niels Dossche
0b212ab5ab Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix undefined behaviour in GENERATE_SEED()
  Fix undefined behaviour when writing 32-bit values in phar/tar.c
2023-03-26 16:16:26 +02:00
Niels Dossche
22040f5a8f Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix undefined behaviour in GENERATE_SEED()
  Fix undefined behaviour when writing 32-bit values in phar/tar.c
2023-03-26 16:15:57 +02:00
Niels Dossche
6f56c00498 Fix undefined behaviour in GENERATE_SEED()
Signed multiply overflow is undefined behaviour.
If you run the CI tests with UBSAN enabled on a 32-bit platform, this is
quite easy to hit. On 64-bit it's more difficult to hit though, but not
impossible.

Closes GH-10942.
2023-03-26 16:07:39 +02:00
Niels Dossche
19ddc62778 Fix undefined behaviour when writing 32-bit values in phar/tar.c
As shown on the CI runs on my fork (which runs with UBSAN),
the pointers can sometimes be unaligned when trying to write.
This is UB and on platforms like ARM this *can* result in a bus error.
Replace it with memcpy, which at least on x86 and powerpc
architectures does result in the same assembly code.

Closes GH-10940.
2023-03-26 16:06:29 +02:00
Niels Dossche
8317a147b9 Use php_random_bytes_silent() where possible in gmp_init_random() (#10944)
See GH-10942.
2023-03-26 15:59:21 +02:00
George Peter Banyard
d7c351ea54 Propagate UTF-8 flag during Rope operations (#10915) 2023-03-26 14:18:46 +01:00
Niels Dossche
93e0f6b424 Fix undefined behaviour in string uppercasing and lowercasing
At least on 32-bit, the address computations overflow in running the
test on CI with UBSAN enabled. Fix it by reordering the arithmetic.
Since a part of the expression is already used in the code above the
computation, this should not negatively affect performance.

Closes GH-10936.
2023-03-25 21:17:15 +01:00
David Carlier
86f6c5637f Merge branch 'PHP-8.2' 2023-03-25 17:41:56 +00:00
David Carlier
3e05059e00 Merge branch 'PHP-8.1' into PHP-8.2 2023-03-25 17:41:45 +00:00
David CARLIER
f6989df8cc ext/pdo_mysql: mysql_handle_closer nullify some freed data.
Close GH-10926
2023-03-25 17:41:21 +00:00
Niels Dossche
2ba3c999b9 Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix GH-10928: PHP Build Failed - Test curl_version() basic functionality [ext/curl/tests/curl_version_basic_001.phpt]
2023-03-25 18:16:55 +01:00
Niels Dossche
a095203a03 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix GH-10928: PHP Build Failed - Test curl_version() basic functionality [ext/curl/tests/curl_version_basic_001.phpt]
2023-03-25 18:15:42 +01:00
Niels Dossche
8e620b4ecb Fix GH-10928: PHP Build Failed - Test curl_version() basic functionality [ext/curl/tests/curl_version_basic_001.phpt]
It's possible that curl was compiled without SSL, and/or without libz
support. In the case of the issue reporter it was without libz support.
This causes the test to fail because we expect a non-empty string.
Fix it by using %S instead of %s to allow empty strings.

Closes GH-10930.
2023-03-25 18:15:20 +01:00
Ilija Tovilo
439cea49fa Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix buffer-overflow in php_fgetcsv() with \0 delimiter and enclosure
2023-03-25 17:43:12 +01:00
Ilija Tovilo
c5fe6c2eb9 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix buffer-overflow in php_fgetcsv() with \0 delimiter and enclosure
2023-03-25 17:43:07 +01:00
Ilija Tovilo
57029ce92e Fix buffer-overflow in php_fgetcsv() with \0 delimiter and enclosure
Fixes oss-fuzz #57392
Closes GH-10923
2023-03-25 17:42:39 +01:00
Ilija Tovilo
a86796e52a Merge branch 'PHP-8.2'
* PHP-8.2:
  By-ref modification of typed and readonly props through ArrayIterator
2023-03-25 16:24:08 +01:00
Ilija Tovilo
3d8107f74c Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  By-ref modification of typed and readonly props through ArrayIterator
2023-03-25 16:23:48 +01:00
Ilija Tovilo
9aaa5cd093 By-ref modification of typed and readonly props through ArrayIterator
Fixes GH-10844
Closes GH-10872
2023-03-25 16:14:19 +01:00
Michael Orlitzky
87922411bf Use capstone explicitly, drop oprofile (GH 10876) (#10918)
* ext/opcache/config.m4: new --with-opcache-capstone flag.

Until now, libcapstone has been detected "automagically" and used for
JIT disassembly whenever it is available on the system used to compile
PHP. This can have some unintended consequences, however: many users
have capstone installed for some other purpose, and are surprised to
find that PHP breaks when capstone is later uninstalled.

To address this, we have introduced a new --with-opcache-capstone flag
that is disabled by default, and that makes the user's preference
explicit. It is ignored unless the JIT is enabled.

* ext/opcache: drop support for the oprofile JIT profiler.

Recently we have replaced the "automagic" detection of capstone at
build time with a --with-opcache-capstone flag. The detection of
oprofile causes similar problems and would likely have the same
solution; however, it was suggested that we might remove oprofile
altogether. So, this commit removes it:

  * Remove the detection bits from ext/opcache/config.m4.
  * Drop HAVE_OPROFILE ifdef blocks.
  * Delete ext/opcache/jit/zend_jit_oprofile.c.
  * Undefine the ZEND_JIT_DEBUG_OPROFILE constant.
2023-03-25 15:12:34 +01:00
pakutoma
b721d0f71e Fix phpGH-10648: add check function pointer into mbfl_encoding
Previously, mbstring used the same logic for encoding validation as for
encoding conversion.

However, there are cases where we want to use different logic for validation
and conversion. For example, if a string ends up with missing input
required by the encoding, or if a character is input that is invalid
as an encoding but can be converted, the conversion should succeed and
the validation should fail.

To achieve this, a function pointer mb_check_fn has been added to
struct mbfl_encoding to implement the logic used for validation.
Also, added implementation of validation logic for UTF-7, UTF7-IMAP,
ISO-2022-JP and JIS.

(The same change has already been made to PHP 8.2 and 8.3; see
6fc8d014df. This commit is backporting the change to PHP 8.1.)
2023-03-25 09:52:10 +02:00
Alex Dowad
57e194e02d Fix compile error in Windows CI job caused by 0779950768
In 6fc8d014df, pakutoma added some additional validation logic to
mb_detect_encoding. Since the implementation of mb_detect_encoding
has changed significantly between PHP 8.2 and 8.3, when merging this
change down from PHP-8.2 into master, I had to port his code over to
the new implementation in master.

However, I did this in a wrong way. In merge commit 0779950768,
the ported code modifies a function argument (to mb_guess_encoding)
which is marked 'const'. In the Windows CI job, MS VC++ rightly
flags this as a compile error.

Adjust the code to accomplish the same thing, but without destructively
modifying 'const' arguments.
2023-03-25 06:02:01 +02:00
Alex Dowad
345abce590 Fix compile errors caused by missing initializers in 0779950768
When I built and tested 0779950768 locally, the build was successful
and all tests passed. However, in CI, some CI jobs are failing due to
compile errors. Fix those.
2023-03-24 22:18:18 +02:00