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

120859 Commits

Author SHA1 Message Date
Remi Collet dafc72cb33 for consistency use for all *Name methods 2020-09-23 09:31:44 +02:00
Alex Dowad 4222ae16e7 SplFixedArray is Aggregate, not Iterable
One strange feature of SplFixedArray was that it could not be used in nested foreach
loops. If one did so, the inner loop would overwrite the iteration state of the outer
loop.

To illustrate:

    $spl = SplFixedArray::fromArray([0, 1]);
    foreach ($spl as $a) {
      foreach ($spl as $b) {
        echo "$a $b";
      }
    }

Would only print two lines:

    0 0
    0 1

Use the new InternalIterator feature which was introduced in ff19ec2df3 to convert
SplFixedArray to an Aggregate rather than Iterable. As a bonus, we get to trim down
some ugly code! Yay!
2020-09-23 08:33:24 +02:00
George Peter Banyard 1e9db80d72 Tweak some macro definition on Windows
Closes GH-5606
2020-09-22 23:05:12 +01:00
Nikita Popov c2a2d2438a Fix double free on unpack error 2020-09-22 23:31:56 +02:00
Dmitry Stogov 3dde6fc4ac Fix extra args leak 2020-09-23 00:21:39 +03:00
George Peter Banyard 8fef83dd3c Promote warnings to error in DOM extension
Closes GH-5418
2020-09-22 19:12:32 +01:00
George Peter Banyard 82e14ff8e7 Drop usage of E_RECOVERABLE_ERROR in Session extension 2020-09-22 19:11:30 +01:00
George Peter Banyard 5d7d5e2773 Add proper default values for optional arguments in IMAP
Closes GH-6179
2020-09-22 17:46:28 +01:00
George Peter Banyard 7fde9918af Refactor imap_mail()'s internal implementation to use zend_strings 2020-09-22 17:46:28 +01:00
Nikita Popov 73631e517f Try to fix test 2020-09-22 17:04:06 +02:00
Nikita Popov 6436ddbfc8 Handle out-of-bounds offset consistently in grapheme_* API
Make sure we throw the same kind of error regardless of whether
the offset is out-of-bounds in the fast path or in the slow
path.
2020-09-22 17:01:06 +02:00
Nikita Popov 1312c417de Fix grapheme out of bounds check
An offset equal to the string length is not out of bounds.
2020-09-22 16:38:53 +02:00
Christoph M. Becker 544dbe8ef9 Merge branch 'PHP-7.4' into master
* PHP-7.4:
  Fix #76943: Inconsistent stream_wrapper_restore() errors
2020-09-22 16:14:03 +02:00
Christoph M. Becker ff0f6c26c2 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #76943: Inconsistent stream_wrapper_restore() errors
2020-09-22 16:12:37 +02:00
Christoph M. Becker 5ed0602ec6 Fix #76943: Inconsistent stream_wrapper_restore() errors
If restoring of any not registered built-in wrapper is requested, the
function is supposed to fail with a warning, so we have to check this
condition first.

Furthermore, to be able to detect whether a built-in wrapper has been
changed, it is not sufficient to check whether *any* userland wrapper
has been registered, but rather whether the specific wrapper has been
modified.

Closes GH-6183.
2020-09-22 16:11:35 +02:00
George Peter Banyard 35013ac823 Skip IMAP test which chokes on ASAN build 2020-09-22 14:43:31 +01:00
Nikita Popov de77344de2 Promote pack/unpack format errors
Errors related to invalid format strings (unlike data mismatch
errors) should throw ValueError.

Closes GH-6185.
2020-09-22 15:12:05 +02:00
Nikita Popov 048cc9ba78 Convert unpack offset warning to ValueError 2020-09-22 14:13:26 +02:00
Christoph M. Becker d893404fb9 Merge branch 'PHP-7.4' into master
* PHP-7.4:
  Fix #79423: copy command is limited to size of file it can copy
2020-09-22 13:19:06 +02:00
Christoph M. Becker f445e9cb93 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #79423: copy command is limited to size of file it can copy
2020-09-22 13:16:59 +02:00
Christoph M. Becker 4000780b3d Fix #79423: copy command is limited to size of file it can copy
Passing `NULL` as `lpFileSizeHigh` to `GetFileSize()` gives wrong
results for files larger than 0xFFFFFFFF bytes.  We fix this by using
`GetFileSizeEx()`, and let the mapping fail, if the file size is too
large for the architecture.

Closes GH-5319.
2020-09-22 13:15:07 +02:00
Nikita Popov 12d087c346 Use C zpp for get_class_vars() 2020-09-22 13:05:05 +02:00
Nikita Popov fdd9018bdf Support uuencoding empty string
Cross checking implementations from other languages, empty strings
are always allowed. PHP's output is peculiar due to it's insistence
to encode a trailing \0, but otherwise sensible and does round-trip
as expected.
2020-09-22 12:39:39 +02:00
Nikita Popov e60f927f05 stream_bucket_new() cannot return false
php_stream_bucket_new() is infallible.
2020-09-22 12:07:53 +02:00
Nikita Popov 9ef2c5c303 stream_get_transports/wrappers cannot return false
These may return an empty array, but not false.
2020-09-22 12:02:39 +02:00
Nikita Popov aba0ee71b2 Don't return false for empty string in soundex()
Return "0000" instead of false to have a consistent return type.
"0000" is already a possible return value if the string doesn't
contain any letters, such as with soundex(" "). We can treat the
case of soundex("") exactly the same.
2020-09-22 11:44:35 +02:00
Levi Morrison f26d855e29 Skip if https wrapper isn't present 2020-09-22 03:36:54 -06:00
Nikita Popov e547ea43c1 http_build_query() cannot fail
Assert that ht is not null and make php_url_encode_hash_ex() return
void to clarify that this is an infallible function.
2020-09-22 11:30:02 +02:00
Nikita Popov 0fbebfd1ae html_entity_decode() cannot fail
php_unescape_html_entities() never returns null, so this function
can never return false.

php_unescape_html_entities() probably should be failing with OOM
for the "overflow" case, but even if it did, it would not be
signalled through a false return value.
2020-09-22 11:23:01 +02:00
Nikita Popov 84be22f1f5 Validate phonemes parameter of metaphone()
And thus avoid the false return value.
2020-09-22 11:19:02 +02:00
Nikita Popov d0fb2f409e substr_compare() cannot return false 2020-09-22 10:54:44 +02:00
Nikita Popov 5d9ab53a5d Check string bounds in strspn/strcspn
strspn/strcspn are string search functions, and as such should throw
ValueError on out-of-bounds offsets, just like strpos etc do.
2020-09-22 10:46:50 +02:00
Nikita Popov 12e772f18d Promote substr_replace warnings
The implementation here was pretty confused. In reality the only
error condition it has right now is that for a string input,
from & length cannot be arrays.

The fact that the array lengths are the same was probably supposed
to be checked for the case of array input, as it wouldn't matter
otherwise.
2020-09-22 10:22:43 +02:00
Nikita Popov ade57e691b substr_replace() cannot return false 2020-09-22 09:59:35 +02:00
Ikko Ashimine 8f3a38d927 Fixed minor typo in comment
Initiailize -> Initialize

Closes GH-6181.
2020-09-22 09:10:23 +02:00
Dmitry Stogov 57a3fbb1e1 Fixed INIT_METHOD_CALL + IS_VAR + reference in tracing JIT 2020-09-22 00:47:23 +03:00
Dmitry Stogov 43e58d3221 Fixed incorrect assumption about sizeof(zend_reference) 2020-09-21 23:58:18 +03:00
Dmitry Stogov 4ff2122275 Ficed 32-bit JIT (inconsistent CPU stack state) 2020-09-21 23:43:31 +03:00
George Peter Banyard 2ee7e2982f Promote count() warning to TypeError
Closes GH-6180
2020-09-21 21:29:15 +01:00
Dmitry Stogov 5a085777b7 Fixed incorrect JIT for FETCH_THIS+SEND_REF 2020-09-21 21:53:03 +03:00
George Peter Banyard ddd99a7005 Drop -1 mode for collator_is_numeric()
It is used only once with allow_errors enabled
2020-09-21 16:29:10 +01:00
George Peter Banyard 2b6f5eec6c Drop Hex support in numeric strings for Intl collator
Support for this was removed in PHP 7.0.

See: https://wiki.php.net/rfc/remove_hex_support_in_numeric_strings
2020-09-21 16:29:10 +01:00
Nikita Popov 8ff2f2f84b Return empty array for no rows in pg_fetch_all()
This makes it line up with pg_fetch_all_columns(), as well as
similar functions in other exts, such as mysqli_fetch_all().
2020-09-21 17:22:02 +02:00
Nikita Popov fb4554e431 Throw warning for failed object to int/float conversion
We previously couldn't increase the error level here because it
was coupled to comparison handling. This is no longer the case
in PHP 8.
2020-09-21 17:04:39 +02:00
Nikita Popov d60c43e397 Convert exception instanceof checks to assertions 2020-09-21 17:04:39 +02:00
Nikita Popov edf22962ef Make constant redeclaration a warning
We missed the change to make this an Error exception in PHP 8,
but at least elevate it to a warning, to avoid a notice -> exception
jump at a later time.
2020-09-21 17:04:39 +02:00
Nikita Popov 54f03d31e0 Promote invalid field to ValueError in pgsql
The same error condition is a ValueError in mysqli, be consistent.

Additionally, do not display the argument name for these errors.
As the signatures are overloaded, the argument name may not match
the meaning at all.
2020-09-21 17:00:23 +02:00
Nikita Popov 68a907569c Remove redundant check
This was already checked directly above.
2020-09-21 17:00:22 +02:00
Christoph M. Becker 3e33e1e86d Check linker compatibility directly from HMODULE
Checking the linker compatibility with extranous `ImageLoad()` calls is
possible, but unnecessary, since the modules are either already loaded
or loaded shortly afterwards, so that we can get the required
information directly from the module handles.  And actually, doing
`ImageLoad()` as well as `LoadLibrary()` leaves a tiny room for a race
condition, because both functions will lookup the module in the search
path, so there is no *guarantee* that both are dealing with the same
module.  Dropping the `ImageLoad()` calls also has the advantage to no
longer face the issue reported in bug #79557.  A very minor additional
advantage is that we no longer have to link against Imagehlp.dll.

Furthermore, there is no need to check for CRT compatibility multiple
times, so we can simplify the signature of `php_win32_crt_compatible`,
and at the same time clean up main.c a bit.

These changes require to change the signature of the exported
`php_win32_image_compatible` and `php_win32_crt_compatible` functions,
which now expect a `HMODULE` and nothing, respectively, instead of the
module name.
2020-09-21 16:25:31 +02:00
Christoph M. Becker 6fa2493789 Merge branch 'PHP-7.4' into master
* PHP-7.4:
  Fix mmap copying
2020-09-21 16:09:17 +02:00