Skip to content

Commit ceed3ca

Browse files
committed
force enabling the external XML entity loaders
1 parent e75d88c commit ceed3ca

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

Loader/XliffFileLoader.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,16 @@ private function parseFile($file)
143143
$source = file_get_contents(__DIR__.'/schema/dic/xliff-core/xliff-core-1.2-strict.xsd');
144144
$source = str_replace('http://www.w3.org/2001/xml.xsd', $location, $source);
145145

146+
$disableEntities = libxml_disable_entity_loader(false);
147+
146148
if (!@$dom->schemaValidateSource($source)) {
149+
libxml_disable_entity_loader($disableEntities);
150+
147151
throw new InvalidResourceException(sprintf('Invalid resource provided: "%s"; Errors: %s', $file, implode("\n", $this->getXmlErrors($internalErrors))));
148152
}
149153

154+
libxml_disable_entity_loader($disableEntities);
155+
150156
$dom->normalizeDocument();
151157

152158
libxml_clear_errors();

Tests/Loader/XliffFileLoaderTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,20 @@ public function testLoadWithInternalErrorsEnabled()
4646
libxml_use_internal_errors($internalErrors);
4747
}
4848

49+
public function testLoadWithExternalEntitiesDisabled()
50+
{
51+
$disableEntities = libxml_disable_entity_loader(true);
52+
53+
$loader = new XliffFileLoader();
54+
$resource = __DIR__.'/../fixtures/resources.xlf';
55+
$catalogue = $loader->load($resource, 'en', 'domain1');
56+
57+
libxml_disable_entity_loader($disableEntities);
58+
59+
$this->assertEquals('en', $catalogue->getLocale());
60+
$this->assertEquals(array(new FileResource($resource)), $catalogue->getResources());
61+
}
62+
4963
public function testLoadWithResname()
5064
{
5165
$loader = new XliffFileLoader();

0 commit comments

Comments
 (0)