Commit 63a5383b authored by Anja Leichsenring's avatar Anja Leichsenring Committed by Christian Kuhn
Browse files

[BUGFIX] Trim input into xml2array

Preciding whitespace in the xml input string causes xml2array()
to fail with an error message. This whitespace is often
introduced by formatting code via IDE, so blaming the developer
only helps so far. Inserting a trim() before the input is processed
mitigates the problem.

Resolves: #78752
Releases: master, 7.6
Change-Id: I3b9d3c81b64d502e7cefef80e72bef3a1bd9b3da
Reviewed-on: https://review.typo3.org/50716

Tested-by: default avatarTYPO3com <no-reply@typo3.com>
Reviewed-by: Łukasz Uznański's avatarŁukasz Uznański <l.uznanski@macopedia.pl>
Tested-by: Łukasz Uznański's avatarŁukasz Uznański <l.uznanski@macopedia.pl>
Reviewed-by: default avatarRalf Zimmermann <ralf.zimmermann@tritum.de>
Reviewed-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn's avatarChristian Kuhn <lolli@schwarzbu.ch>
parent 966351c8
......@@ -1795,7 +1795,7 @@ class GeneralUtility
if (!empty($firstLevelCache[$identifier])) {
$array = $firstLevelCache[$identifier];
} else {
$array = self::xml2arrayProcess($string, $NSprefix, $reportDocTag);
$array = self::xml2arrayProcess(trim($string), $NSprefix, $reportDocTag);
// Store content in first level cache
$firstLevelCache[$identifier] = $array;
}
......
......@@ -4631,6 +4631,76 @@ class GeneralUtilityTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
</phparray>', $output);
}
/**
* @return array
*/
public function providerForXml2Array(): array
{
return [
'inputWithoutWhitespaces' => [
'<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
<data>
<field index="settings.persistenceIdentifier">
<value index="vDEF">egon</value>
</field>
</data>
</T3FlexForms>'
],
'inputWithPrecedingWhitespaces' => [
'
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
<data>
<field index="settings.persistenceIdentifier">
<value index="vDEF">egon</value>
</field>
</data>
</T3FlexForms>'
],
'inputWithTrailingWhitespaces' => [
'<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
<data>
<field index="settings.persistenceIdentifier">
<value index="vDEF">egon</value>
</field>
</data>
</T3FlexForms>
'
],
'inputWithPrecedingAndTrailingWhitespaces' => [
'
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
<data>
<field index="settings.persistenceIdentifier">
<value index="vDEF">egon</value>
</field>
</data>
</T3FlexForms>
'
],
];
}
/**
* @test
* @dataProvider providerForXml2Array
* @param string $input
*/
public function xml2ArrayDealsProperlyWithWhitespace(string $input)
{
$expected = [
'data' => [
'settings.persistenceIdentifier' => [
'vDEF' => 'egon',
]
],
];
$this->assertSame($expected, GeneralUtility::xml2array($input));
}
/**
* @test
* @dataProvider idnaEncodeDataProvider
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment