<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Uninitialized string offset:  0 on specific input</title>
        <description>Hi folks,

while using HTMLPurifier (4.2.0), I got some E_NOTICES, which seem to be caused by having a &amp;lt;font size=&quot;&quot;2&quot;&quot;&amp;gt; tag in my input (i.e., empty size attribute). I don't know who created this silly HTML, but I have a database full of junk (and other that this, HTMLPurifier is holding its ground!). I haven't tried minimizing the test case yet, but a quick glance at the code suggests that the length of the attribute is not checked before accessing the first character.

Anyway, here's a full backtrace.



Notice: Uninitialized string offset:  0 (Non-fatal)

Error occured at /libs/htmlpurifier-standalone/HTMLPurifier.standalone.php:15370

BackTrace:
#0    HTMLPurifier_TagTransform_Font::transform(object(HTMLPurifier_Token_Start), object(HTMLPurifier_Config), object(HTMLPurifier_Context))
                                                              called by /libs/htmlpurifier-standalone/HTMLPurifier.standalone.php:15161
#1    HTMLPurifier_Strategy_RemoveForeignElements::execute(array(0 =&amp;gt; object(HTMLPurifier_Token_Text), 1 =&amp;gt; object(HTMLPurifier_Token_Start), 2 =&amp;gt; object(HTMLPurifier_Token_Text), 3 =&amp;gt; object(HTMLPurifier_Token_Start), 4 =&amp;gt; object(HTMLPurifier_Token_Text), 5 =&amp;gt; object(HTMLPurifier_Token_Empty), 6 =&amp;gt; object(HTMLPurifier_Token_Text), 7 =&amp;gt; object(HTMLPurifier_Token_Empty), 8 =&amp;gt; object(HTMLPurifier_Token_Empty), 9 =&amp;gt; object(HTMLPurifier_Token_Text), 10 =&amp;gt; object(HTMLPurifier_Token_Empty), 11 =&amp;gt; object(HTMLPurifier_Token_Empty), 12 =&amp;gt; object(HTMLPurifier_Token_Text), 13 =&amp;gt; object(HTMLPurifier_Token_Empty), 14 =&amp;gt; object(HTMLPurifier_Token_Start), 15 =&amp;gt; object(HTMLPurifier_Token_Text), 16 =&amp;gt; object(HTMLPurifier_Token_Empty), 17 =&amp;gt; object(HTMLPurifier_Token_End), 18 =&amp;gt; object(HTMLPurifier_Token_Empty), 19 =&amp;gt; object(HTMLPurifier_Token_End), 20 =&amp;gt; object(HTMLPurifier_Token_End), 21 =&amp;gt; object(HTMLPurifier_Token_Start), 22 =&amp;gt; object(HTMLPurifier_Token_Start), 23 =&amp;gt; object(HTMLPurifier_T!
 oken_Empty), 24 =&amp;gt; object(HTMLPurifier_Token_End), 25 =&amp;gt; object(HTMLPurifier_Token_End)), object(HTMLPurifier_Config), object(HTMLPurifier_Context))
                                                              called by /libs/htmlpurifier-standalone/HTMLPurifier.standalone.php:14260
