Ok, I went through all the 5.3 code.  This should fix the null poisoning
problems in 5.3 without breaking binary compatibility:

http://progphp.com/nullpatch.txt

There are quite a few places where we can't solve it centrally, so
perhaps we need to take the same approach in trunk.

This should take care of every issue mentioned here:

http://www.madirish.net/?article=436

along with a number of bug reports.

I think the only outstanding issue with the patch is whether to show an
error message when we hit a null in a filesystem path string.  With the
Zend part of the patch, right now the error is slightly misleading for
code like this:

$file = "foo.php\0";
include $file . ".png";

This will output:

PHP Warning:  include(): Failed opening 'foo.php' for inclusion
(include_path='.:') in foo on line 3

Without this patch, this code will of course simply include the foo.php
file and ignore the .png extension.

-Rasmus

On 11/14/10 9:35 PM, Andi Gutmans wrote:
> Hi Rasmus,
> 
> Hope I understood the problem correctly. If not, this answer won't make sense 
> :)
> I do not see a major problem in passing path_len but wonder how much it'd 
> actually solve as we end up calling OS APIs that do not accept path_len, no? 
> I assume we don't want to start searching all these strings for invalid chars 
> before we pass them to the OS.
> 
> Andi
> 
>> -----Original Message-----
>> From: Rasmus Lerdorf [mailto:ras...@lerdorf.com]
>> Sent: Sunday, November 14, 2010 11:54 AM
>> To: internals
>> Subject: [PHP-DEV] Adding path_len to all stream functions in trunk
>>
>> I think we need to pass along the string length to all the stream functions 
>> to
>> maintain binary string safety through this code.  This would fix annoying
>> problems like http://bugs.php.net/39863 and a bunch of similar issues.
>> Obviously not something we can do in 5.3 without breaking binary 
>> compatibility
>> though.  Although we might be able to do something if we assume only chars
>> valid in the current charset is valid in file paths.
>>
>> Anybody have any other thoughts on this one?
>>
>> -Rasmus
>>
>> --
>> PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit:
>> http://www.php.net/unsub.php
> 


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

Reply via email to