8000 Fix deprecated libxml_disable_entity_loader · symfony/symfony@26ded4e · GitHub
[go: up one dir, main page]

Skip to content

Commit 26ded4e

Browse files
committed
Fix deprecated libxml_disable_entity_loader
1 parent d81eb08 commit 26ded4e

File tree

8 files changed

+63
-29
lines changed

8 files changed

+63
-29
lines changed

src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,9 @@ public function testLoadEmptyXmlFile()
199199
// test for issue https://github.com/symfony/symfony/issues/9731
200200
public function testLoadWrongEmptyXMLWithErrorHandler()
201201
{
202-
$originalDisableEntities = libxml_disable_entity_loader(false);
202+
if (LIBXML_VERSION < 20900) {
203+
$originalDisableEntities = libxml_disable_entity_loader(false);
204+
}
203205
$errorReporting = error_reporting(-1);
204206

205207
set_error_handler(function ($errno, $errstr) {
@@ -219,12 +221,13 @@ public function testLoadWrongEmptyXMLWithErrorHandler()
219221
error_reporting($errorReporting);
220222
}
221223

222-
$disableEntities = libxml_disable_entity_loader(true);
223-
libxml_disable_entity_loader($disableEntities);
224-
225-
libxml_disable_entity_loader($originalDisableEntities);
224+
if (LIBXML_VERSION < 20900) {
225+
$disableEntities = libxml_disable_entity_loader(true);
226+
libxml_disable_entity_loader($disableEntities);
226227

227-
$this->assertFalse($disableEntities);
228+
libxml_disable_entity_loader($originalDisableEntities);
229+
$this->assertFalse($disableEntities);
230+
}
228231

229232
// should not throw an exception
230233
XmlUtils::loadFile(__DIR__.'/../Fixtures/Util/valid.xml', __DIR__.'/../Fixtures/Util/schema.xsd');

src/Symfony/Component/Config/Util/XmlUtils.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,21 +51,27 @@ public static function parse($content, $schemaOrCallable = null)
5151
}
5252

5353
$internalErrors = libxml_use_internal_errors(true);
54-
$disableEntities = libxml_disable_entity_loader(true);
54+
if (LIBXML_VERSION < 20900) {
55+
$disableEntities = libxml_disable_entity_loader(true);
56+
}
5557
libxml_clear_errors();
5658

5759
$dom = new \DOMDocument();
5860
$dom->validateOnParse = true;
5961
if (!$dom->loadXML($content, LIBXML_NONET | (\defined('LIBXML_COMPACT') ? LIBXML_COMPACT : 0))) {
60-
libxml_disable_entity_loader($disableEntities);
62+
if (LIBXML_VERSION < 20900) {
63+
libxml_disable_entity_loader($disableEntities);
64+
}
6165

6266
throw new XmlParsingException(implode("\n", static::getXmlErrors($internalErrors)));
6367
}
6468

6569
$dom->normalizeDocument();
6670

6771
libxml_use_internal_errors($internalErrors);
68-
libxml_disable_entity_loader($disableEntities);
72+
if (LIBXML_VERSION < 20900) {
73+
libxml_disable_entity_loader($disableEntities);
74+
}
6975

7076
foreach ($dom->childNodes as $child) {
7177
if (XML_DOCUMENT_TYPE_NODE === $child->nodeType) {

src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ private function processAnonymousServices(\DOMDocument $xml, string $file)
443443

444444
// resolve definitions
445445
uksort($definitions, 'strnatcmp');
446-
foreach (array_reverse($definitions) as $id => list($domElement, $file)) {
446+
foreach (array_reverse($definitions) as $id => [$domElement, $file]) {
447447
if (null !== $definition = $this->parseDefinition($domElement, $file, [])) {
448448
$this->setDefinition($id, $definition);
449449
}
@@ -634,9 +634,13 @@ public function validateSchema(\DOMDocument $dom)
634634
EOF
635635
;
636636

637-
$disableEntities = libxml_disable_entity_loader(false);
638-
$valid = @$dom->schemaValidateSource($source);
639-
libxml_disable_entity_loader($disableEntities);
637+
if (LIBXML_VERSION < 20900) {
638+
$disableEntities = libxml_disable_entity_loader(false);
639+
$valid = @$dom->schemaValidateSource($source);
640+
libxml_disable_entity_loader($disableEntities);
641+
} else {
642+
$valid = @$dom->schemaValidateSource($source);
643+
}
640644

641645
foreach ($tmpfiles as $tmpfile) {
642646
@unlink($tmpfile);

src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,17 @@ public function testParseFile()
9999

100100
public function testLoadWithExternalEntitiesDisabled()
101101
{
102-
$disableEntities = libxml_disable_entity_loader(true);
102+
if (LIBXML_VERSION < 20900) {
103+
$disableEntities = libxml_disable_entity_loader(true);
104+
}
103105

104106
$containerBuilder = new ContainerBuilder();
105107
$loader = new XmlFileLoader($containerBuilder, new FileLocator(self::$fixturesPath.'/xml'));
106108
$loader->load('services2.xml');
107109

108-
libxml_disable_entity_loader($disableEntities);
110+
if (LIBXML_VERSION < 20900) {
111+
libxml_disable_entity_loader($disableEntities);
112+
}
109113

110114
$this->assertGreaterThan(0, $containerBuilder->getParameterBag()->all(), 'Parameters can be read from the config file.');
111115
}

src/Symfony/Component/DomCrawler/Crawler.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,9 @@ public function addXmlContent($content, $charset = 'UTF-8', $options = LIBXML_NO
231231
}
232232

233233
$internalErrors = libxml_use_internal_errors(true);
234-
$disableEntities = libxml_disable_entity_loader(true);
234+
if (LIBXML_VERSION < 20900) {
235+
$disableEntities = libxml_disable_entity_loader(true);
236+
}
235237

236238
$dom = new \DOMDocument('1.0', $charset);
237239
$dom->validateOnParse = true;
@@ -241,7 +243,9 @@ public function addXmlContent($content, $charset = 'UTF-8', $options = LIBXML_NO
241243
}
242244

243245
libxml_use_internal_errors($internalErrors);
244-
libxml_disable_entity_loader($disableEntities);
246+
if (LIBXML_VERSION < 20900) {
247+
libxml_disable_entity_loader($disableEntities);
248+
}
245249

246250
$this->addDocument($dom);
247251

@@ -1180,7 +1184,9 @@ private function parseXhtml(string $htmlContent, string $charset = 'UTF-8'): \DO
11801184
$htmlContent = $this->convertToHtmlEntities($htmlContent, $charset);
11811185

11821186
$internalErrors = libxml_use_internal_errors(true);
1183-
$disableEntities = libxml_disable_entity_loader(true);
1187+
if (LIBXML_VERSION < 20900) {
1188+
$disableEntities = libxml_disable_entity_loader(true);
1189+
}
11841190

11851191
$dom = new \DOMDocument('1.0', $charset);
11861192
$dom->validateOnParse = true;
@@ -1190,7 +1196,9 @@ private function parseXhtml(string $htmlContent, string $charset = 'UTF-8'): \DO
11901196
}
11911197

11921198
libxml_use_internal_errors($internalErrors);
1193-
libxml_disable_entity_loader($disableEntities);
1199+
if (LIBXML_VERSION < 20900) {
1200+
libxml_disable_entity_loader($disableEntities);
1201+
}
11941202

11951203
return $dom;
11961204
}

src/Symfony/Component/Serializer/Encoder/XmlEncoder.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,14 +132,18 @@ public function decode($data, $format, array $context = [])
132132
}
133133

134134
$internalErrors = libxml_use_internal_errors(true);
135-
$disableEntities = libxml_disable_entity_loader(true);
135+
if (LIBXML_VERSION < 20900) {
136+
$disableEntities = libxml_disable_entity_loader(true);
137+
}
136138
libxml_clear_errors();
137139

138140
$dom = new \DOMDocument();
139141
$dom->loadXML($data, $context[self::LOAD_OPTIONS] ?? $this->defaultContext[self::LOAD_OPTIONS]);
140142

141143
libxml_use_internal_errors($internalErrors);
142-
libxml_disable_entity_loader($disableEntities);
144+
if (LIBXML_VERSION < 20900) {
145+
libxml_disable_entity_loader($disableEntities);
146+
}
143147

144148
if ($error = libxml_get_last_error()) {
145149
libxml_clear_errors();

src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,17 @@ public function testLoadWithInternalErrorsEnabled()
4949

5050
public function testLoadWithExternalEntitiesDisabled()
5151
{
52-
$disableEntities = libxml_disable_entity_loader(true);
52+
if (LIBXML_VERSION < 20900) {
53+
$disableEntities = libxml_disable_entity_loader(true);
54+
}
5355

5456
$loader = new XliffFileLoader();
5557
$resource = __DIR__.'/../fixtures/resources.xlf';
5658
$catalogue = $loader->load($resource, 'en', 'domain1');
5759

58-
libxml_disable_entity_loader($disableEntities);
60+
if (LIBXML_VERSION < 20900) {
61+
libxml_disable_entity_loader($disableEntities);
62+
}
5963

6064
$this->assertEquals('en', $catalogue->getLocale());
6165
$this->assertEquals([new FileResource($resource)], $catalogue->getResources());

src/Symfony/Component/Translation/Util/XliffUtils.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,18 @@ public static function validateSchema(\DOMDocument $dom): array
6161
{
6262
$xliffVersion = static::getVersionNumber($dom);
6363
$internalErrors = libxml_use_internal_errors(true);
64-
$disableEntities = libxml_disable_entity_loader(false);
65-
66-
$isValid = @$dom->schemaValidateSource(self::getSchema($xliffVersion));
67-
if (!$isValid) {
64+
if (LIBXML_VERSION < 20900) {
65+
$disableEntities = libxml_disable_entity_loader(false);
66+
$isValid = @$dom->schemaValidateSource(self::getSchema($xliffVersion));
6867
libxml_disable_entity_loader($disableEntities);
68+
} else {
69+
$isValid = @$dom->schemaValidateSource(self::getSchema($xliffVersion));
70+
}
6971

72+
if (!$isValid) {
7073
return self::getXmlErrors($internalErrors);
7174
}
7275

73-
libxml_disable_entity_loader($disableEntities);
74-
7576
$dom->normalizeDocument();
7677

7778
libxml_clear_errors();

0 commit comments

Comments
 (0)
0