Re: [PHP-DEV] XSLTProcessor max depth

2023-10-01 Thread Larry Garfield
On Sat, Sep 30, 2023, at 10:18 AM, Niels Dossche wrote:
> Hi internals
>
> I'm looking to address https://bugs.php.net/bug.php?id=71571.
> TL;DR: XSL has a maximum recursion depth, and it may even depend on the 
> distro/OS config.
> For complex inputs you may reach this limit, but PHP offers no way to 
> change that limit.
>
> As we already have methods in XSLTProcessor to configure certain things 
> (e.g. setProfiling, setSecurityPrefs), it may be an idea to add 
> `setMaxDepth(int $depth)` or something alike.
>
> Unfortunately, XSLTProcessor is non-final, so if a user class extends 
> this class and coincidentally already has a method with the same name 
> but incompatible signature, then they would get a compile error.
>
> What do you think?
>
> Kind regards
> Niels


In context, I cannot imagine why someone would have a setMaxDepth() method with 
that name, since, AIUI, they wouldn't be able to actually set the max depth.  
So I think the chances of there being a conflict are extremely remote, and an 
acceptable risk.

This could be verified by doing a "top packages" scan using Nikita's script, 
which is probably a good step anyway.

--Larry Garfield

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php



[PHP-DEV] XSLTProcessor max depth

2023-09-30 Thread Niels Dossche
Hi internals

I'm looking to address https://bugs.php.net/bug.php?id=71571.
TL;DR: XSL has a maximum recursion depth, and it may even depend on the 
distro/OS config.
For complex inputs you may reach this limit, but PHP offers no way to change 
that limit.

As we already have methods in XSLTProcessor to configure certain things (e.g. 
setProfiling, setSecurityPrefs), it may be an idea to add `setMaxDepth(int 
$depth)` or something alike.

Unfortunately, XSLTProcessor is non-final, so if a user class extends this 
class and coincidentally already has a method with the same name but 
incompatible signature, then they would get a compile error.

What do you think?

Kind regards
Niels

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php