mirror of
https://github.com/php/php-src.git
synced 2026-04-20 06:21:12 +02:00
The libxml based XML functions accepting a filename actually accept URIs with possibly percent-encoded characters. Percent-encoded NUL bytes lead to truncation, like non-encoded NUL bytes would. We catch those, and let the functions fail with a respective warning.
28 lines
829 B
PHP
28 lines
829 B
PHP
--TEST--
|
|
Bug #79971 (special character is breaking the path in xml function)
|
|
--SKIPIF--
|
|
<?php
|
|
if (!extension_loaded('simplexml')) die('skip simplexml extension not available');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
if (PHP_OS_FAMILY === 'Windows') {
|
|
$path = '/' . str_replace('\\', '/', __DIR__);
|
|
} else {
|
|
$path = __DIR__;
|
|
}
|
|
$uri = "file://$path/bug79971_1.xml";
|
|
var_dump(simplexml_load_file("$uri%00foo"));
|
|
|
|
$sxe = simplexml_load_file($uri);
|
|
var_dump($sxe->asXML("$uri.out%00foo"));
|
|
?>
|
|
--EXPECTF--
|
|
Warning: simplexml_load_file(): URI must not contain percent-encoded NUL bytes in %s on line %d
|
|
|
|
Warning: simplexml_load_file(): I/O warning : failed to load external entity "%s/bug79971_1.xml%00foo" in %s on line %d
|
|
bool(false)
|
|
|
|
Warning: SimpleXMLElement::asXML(): URI must not contain percent-encoded NUL bytes in %s on line %d
|
|
bool(false)
|