com php-src: [libxml] Unit test for libxml_disable_entity _loader(): ext/libxml/tests/libxml_disable_entity _loader.phpt
ext/libxml/tests/libxml_disable_entity _loader_payload.txt

From: Date: Mon, 17 Feb 2014 06:34:52 +0000
Subject: com php-src: [libxml] Unit test for libxml_disable_entity _loader(): ext/libxml/tests/libxml_disable_entity _loader.phpt
ext/libxml/tests/libxml_disable_entity _loader_payload.txt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-76031@lists.php.net to get a copy of this message
Commit: 1f3af9cd2152f08bb52bb69d035a4aefdd9d13bf Author: Scott MacVicar <scottmac@php.net> Sun, 5 Jan 2014 02:11:05 -0800 Parents: e5ec5fc9cc018731294ef5d1b7185c461d03f885 Branches: PHP-5.6 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=1f3af9cd2152f08bb52bb69d035a4aefdd9d13bf Log: [libxml] Unit test for libxml_disable_entity_loader() Summary: Test to make sure libxml_disable_entity_loader() is behaving. Changed paths: A ext/libxml/tests/libxml_disable_entity_loader.phpt A ext/libxml/tests/libxml_disable_entity_loader_payload.txt Diff: diff --git a/ext/libxml/tests/libxml_disable_entity_loader.phpt b/ext/libxml/tests/libxml_disable_entity_loader.phpt new file mode 100644 index 0000000..6477543 --- /dev/null +++ b/ext/libxml/tests/libxml_disable_entity_loader.phpt @@ -0,0 +1,41 @@ +--TEST-- +libxml_disable_entity_loader() +--SKIPIF-- +<?php if (!extension_loaded('libxml') || !extension_loaded('dom') || defined('PHP_WINDOWS_VERSION_MAJOR')) die('skip'); ?> +--FILE-- +<?php + +$xml = <<<EOT +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE test [<!ENTITY xxe SYSTEM "XXE_URI">]> +<foo>&xxe;</foo> +EOT; + +$xml = str_replace('XXE_URI', __DIR__ . '/libxml_disable_entity_loader_payload.txt', $xml); + +function parseXML($xml) { + $doc = new DOMDocument(); + $doc->resolveExternals = true; + $doc->substituteEntities = true; + $doc->validateOnParse = false; + $doc->loadXML($xml, 0); + return $doc->saveXML(); +} + +var_dump(strpos(parseXML($xml), 'SECRET_DATA') !== false); +var_dump(libxml_disable_entity_loader(true)); +var_dump(strpos(parseXML($xml), 'SECRET_DATA') === false); + +echo "Done\n"; +?> +--EXPECTF-- +bool(true) +bool(false) + +Warning: DOMDocument::loadXML(): I/O warning : failed to load external entity "%s" in %s on line %d + +Warning: DOMDocument::loadXML(): Failure to process entity xxe in Entity, line: %d in %s on line %d + +Warning: DOMDocument::loadXML(): Entity 'xxe' not defined in Entity, line: %d in %s on line %d +bool(true) +Done diff --git a/ext/libxml/tests/libxml_disable_entity_loader_payload.txt b/ext/libxml/tests/libxml_disable_entity_loader_payload.txt new file mode 100644 index 0000000..3b8a43c --- /dev/null +++ b/ext/libxml/tests/libxml_disable_entity_loader_payload.txt @@ -0,0 +1 @@ +SECRET_DATA \ No newline at end of file

« previous php.cvs (#76031) next »