summaryrefslogtreecommitdiff
path: root/src/tests/xxe
diff options
context:
space:
mode:
authorjvoisin2020-12-12 18:57:48 +0000
committerjvoisin2020-12-12 20:33:14 +0100
commit5329a55bfd2b00d617a40d587cd37050d964ccbf (patch)
tree81ba53c4f950442a904a437458228d1ab2859227 /src/tests/xxe
parente34f5f5aaa4a40745bd652198d75b879aa09a53c (diff)
Mark the relevant php8 tests as broken (#359)
* Skip tests broken on php8 * Oops * Fix some tests * Add some XXE tests for php8 * Fix a test
Diffstat (limited to 'src/tests/xxe')
-rw-r--r--src/tests/xxe/disable_xxe_dom.phpt38
-rw-r--r--src/tests/xxe/disable_xxe_dom_disabled.phpt1
-rw-r--r--src/tests/xxe/disable_xxe_dom_disabled_php8.phpt60
-rw-r--r--src/tests/xxe/disable_xxe_xml_parse.phpt1
-rw-r--r--src/tests/xxe/disable_xxe_xml_parse_php8.phpt106
5 files changed, 190 insertions, 16 deletions
diff --git a/src/tests/xxe/disable_xxe_dom.phpt b/src/tests/xxe/disable_xxe_dom.phpt
index 58467f7..99ed572 100644
--- a/src/tests/xxe/disable_xxe_dom.phpt
+++ b/src/tests/xxe/disable_xxe_dom.phpt
@@ -1,7 +1,8 @@
1--TEST-- 1--TEST--
2Disable XXE 2Disable XXE, in php8
3--SKIPIF-- 3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus") || !extension_loaded("dom")) print("skip"); ?> 4<?php if (!extension_loaded("snuffleupagus") || !extension_loaded("dom")) print("skip"); ?>
5<?php if (PHP_VERSION_ID < 80000) print "skip"; ?>
5--INI-- 6--INI--
6sp.configuration_file={PWD}/config/disable_xxe.ini 7sp.configuration_file={PWD}/config/disable_xxe.ini
7--EXTENSIONS-- 8--EXTENSIONS--
@@ -42,28 +43,33 @@ $dom->loadXML($xml, LIBXML_DTDATTR|LIBXML_DTDLOAD|LIBXML_NOENT);
42printf("without xxe: %s", $dom->getElementsByTagName('testing')->item(0)->nodeValue); 43printf("without xxe: %s", $dom->getElementsByTagName('testing')->item(0)->nodeValue);
43 44
44?> 45?>
46--CLEAN--
47<?php
48$dir = __DIR__;
49unlink($dir . "content.xml");
50unlink($dir . "content.txt");
51?>
45--EXPECTF-- 52--EXPECTF--
46Warning: DOMDocument::loadXML(): I/O warning : failed to load external entity "file://%a/content.txt" in %a/disable_xxe_dom.php on line %d 53Deprecated: Function libxml_disable_entity_loader() is deprecated in %s/tests/xxe/disable_xxe_dom.php on line %d
47 54
48Warning: DOMDocument::loadXML(): Failure to process entity foo in Entity, line: %d in %a/disable_xxe_dom.php on line %d 55Warning: DOMDocument::loadXML(): I/O warning : failed to load external entity "file://%s/tests/xxe/content.txt" in /var/www/html/snuffleupagus/src/tests/xxe/disable_xxe_dom.php on line %d
49 56
50Warning: DOMDocument::loadXML(): Entity 'foo' not defined in Entity, line: %d in %a/disable_xxe_dom.php on line %d 57Warning: DOMDocument::loadXML(): Failure to process entity foo in Entity, line: 6 in %s/tests/xxe/disable_xxe_dom.php on line %d
51 58
52Notice: Trying to get property %a in %a/disable_xxe_dom.php on line %d 59Warning: DOMDocument::loadXML(): Entity 'foo' not defined in Entity, line: 6 in %s/tests/xxe/disable_xxe_dom.php on line %d
60
61Warning: Attempt to read property "nodeValue" on null in %s/tests/xxe/disable_xxe_dom.php on line %d
53libxml_disable_entity to true: 62libxml_disable_entity to true:
54 63
55Warning: DOMDocument::loadXML(): I/O warning : failed to load external entity "file://%a/content.txt" in %a/disable_xxe_dom.php on line %d 64Deprecated: Function libxml_disable_entity_loader() is deprecated in %s/tests/xxe/disable_xxe_dom.php on line %d
65
66Warning: DOMDocument::loadXML(): I/O warning : failed to load external entity "file://%s/tests/xxe/content.txt" in /var/www/html/snuffleupagus/src/tests/xxe/disable_xxe_dom.php on line %d
56 67
57Warning: DOMDocument::loadXML(): Failure to process entity foo in Entity, line: %d in %a/disable_xxe_dom.php on line %d 68Warning: DOMDocument::loadXML(): Failure to process entity foo in Entity, line: 6 in %s/tests/xxe/disable_xxe_dom.php on line %d
58 69
59Warning: DOMDocument::loadXML(): Entity 'foo' not defined in Entity, line: %d in %a/disable_xxe_dom.php on line %d 70Warning: DOMDocument::loadXML(): Entity 'foo' not defined in Entity, line: 6 in %s/tests/xxe/disable_xxe_dom.php on line %d
60 71
61Notice: Trying to get property %a in %a/disable_xxe_dom.php on line %d 72Warning: Attempt to read property "nodeValue" on null in %s/tests/xxe/disable_xxe_dom.php on line %d
62libxml_disable_entity to false: 73libxml_disable_entity to false:
63without xxe: foo 74
64--CLEAN-- 75Deprecated: Function libxml_disable_entity_loader() is deprecated in %s/tests/xxe/disable_xxe_dom.php on line %d
65<?php
66$dir = __DIR__;
67unlink($dir . "content.xml");
68unlink($dir . "content.txt");
69?>
diff --git a/src/tests/xxe/disable_xxe_dom_disabled.phpt b/src/tests/xxe/disable_xxe_dom_disabled.phpt
index fe88d76..493f5a3 100644
--- a/src/tests/xxe/disable_xxe_dom_disabled.phpt
+++ b/src/tests/xxe/disable_xxe_dom_disabled.phpt
@@ -2,6 +2,7 @@
2Disable XXE 2Disable XXE
3--SKIPIF-- 3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus") || !extension_loaded("dom")) print("skip"); ?> 4<?php if (!extension_loaded("snuffleupagus") || !extension_loaded("dom")) print("skip"); ?>
5<?php if (PHP_VERSION_ID >= 80000) print "skip"; ?>
5--INI-- 6--INI--
6sp.configuration_file={PWD}/config/disable_xxe_disable.ini 7sp.configuration_file={PWD}/config/disable_xxe_disable.ini
7--EXTENSIONS-- 8--EXTENSIONS--
diff --git a/src/tests/xxe/disable_xxe_dom_disabled_php8.phpt b/src/tests/xxe/disable_xxe_dom_disabled_php8.phpt
new file mode 100644
index 0000000..c0db7fc
--- /dev/null
+++ b/src/tests/xxe/disable_xxe_dom_disabled_php8.phpt
@@ -0,0 +1,60 @@
1--TEST--
2Disable XXE in php8
3--SKIPIF--
4<?php if (!extension_loaded("snuffleupagus") || !extension_loaded("dom")) print("skip"); ?>
5<?php if (PHP_VERSION_ID < 80000) print "skip"; ?>
6--INI--
7sp.configuration_file={PWD}/config/disable_xxe_disable.ini
8--EXTENSIONS--
9dom
10--FILE--
11<?php
12$dir = __DIR__;
13$content = '<content>WARNING, external entity loaded!</content>';
14file_put_contents($dir . '/content.txt', $content);
15
16$xml = <<<EOD
17<?xml version="1.0"?>
18<!DOCTYPE root
19[
20<!ENTITY foo SYSTEM "file://$dir/content.txt">
21]>
22<test><testing>&foo;</testing></test>
23EOD;
24
25file_put_contents($dir . '/content.xml', $xml);
26
27libxml_disable_entity_loader(true);
28$dom = new DOMDocument('1.0');
29$dom->loadXML($xml, LIBXML_DTDATTR|LIBXML_DTDLOAD|LIBXML_NOENT);
30printf("libxml_disable_entity to true: %s\n", $dom->getElementsByTagName('testing')->item(0)->nodeValue);
31
32libxml_disable_entity_loader(false);
33$dom = new DOMDocument('1.0');
34$dom->loadXML($xml, LIBXML_DTDATTR|LIBXML_DTDLOAD|LIBXML_NOENT);
35printf("libxml_disable_entity to false: %s\n", $dom->getElementsByTagName('testing')->item(0)->nodeValue);
36
37$xml = "<test><testing>foo</testing></test>";
38file_put_contents('content.xml', $xml);
39
40libxml_disable_entity_loader(false);
41$dom = new DOMDocument('1.0');
42$dom->loadXML($xml, LIBXML_DTDATTR|LIBXML_DTDLOAD|LIBXML_NOENT);
43printf("without xxe: %s", $dom->getElementsByTagName('testing')->item(0)->nodeValue);
44
45?>
46--CLEAN--
47<?php
48$dir = __DIR__;
49unlink($dir . "/content.xml");
50unlink($dir . "/content.txt");
51?>
52--EXPECTF--
53Deprecated: Function libxml_disable_entity_loader() is deprecated in %s/tests/xxe/disable_xxe_dom_disabled.php on line %d
54libxml_disable_entity to true: WARNING, external entity loaded!
55
56Deprecated: Function libxml_disable_entity_loader() is deprecated in %s/tests/xxe/disable_xxe_dom_disabled.php on line %d
57libxml_disable_entity to false: WARNING, external entity loaded!
58
59Deprecated: Function libxml_disable_entity_loader() is deprecated in %s/tests/xxe/disable_xxe_dom_disabled.php on line %d
60
diff --git a/src/tests/xxe/disable_xxe_xml_parse.phpt b/src/tests/xxe/disable_xxe_xml_parse.phpt
index b6dec2d..6b48bea 100644
--- a/src/tests/xxe/disable_xxe_xml_parse.phpt
+++ b/src/tests/xxe/disable_xxe_xml_parse.phpt
@@ -8,6 +8,7 @@ Disable XXE in xml_parse
8 echo "skip because the `xml` extension isn't loaded"; 8 echo "skip because the `xml` extension isn't loaded";
9} 9}
10 ?> 10 ?>
11<?php if (PHP_VERSION_ID >= 80000) print "skip"; ?>
11--EXTENSIONS-- 12--EXTENSIONS--
12xml 13xml
13--INI-- 14--INI--
diff --git a/src/tests/xxe/disable_xxe_xml_parse_php8.phpt b/src/tests/xxe/disable_xxe_xml_parse_php8.phpt
new file mode 100644
index 0000000..4a8622a
--- /dev/null
+++ b/src/tests/xxe/disable_xxe_xml_parse_php8.phpt
@@ -0,0 +1,106 @@
1--TEST--
2Disable XXE in xml_parse, in php8
3--SKIPIF--
4<?php
5 if (!extension_loaded("snuffleupagus")) {
6 echo "skip because snuffleupagus isn't loaded";
7} elseif (!extension_loaded("xml")) {
8 echo "skip because the `xml` extension isn't loaded";
9}
10?>
11<?php if (PHP_VERSION_ID < 80000) print "skip"; ?>
12--EXTENSIONS--
13xml
14--INI--
15sp.configuration_file={PWD}/config/disable_xxe.ini
16--FILE--
17<?php
18$dir = __DIR__;
19$content = 'WARNING, external entity loaded!';
20file_put_contents('content.txt', $content);
21
22$xml = <<<EOD
23<?xml version="1.0"?>
24<!DOCTYPE root
25[
26<!ENTITY foo SYSTEM "file://$dir/content.txt">
27]>
28<test><testing>&foo;</testing></test>
29EOD;
30
31file_put_contents('content.xml', $xml);
32
33function create_parser() {
34 $parser = xml_parser_create();
35 xml_set_element_handler(
36 $parser,
37 function($parser, $name, array $attributes) {
38 var_dump($name);
39 echo "\n";
40 var_dump($attributes);
41 },
42 function($parser, $name) {
43 var_dump($name);
44 }
45 );
46
47 xml_set_character_data_handler(
48 $parser,
49 function ($parser, $text){
50 echo 'text' . $text;
51 }
52 );
53
54 return $parser;
55}
56
57libxml_disable_entity_loader(true);
58$parser = create_parser();
59$doc = xml_parse($parser, $xml, true);
60xml_parser_free($parser);
61
62libxml_disable_entity_loader(false);
63$parser = create_parser();
64$doc = xml_parse($parser, $xml, true);
65xml_parser_free($parser);
66
67$xml = "<test><testing>foo</testing></test>";
68file_put_contents('content.xml', $xml);
69$parser = create_parser();
70$doc = xml_parse($parser, $xml, true);
71xml_parser_free($parser);
72
73--EXPECTF--
74 Deprecated: Function libxml_disable_entity_loader() is deprecated in %s/tests/xxe/disable_xxe_xml_parse.php on line 41
75string(4) "TEST"
76
77array(0) {
78}
79string(7) "TESTING"
80
81array(0) {
82}
83string(7) "TESTING"
84string(4) "TEST"
85
86Deprecated: Function libxml_disable_entity_loader() is deprecated in %s/tests/xxe/disable_xxe_xml_parse.php on line 46
87string(4) "TEST"
88
89array(0) {
90}
91string(7) "TESTING"
92
93array(0) {
94}
95string(7) "TESTING"
96string(4) "TEST"
97string(4) "TEST"
98
99array(0) {
100}
101string(7) "TESTING"
102
103array(0) {
104}
105textfoostring(7) "TESTING"
106