#2    HTMLPurifier_Strategy_Composite::execute(array(0 =&amp;gt; object(HTMLPurifier_Token_Text), 1 =&amp;gt; object(HTMLPurifier_Token_Start), 2 =&amp;gt; object(HTMLPurifier_Token_Text), 3 =&amp;gt; object(HTMLPurifier_Token_Start), 4 =&amp;gt; object(HTMLPurifier_Token_Text), 5 =&amp;gt; object(HTMLPurifier_Token_Empty), 6 =&amp;gt; object(HTMLPurifier_Token_Text), 7 =&amp;gt; object(HTMLPurifier_Token_Empty), 8 =&amp;gt; object(HTMLPurifier_Token_Empty), 9 =&amp;gt; object(HTMLPurifier_Token_Text), 10 =&amp;gt; object(HTMLPurifier_Token_Empty), 11 =&amp;gt; object(HTMLPurifier_Token_Empty), 12 =&amp;gt; object(HTMLPurifier_Token_Text), 13 =&amp;gt; object(HTMLPurifier_Token_Empty), 14 =&amp;gt; object(HTMLPurifier_Token_Start), 15 =&amp;gt; object(HTMLPurifier_Token_Text), 16 =&amp;gt; object(HTMLPurifier_Token_Empty), 17 =&amp;gt; object(HTMLPurifier_Token_End), 18 =&amp;gt; object(HTMLPurifier_Token_Empty), 19 =&amp;gt; object(HTMLPurifier_Token_End), 20 =&amp;gt; object(HTMLPurifier_Token_End), 21 =&amp;gt; object(HTMLPurifier_Token_Start), 22 =&amp;gt; object(HTMLPurifier_Token_Start), 23 =&amp;gt; object(HTMLPurifier_Token_Empty),!
  24 =&amp;gt; object(HTMLPurifier_Token_End), 25 =&amp;gt; object(HTMLPurifier_Token_End)), object(HTMLPurifier_Config), object(HTMLPurifier_Context))
                                                              called by /libs/htmlpurifier-standalone/HTMLPurifier.standalone.php:201
#3    HTMLPurifier::purify(&quot; &amp;lt;span lang=&quot;&quot;N&quot;&quot;&amp;gt;&amp;lt;p&amp;gt;Het Rabo EK Hockey wordt dit jaar gehouden in het Wagener Stadion in Amsterdam. Zowel de dames als de heren strijden om de Europese titel. Het is de eerste keer dat een dubbel EK in Nederland gehouden wordt. &amp;lt;br&amp;gt;De heren verdedigen hun titel van twee jaar geleden. De dames gaan weer voor goud na hun tweede plek in 2007. Beide teams kunnen zich op het EK kwalificeren voor het WK van 2010. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Tickets zijn te verkrijgen via www.topticketline.nl (0900 300 1000, 40cpm). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Let op; Leden van de Rabobank krijgen 25% korting. Meer info hierover is te vinden op&amp;lt;br&amp;gt;&amp;lt;a class=&quot;new-window&quot; href=&quot;http://www.rabobank.nl/particulieren/servicemenu/leden/sport_en_ontspanning_aanbiedingen/kaarten_ek_hockey/default&quot;&amp;gt;http://www.rabobank.nl/particulieren/servicemenu/leden/sport_en_ontspanning_aanbiedingen/kaarten_ek_hockey/default&amp;lt;br&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;font face=&quot;&quot;Arial&quot;&quot; size=&quot;&quot;2&quot;&quot;&amp;gt;&amp;lt;font face=&quot;&quot;Arial&quot;&quot; size=&quot;&quot;2&quot;&quot;&amp;gt;&amp;lt;span lang=&quot;&quot;EN&quot;&quot;&amp;gt;&amp;lt;/spa!
 n&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&quot;)
                                                              called by /tools/import_news.php:100


