Skip to content

Commit 325d231

Browse files
committed
add fail safe against invalid string
1 parent 3c7f40e commit 325d231

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

Source/Suin/RSSWriter/Channel.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public function appendTo(FeedInterface $feed)
147147
*/
148148
public function asXML()
149149
{
150-
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><channel></channel>');
150+
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><channel></channel>', LIBXML_NOERROR|LIBXML_ERR_NONE|LIBXML_ERR_FATAL);
151151
$xml->addChild('title', $this->title);
152152
$xml->addChild('link', $this->url);
153153
$xml->addChild('description', $this->description);

Source/Suin/RSSWriter/Feed.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public function addChannel(ChannelInterface $channel)
2828
*/
2929
public function render()
3030
{
31-
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" />');
31+
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" />', LIBXML_NOERROR|LIBXML_ERR_NONE|LIBXML_ERR_FATAL);
3232

3333
foreach ( $this->channels as $channel )
3434
{

Source/Suin/RSSWriter/Item.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public function appendTo(ChannelInterface $channel)
107107
*/
108108
public function asXML()
109109
{
110-
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><item></item>');
110+
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><item></item>', LIBXML_NOERROR|LIBXML_ERR_NONE|LIBXML_ERR_FATAL);
111111
$xml->addChild('title', $this->title);
112112
$xml->addChild('link', $this->url);
113113
$xml->addChild('description', $this->description);

Tests/Suin/RSSWriter/ItemTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,20 @@ public function test_with_amp()
165165
->description('desc&desc');
166166
$expect = '<?xml version="1.0" encoding="UTF-8"?>
167167
<item><title>test&amp;test</title><link>url&amp;url</link><description>desc&amp;desc</description></item>
168+
';
169+
170+
$this->assertSame($expect, $item->asXML()->asXML());
171+
}
172+
173+
public function test_fail_safe_against_invalid_string()
174+
{
175+
$item = new Item();
176+
$item
177+
->title("test\0test")
178+
->url("url\0test")
179+
->description("desc\0desc");
180+
$expect = '<?xml version="1.0" encoding="UTF-8"?>
181+
<item><title>test</title><link>url</link><description>desc</description></item>
168182
';
169183

170184
$this->assertSame($expect, $item->asXML()->asXML());

0 commit comments

Comments
 (0)