History log of /php-src/ext/dom/dom_iterators.c (Results 1 – 25 of 87)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 9cb23a3d 30-Aug-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Fix GH-15654: Signed integer overflow in ext/dom/nodelist.c

There's implicit truncation casts from zend_long to int which cause
issues because checks are done against the zend_longs. Sin

Fix GH-15654: Signed integer overflow in ext/dom/nodelist.c

There's implicit truncation casts from zend_long to int which cause
issues because checks are done against the zend_longs. Since the
iterator infrastructure uses zend_longs, just convert everything to
zend_long.

Closes GH-15669.

show more ...


# 9af574c2 23-Aug-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Fix GH-15551: Segmentation fault (access null pointer) in ext/dom/xml_common.h

Closes GH-15556.


# b282dd74 28-Jul-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Fix UAF when removing doctype and using foreach iteration

This is an old bug, but this is pretty easy to fix.
It's basically applying the same fix as I did for e878b9f.
Reported by Y

Fix UAF when removing doctype and using foreach iteration

This is an old bug, but this is pretty easy to fix.
It's basically applying the same fix as I did for e878b9f.
Reported by YuanchengJiang.

Closes GH-15143.

show more ...


# 11accb5c 25-Jun-2024 Arnaud Le Blanc

Preferably include from build dir (#13516)

* Include from build dir first

This fixes out of tree builds by ensuring that configure artifacts are included
from the build dir.

Preferably include from build dir (#13516)

* Include from build dir first

This fixes out of tree builds by ensuring that configure artifacts are included
from the build dir.

Before, out of tree builds would preferably include files from the src dir, as
the include path was defined as follows (ignoring includes from ext/ and sapi/) :

-I$(top_builddir)/main
-I$(top_srcdir)
-I$(top_builddir)/TSRM
-I$(top_builddir)/Zend
-I$(top_srcdir)/main
-I$(top_srcdir)/Zend
-I$(top_srcdir)/TSRM
-I$(top_builddir)/

As a result, an out of tree build would include configure artifacts such as
`main/php_config.h` from the src dir.

After this change, the include path is defined as follows:

-I$(top_builddir)/main
-I$(top_builddir)
-I$(top_srcdir)/main
-I$(top_srcdir)
-I$(top_builddir)/TSRM
-I$(top_builddir)/Zend
-I$(top_srcdir)/Zend
-I$(top_srcdir)/TSRM

* Fix extension include path for out of tree builds

* Include config.h with the brackets form

`#include "config.h"` searches in the directory containing the including-file
before any other include path. This can include the wrong config.h when building
out of tree and a config.h exists in the source tree.

Using `#include <config.h>` uses exclusively the include path, and gives
priority to the build dir.

show more ...


# e7af2bfd 12-May-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Get rid of reserved name usage


# 2dbe2d62 30-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Fix crash when calling childNodes next() when iterator is exhausted

Closes GH-14091.


# 78ccea4e 10-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Fix GH-13863: Removal during NodeList iteration breaks loop

The list is live, so upon cache invalidation we should rewalk the tree
to sync the index again with the node list. We keep the

Fix GH-13863: Removal during NodeList iteration breaks loop

The list is live, so upon cache invalidation we should rewalk the tree
to sync the index again with the node list. We keep the legacy behaviour
for the old DOM classes.

Closes GH-13934.

show more ...


# 2bf9da6e 10-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Fix key data for NodeList iterations


# 51ff37b6 10-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Factor out dom_fetch_first_iteration_item()


# 15259a0a 02-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Factor out common "first container's child" code


# b7bc4134 02-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Remove random newline


# fc9b58f6 02-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Remove duplicated code for entity vs notation handling


# fa4d8cd4 02-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Cleanup create_notation()

We're already clearing memory, and we can merge the declaration and
assignment.


# aa194611 02-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Don't use a heap allocation to track the current item


# 6de0486e 02-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Express php_dom_libxml_notation_iter() using php_dom_libxml_hash_iter()


# f02fd588 02-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Get rid of impossible error branch


# 88449f67 02-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Simplify control flow for special case of php_dom_iterator_move_forward()


# 899b916f 02-Apr-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Merge declarations and assignments in php_dom_iterator_move_forward()


# 14b6c981 09-Mar-2024 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

[RFC] Add a way to opt-in ext/dom spec compliance (#13031)

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


# 97267215 10-Jan-2024 David CARLIER

general signatures discrepencies fixes (#13122)


# df89409a 29-Sep-2023 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Fix compile error with -Werror=incompatible-function-pointer-types and old libxml2

libxml2 prior to 2.9.8 had a different signature for xmlHashScanner.
This signature changed in https://

Fix compile error with -Werror=incompatible-function-pointer-types and old libxml2

libxml2 prior to 2.9.8 had a different signature for xmlHashScanner.
This signature changed in https://github.com/GNOME/libxml2/commit/e03f0a199a67017b2f8052354cf732b2b4cae787
Use an #if to work around the incompatible signature.

Closes GH-12326.

show more ...


# a2fde391 10-Jul-2023 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Remove always-true condition from php_dom_iterator_move_forward()

basenode is already checked above


# c3f07973 02-Jun-2023 Niels Dossche <7771979+nielsdos@users.noreply.github.com>

Implement iteration cache, item cache and length cache for node list iteration (#11330)

* Implement iteration cache, item cache and length cache for node list iteration

The current

Implement iteration cache, item cache and length cache for node list iteration (#11330)

* Implement iteration cache, item cache and length cache for node list iteration

The current implementation follows the spec requirement that the list
must be "live". This means that changes in the document must be
reflected in the existing node lists without requiring the user to
refetch the node list.
The consequence is that getting any item, or the length of the list,
always starts searching from the root element of the node list. This
results in O(n) time to get any item or the length. If there's a for
loop over the node list, this means the iterations will take O(n²) time
in total. This causes real-world performance issues with potential for
downtime (see GH-11308 and its references for details).

We fix this by introducing a caching strategy. We cache the last
iterated object in the iterator, the last requested item in the node
list, and the last length computation. To invalidate the cache, we
simply count the number of modifications made to the containing
document. If the modification number does not match what the number was
during caching, we know the document has been modified and the cache is
invalid. If this ever overflows, we saturate the modification number and
don't do any caching anymore. Note that we don't check for overflow on
64-bit systems because it would take hundreds of years to overflow.

Fixes GH-11308.

show more ...


Revision tags: php-8.2.0RC1, php-8.1.10, php-8.0.23, php-8.0.23RC1, php-8.1.10RC1, php-8.2.0beta3, php-8.2.0beta2, php-8.1.9, php-8.0.22, php-8.1.9RC1, php-8.2.0beta1, php-8.0.22RC1, php-8.0.21, php-8.1.8, php-8.2.0alpha3, php-8.1.8RC1, php-8.2.0alpha2, php-8.0.21RC1, php-8.0.20, php-8.1.7, php-8.2.0alpha1, php-7.4.30, php-8.1.7RC1, php-8.0.20RC1, php-8.1.6, php-8.0.19, php-8.1.6RC1, php-8.0.19RC1, php-8.0.18, php-8.1.5, php-7.4.29, php-8.1.5RC1, php-8.0.18RC1, php-8.1.4, php-8.0.17, php-8.1.4RC1, php-8.0.17RC1, php-8.1.3, php-8.0.16, php-7.4.28, php-8.1.3RC1, php-8.0.16RC1, php-8.1.2, php-8.0.15, php-8.1.2RC1, php-8.0.15RC1, php-8.0.14, php-8.1.1, php-7.4.27, php-8.1.1RC1, php-8.0.14RC1, php-7.4.27RC1, php-8.1.0, php-8.0.13, php-7.4.26, php-7.3.33, php-8.1.0RC6, php-7.4.26RC1, php-8.0.13RC1, php-8.1.0RC5, php-7.3.32, php-7.4.25, php-8.0.12, php-8.1.0RC4, php-8.0.12RC1, php-7.4.25RC1, php-8.1.0RC3, php-8.0.11, php-7.4.24, php-7.3.31, php-8.1.0RC2, php-7.4.24RC1, php-8.0.11RC1, php-8.1.0RC1, php-7.4.23, php-8.0.10, php-7.3.30, php-8.1.0beta3, php-8.0.10RC1, php-7.4.23RC1, php-8.1.0beta2, php-8.0.9, php-7.4.22, php-8.1.0beta1, php-7.4.22RC1, php-8.0.9RC1, php-8.1.0alpha3, php-7.4.21, php-7.3.29
# aff36587 29-Jun-2021 Patrick Allaert

Fixed some spaces used instead of tabs

Revision tags: php-8.0.8, php-8.1.0alpha2, php-7.4.21RC1, php-8.0.8RC1, php-8.1.0alpha1, php-8.0.7, php-7.4.20, php-8.0.7RC1, php-7.4.20RC1
# 01b3fc03 06-May-2021 KsaR

Update http->https in license (#6945)

1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https.
2. Update few license 3.0 to 3.01 as

Update http->https in license (#6945)

1. Update: http://www.php.net/license/3_01.txt to https, as there is anyway server header "Location:" to https.
2. Update few license 3.0 to 3.01 as 3.0 states "php 5.1.1, 4.1.1, and earlier".
3. In some license comments is "at through the world-wide-web" while most is without "at", so deleted.
4. fixed indentation in some files before |

show more ...

1234