Is this the right place to report a bug like this?</description>
        <link>http://htmlpurifier.org/phorum/read.php?3,5442,5442#msg-5442</link>
        <lastBuildDate>Sat, 18 May 2013 21:10:25 -0400</lastBuildDate>
        <generator>Phorum 5.2.18</generator>
        <item>
            <guid>http://htmlpurifier.org/phorum/read.php?3,5442,5453#msg-5453</guid>
            <title>Re: Uninitialized string offset:  0 on specific input</title>
            <link>http://htmlpurifier.org/phorum/read.php?3,5442,5453#msg-5453</link>
            <description><![CDATA[<p>Awesome, thanks!</p>]]></description>
            <dc:creator>Matthijs Kooijman</dc:creator>
            <category>Support</category>
            <pubDate>Mon, 21 Mar 2011 13:56:00 -0400</pubDate>
        </item>
        <item>
            <guid>http://htmlpurifier.org/phorum/read.php?3,5442,5444#msg-5444</guid>
            <title>Re: Uninitialized string offset:  0 on specific input</title>
            <link>http://htmlpurifier.org/phorum/read.php?3,5442,5444#msg-5444</link>
            <description><![CDATA[<p><a href="http://repo.or.cz/w/htmlpurifier.git/commit/ee9c70ab7f59f1c035aa9ea1982bf9c999d2e57e">http://repo.or.cz/w/htmlpurifier.git/commit/ee9c70ab7f59f1c035aa9ea1982bf9c999d2e57e</a></p>]]></description>
            <dc:creator>Ambush Commander</dc:creator>
            <category>Support</category>
            <pubDate>Thu, 17 Mar 2011 13:35:02 -0400</pubDate>
        </item>
        <item>
            <guid>http://htmlpurifier.org/phorum/read.php?3,5442,5443#msg-5443</guid>
            <title>Re: Uninitialized string offset:  0 on specific input</title>
            <link>http://htmlpurifier.org/phorum/read.php?3,5442,5443#msg-5443</link>
            <description><![CDATA[<p>Looks like a bug (a harmless one, but a bug nonetheless). Thanks for reporting!</p>]]></description>
            <dc:creator>Ambush Commander</dc:creator>
            <category>Support</category>
            <pubDate>Thu, 17 Mar 2011 13:28:39 -0400</pubDate>
        </item>
        <item>
            <guid>http://htmlpurifier.org/phorum/read.php?3,5442,5442#msg-5442</guid>
            <title>Uninitialized string offset:  0 on specific input</title>
            <link>http://htmlpurifier.org/phorum/read.php?3,5442,5442#msg-5442</link>
            <description><![CDATA[<p>Hi folks,</p>

<p>while using HTMLPurifier (4.2.0), I got some E_NOTICES, which seem to be caused by having a &lt;font size=""2""&gt; tag in my input (i.e., empty size attribute). I don't know who created this silly HTML, but I have a database full of junk (and other that this, HTMLPurifier is holding its ground!). I haven't tried minimizing the test case yet, but a quick glance at the code suggests that the length of the attribute is not checked before accessing the first character.</p>

<p>Anyway, here's a full backtrace.
</p>

<pre>
Notice: Uninitialized string offset:  0 (Non-fatal)

Error occured at /libs/htmlpurifier-standalone/HTMLPurifier.standalone.php:15370

BackTrace:
#0    HTMLPurifier_TagTransform_Font::transform(object(HTMLPurifier_Token_Start), object(HTMLPurifier_Config), object(HTMLPurifier_Context))
                                                              called by /libs/htmlpurifier-standalone/HTMLPurifier.standalone.php:15161
#1    HTMLPurifier_Strategy_RemoveForeignElements::execute(array(0 =&gt; object(HTMLPurifier_Token_Text), 1 =&gt; object(HTMLPurifier_Token_Start), 2 =&gt; object(HTMLPurifier_Token_Text), 3 =&gt; object(HTMLPurifier_Token_Start), 4 =&gt; object(HTMLPurifier_Token_Text), 5 =&gt; object(HTMLPurifier_Token_Empty), 6 =&gt; object(HTMLPurifier_Token_Text), 7 =&gt; object(HTMLPurifier_Token_Empty), 8 =&gt; object(HTMLPurifier_Token_Empty), 9 =&gt; object(HTMLPurifier_Token_Text), 10 =&gt; object(HTMLPurifier_Token_Empty), 11 =&gt; object(HTMLPurifier_Token_Empty), 12 =&gt; object(HTMLPurifier_Token_Text), 13 =&gt; object(HTMLPurifier_Token_Empty), 14 =&gt; object(HTMLPurifier_Token_Start), 15 =&gt; object(HTMLPurifier_Token_Text), 16 =&gt; object(HTMLPurifier_Token_Empty), 17 =&gt; object(HTMLPurifier_Token_End), 18 =&gt; object(HTMLPurifier_Token_Empty), 19 =&gt; object(HTMLPurifier_Token_End), 20 =&gt; object(HTMLPurifier_Token_End), 21 =&gt; object(HTMLPurifier_Token_Start), 22 =&gt; object(HTMLPurifier_Token_Start), 23 =&gt; object(HTMLPurifier_T!
 oken_Empty), 24 =&gt; object(HTMLPurifier_Token_End), 25 =&gt; object(HTMLPurifier_Token_End)), object(HTMLPurifier_Config), object(HTMLPurifier_Context))
                                                              called by /libs/htmlpurifier-standalone/HTMLPurifier.standalone.php:14260
#2    HTMLPurifier_Strategy_Composite::execute(array(0 =&gt; object(HTMLPurifier_Token_Text), 1 =&gt; object(HTMLPurifier_Token_Start), 2 =&gt; object(HTMLPurifier_Token_Text), 3 =&gt; object(HTMLPurifier_Token_Start), 4 =&gt; object(HTMLPurifier_Token_Text), 5 =&gt; object(HTMLPurifier_Token_Empty), 6 =&gt; object(HTMLPurifier_Token_Text), 7 =&gt; object(HTMLPurifier_Token_Empty), 8 =&gt; object(HTMLPurifier_Token_Empty), 9 =&gt; object(HTMLPurifier_Token_Text), 10 =&gt; object(HTMLPurifier_Token_Empty), 11 =&gt; object(HTMLPurifier_Token_Empty), 12 =&gt; object(HTMLPurifier_Token_Text), 13 =&gt; object(HTMLPurifier_Token_Empty), 14 =&gt; object(HTMLPurifier_Token_Start), 15 =&gt; object(HTMLPurifier_Token_Text), 16 =&gt; object(HTMLPurifier_Token_Empty), 17 =&gt; object(HTMLPurifier_Token_End), 18 =&gt; object(HTMLPurifier_Token_Empty), 19 =&gt; object(HTMLPurifier_Token_End), 20 =&gt; object(HTMLPurifier_Token_End), 21 =&gt; object(HTMLPurifier_Token_Start), 22 =&gt; object(HTMLPurifier_Token_Start), 23 =&gt; object(HTMLPurifier_Token_Empty),!
  24 =&gt; object(HTMLPurifier_Token_End), 25 =&gt; object(HTMLPurifier_Token_End)), object(HTMLPurifier_Config), object(HTMLPurifier_Context))
                                                              called by /libs/htmlpurifier-standalone/HTMLPurifier.standalone.php:201
#3    HTMLPurifier::purify(" &lt;span lang=""N""&gt;&lt;p&gt;Het Rabo EK Hockey wordt dit jaar gehouden in het Wagener Stadion in Amsterdam. Zowel de dames als de heren strijden om de Europese titel. Het is de eerste keer dat een dubbel EK in Nederland gehouden wordt. &lt;br&gt;De heren verdedigen hun titel van twee jaar geleden. De dames gaan weer voor goud na hun tweede plek in 2007. Beide teams kunnen zich op het EK kwalificeren voor het WK van 2010. &lt;br&gt;&lt;br&gt;Tickets zijn te verkrijgen via www.topticketline.nl (0900 300 1000, 40cpm). &lt;br&gt;&lt;br&gt;Let op; Leden van de Rabobank krijgen 25% korting. Meer info hierover is te vinden op&lt;br&gt;&lt;a class="new-window" href="<a href="http://www.rabobank.nl/particulieren/servicemenu/leden/sport_en_ontspanning_aanbiedingen/kaarten_ek_hockey/default">http://www.rabobank.nl/particulieren/servicemenu/leden/sport_en_ontspanning_aanbiedingen/kaarten_ek_hockey/default</a>"&gt;<a href="http://www.rabobank.nl/particulieren/servicemenu/leden/sport_en_ontspanning_aanbiedingen/kaarten_ek_hockey/default">http://www.rabobank.nl/particulieren/servicemenu/leden/sport_en_ontspanning_aanbiedingen/kaarten_ek_hockey/default</a>&lt;br&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;/span&gt;&lt;font face=""Arial"" size=""2""&gt;&lt;font face=""Arial"" size=""2""&gt;&lt;span lang=""EN""&gt;&lt;/spa!
 n&gt;&lt;/font&gt;&lt;/font&gt;")
                                                              called by /tools/import_news.php:100
</pre>

<p>Is this the right place to report a bug like this?</p>]]></description>
            <dc:creator>Matthijs Kooijman</dc:creator>
            <category>Support</category>
            <pubDate>Thu, 17 Mar 2011 10:55:16 -0400</pubDate>
        </item>
    </channel>
</rss>
