<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>6452</bug_id>
          
          <creation_ts>2006-01-09 08:54:03 -0800</creation_ts>
          <short_desc>KURL::appendEscapingBadChars() doesn&apos;t know about %u-escaping.</short_desc>
          <delta_ts>2019-02-06 09:03:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Henrik Grubbström">grubba</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>28056</commentid>
    <comment_count>0</comment_count>
    <who name="Henrik Grubbström">grubba</who>
    <bug_when>2006-01-09 08:54:03 -0800</bug_when>
    <thetext>Sending a %u-escaped string (eg as generated by escape() for unicode data) to
XMLHttpRequest::open() will cause any %u&apos;s to be escaped an extra time (ie the
webserver will receive %25u2014 instead of %u2014). The likely culprit seems to
be WebCore/kwq/KWQKURL.mm::appendEscapingBadChars(), which doesn&apos;t know about
%u-style escaping.

A patch similar to the following ought to fix the problem:

--- KWQKURL.mm.orig     Mon Jan  9 17:43:02 2006
+++ KWQKURL.mm  Mon Jan  9 17:46:04 2006
@@ -981,6 +981,16 @@
                 *p++ = c;
                 *p++ = *str++;
                 *p++ = *str++;
+           } else if (c == &apos;%&apos; &amp;&amp; strEnd - str &gt;= 5 &amp;&amp;
+                      (str[0] == &apos;u&apos; || str[0] == &apos;U&apos;) &amp;&amp;
+                      isHexDigit(str[0]) &amp;&amp; isHexDigit(str[1]) &amp;&amp;
+                      isHexDigit(str[2]) &amp;&amp; isHexDigit(str[3])) {
+                *p++ = c;
+                *p++ = *str++;
+                *p++ = *str++;
+                *p++ = *str++;
+                *p++ = *str++;
+                *p++ = *str++;
             } else if (c == &apos;?&apos;) {
                 *p++ = c;
             } else {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28130</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-10 05:14:22 -0800</bug_when>
    <thetext>Do you have a test case that behaves differently in Safari and Firefox (or Internet Explorer)? The problem is 
not entirely clear to me from the description, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28134</commentid>
    <comment_count>2</comment_count>
    <who name="Henrik Grubbström">grubba</who>
    <bug_when>2006-01-10 05:47:26 -0800</bug_when>
    <thetext>I&apos;ve verified that my javascript code works as expected in Firefox 1.5.

It&apos;s hard to do a portable test case, since the typical use is in AJAX code, but
here&apos;s an extract:

index.js:

var isSafari = navigator.appVersion.match(&quot;AppleWebKit&quot;);

    function xmlhttpRequest(filepath, callback)
    {
      var xmlhttp;
      if(window.XMLHttpRequest)
      { // Mozilla, Safari, ...
        xmlhttp = new XMLHttpRequest();
      }
      else if (window.ActiveXObject)
      { // IE
        xmlhttp = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);
      }
      
      xmlhttp.open(&quot;GET&quot;, filepath, true);
      xmlhttp.onreadystatechange = function()
      {
        var value = callback(xmlhttp);
	return value;
      };
      xmlhttp.send(null)
    }

    function getResponseXML(xmlhttp)
    {
      var doc = document.importNode(xmlhttp.responseXML.documentElement, true);
      
      if(isSafari)
      {
        // Safari doesn&apos;t initialise all node attributes (name, class etc.)
	// properly without this workaround.
        doc.innerHTML = doc.innerHTML;
      }

      return doc;
    }

    function editGetFields(tag_list, data)
    {
      for(var i = 0; i &lt; tag_list.length; i++)
      {
        var name = tag_list.item(i).getAttribute(&quot;name&quot;);
        if(name)
	{
	  data[name] = tag_list.item(i).value;
	}
      }
    }
       
    function editTextSave(button, close)
    {
      var div_edit = document.getElementById(&quot;document-editor&quot;);
      var document_id = div_edit.getAttribute(&quot;name&quot;);

      var article_id = getArticleId(div_edit);
      var article_tr = document.getElementById(&quot;article-open-&quot; + article_id);
    
      var data = new Object;
      editGetFields(div_edit.getElementsByTagName(&quot;input&quot;), data);
      editGetFields(div_edit.getElementsByTagName(&quot;textarea&quot;), data);

      var callback = function(xmlhttp)
      {
        if(xmlhttp.readyState != 4)
	  return;

	var table_db = getResponseXML(xmlhttp);
	var tr_db = table_db.getElementsByTagName(&quot;tr&quot;).item(0);
	  
	article_tr.parentNode.replaceChild(tr_db, article_tr);
	  
	if(close)
	{
	  displayArticleList();
	}
      }

      xmlhttpRequest(&quot;actions/edit-text-save.xml?&quot; +
                     &quot;article_id=&quot;+escape(article_id) + &quot;&amp;&quot; +
                     &quot;document_id=&quot;+escape(document_id) + &quot;&amp;&quot; +
		     &quot;finished=&quot;+escape(data.finished) + &quot;&amp;&quot; +
		     &quot;headline=&quot;+escape(data.headline) + &quot;&amp;&quot; +
		     &quot;subheadline=&quot;+escape(data.subheadline) + &quot;&amp;&quot; +
		     &quot;keywords=&quot;+escape(data.keywords) + &quot;&amp;&quot; +
		     &quot;blurb=&quot;+escape(data.blurb) + &quot;&amp;&quot; +
		     &quot;byline=&quot;+escape(data.byline) + &quot;&amp;&quot; +
		     &quot;notes=&quot;+escape(data.notes) + &quot;&amp;&quot; +
		     &quot;story=&quot;+escape(data.story),
		     callback);
		     
      return false;
    }

If one of data.x contains a unicode character outside ISO-8859-1 (like eg \u2014
(EM_DASH)), escape() above will encode it with %u-style encoding (eg %u2014).
This is as expected. However when the resulting request is received by the http
server the DWIM in XMLHttpRequest::open() will have quoted it an extra time (to
eg %25u2014) when sent by Safari:

ceylon.roxen.com - - [09/Jan/2006:17:15:44 +0100] &quot;GET /es/actions/edit-text-sav
e.xml?article_id=441&amp;document_id=324&amp;finished=on&amp;headline=Katastrofhj%E4lp%20_%2
0ny%20exportsatsning&amp;subheadline=&amp;keywords=&amp;blurb=&amp;byline=&amp;notes=&amp;story=%E5%E4%F
6%20%25uACA1%25uAC94%25uAC84%0A%0AKatastrofhj%E4lp%20%25u2014%20ny%20exportsatsn
ing%20%E5%E4%F6%20%BFSpanska%20fr%E5gor%3F%2075%20%25u2031%20%25u260E%0A%0AStora
%20katastrofer%20skapar%20lidande%20och%20n%F6d%20%25u2014%20men%20ocks%E5%20exp
[...]

Note that there are several cases of double-escaped unicode characters above.

But not with Firefox:

shipon.roxen.com - - [09/Jan/2006:16:23:33 +0100] &quot;GET /es/actions/edit-text-sav
e.xml?article_id=441&amp;document_id=324&amp;finished=on&amp;headline=Katastrofhj%E4lp%20_%2
0ny%20exportsatsning&amp;subheadline=&amp;keywords=&amp;blurb=&amp;byline=&amp;notes=&amp;story=%u6CE8%u
6587%u65B9%u6CD5%u304C%u3072%u3068%u76EE%u3067%u308F%u304B%u308B%u30AC%u30A4%u30
C9%u30C4%u30A2%u30FC%u306F%u3053%u3061%u3089%u3002%0A%u260E%20%E5%E4%F6%2075%20%
[...]

Above unicode characters have been escaped a single time (as expected).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28162</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-10 09:52:55 -0800</bug_when>
    <thetext>Yes, I can see this with a simple test html and tcpflow.

Would you like to submit the patch for review (by adding ChangeLog notes, attaching the patch as a file 
and setting a review flag)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28163</commentid>
    <comment_count>4</comment_count>
      <attachid>5599</attachid>
    <who name="Henrik Grubbström">grubba</who>
    <bug_when>2006-01-10 10:01:50 -0800</bug_when>
    <thetext>Created attachment 5599
Suggested patch for KWQKURL.mm::appendEscapingBadChars()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28166</commentid>
    <comment_count>5</comment_count>
      <attachid>5600</attachid>
    <who name="Henrik Grubbström">grubba</who>
    <bug_when>2006-01-10 10:15:39 -0800</bug_when>
    <thetext>Created attachment 5600
Now with ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28169</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-10 10:33:06 -0800</bug_when>
    <thetext>My test case: &lt;http://nypop.com/~ap/webkit/xmlhttp-url-encoding.html&gt; (too lazy to make one that 
doesn&apos;t require tcpflow, and no idea about how to make an automated one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28194</commentid>
    <comment_count>7</comment_count>
      <attachid>5599</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-10 15:08:06 -0800</bug_when>
    <thetext>Comment on attachment 5599
Suggested patch for KWQKURL.mm::appendEscapingBadChars()

First, thanks for submitting this patch. It seems quite important to fix this
bug!

But I don&apos;t think this fix is correct.

I think we should either be escaping all % characters in the string or not
escaping any. It doesn&apos;t seem right to decide whether to escape the % character
based on whether it&apos;s followed by u201F (for example) or not.

If we shouldn&apos;t be escaping &quot;%&quot; characters in this case, then we need to change
KURL behavior, perhaps adding a parameter if we don&apos;t always want that
behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28217</commentid>
    <comment_count>8</comment_count>
      <attachid>5600</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-10 19:49:46 -0800</bug_when>
    <thetext>Comment on attachment 5600
Now with ChangeLog entry.

OK, but my review comment stands (see comment 7 above). I don&apos;t think this is
the correct fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28231</commentid>
    <comment_count>9</comment_count>
    <who name="Henrik Grubbström">grubba</who>
    <bug_when>2006-01-11 01:39:04 -0800</bug_when>
    <thetext>I agree that having DWIM&apos;s like appendEscapingBadChars() is generally a bad idea
to begin with, but now that it&apos;s there, it should either be fixed or removed
entirely (which might break code that doesn&apos;t perform escaping properly, and
thus relies on it being there). The alternative of escaping all &quot;%&quot; characters
would break compatibility with eg Firefox even more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28232</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-11 05:05:32 -0800</bug_when>
    <thetext>I have updated the test case a bit to show more different cases. In the test, both MSIE and Firefox never 
escape % characters (MSIE doesn&apos;t even escape non-ASCII characters, actually).

Looks like the DWIM code first appeared in a massive KURL rewrite between revisions 1905 and 1906; so 
it&apos;s not entirely obvious if it serves any purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32499</commentid>
    <comment_count>11</comment_count>
      <attachid>6486</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-02-14 12:21:52 -0800</bug_when>
    <thetext>Created attachment 6486
don&apos;t escape % characters

I don&apos;t really see how to check all code paths that end up in appendEscapingBadChars()... There is a regression test included in the patch, and &quot;everything else&quot; still seems to work fine - which is admittedly less than a perfect evidence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32541</commentid>
    <comment_count>12</comment_count>
      <attachid>6486</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-14 18:05:24 -0800</bug_when>
    <thetext>Comment on attachment 6486
don&apos;t escape % characters

Based on your test case I think never escaping % is the right thing. I think I am the one who did the rewrite and I didn&apos;t have a specific reason for escaping %.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57107</commentid>
    <comment_count>13</comment_count>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2007-09-26 13:25:54 -0700</bug_when>
    <thetext>Note that IE7 changes this behavior. It rejects all invalid escape sequences and will not load the URL. This includes the %uXXXX form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502907</commentid>
    <comment_count>14</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:07 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5599</attachid>
            <date>2006-01-10 10:01:50 -0800</date>
            <delta_ts>2006-01-10 15:08:06 -0800</delta_ts>
            <desc>Suggested patch for KWQKURL.mm::appendEscapingBadChars()</desc>
            <filename>KWQKURL.mm.patch</filename>
            <type>text/plain</type>
            <size>631</size>
            <attacher name="Henrik Grubbström">grubba</attacher>
            
              <data encoding="base64">LS0tIEtXUUtVUkwubW0ub3JpZwlUdWUgSmFuIDEwIDE4OjU2OjM3IDIwMDYKKysrIEtXUUtVUkwu
bW0JVHVlIEphbiAxMCAxODo1ODozOCAyMDA2CkBAIC05ODEsNiArOTgxLDE2IEBACiAgICAgICAg
ICAgICAgICAgKnArKyA9IGM7CiAgICAgICAgICAgICAgICAgKnArKyA9ICpzdHIrKzsKICAgICAg
ICAgICAgICAgICAqcCsrID0gKnN0cisrOworCSAgICB9IGVsc2UgaWYgKGMgPT0gJyUnICYmIHN0
ckVuZCAtIHN0ciA+PSA1ICYmCisJCSAgICAgICAoc3RyWzBdID09ICd1JyB8fCBzdHJbMF0gPT0g
J1UnKSAmJgorCQkgICAgICAgaXNIZXhEaWdpdChzdHJbMF0pICYmIGlzSGV4RGlnaXQoc3RyWzFd
KSAmJgorCQkgICAgICAgaXNIZXhEaWdpdChzdHJbMl0pICYmIGlzSGV4RGlnaXQoc3RyWzNdKSkg
eworCSAgICAgICAgKnArKyA9IGM7CisJICAgICAgICAqcCsrID0gKnN0cisrOworCSAgICAgICAg
KnArKyA9ICpzdHIrKzsKKwkgICAgICAgICpwKysgPSAqc3RyKys7CisJICAgICAgICAqcCsrID0g
KnN0cisrOworCSAgICAgICAgKnArKyA9ICpzdHIrKzsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
YyA9PSAnPycpIHsKICAgICAgICAgICAgICAgICAqcCsrID0gYzsKICAgICAgICAgICAgIH0gZWxz
ZSB7Cg==
</data>
<flag name="review"
          id="1235"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5600</attachid>
            <date>2006-01-10 10:15:39 -0800</date>
            <delta_ts>2006-02-14 12:21:52 -0800</delta_ts>
            <desc>Now with ChangeLog entry.</desc>
            <filename>WebCore.patch</filename>
            <type>text/plain</type>
            <size>1062</size>
            <attacher name="Henrik Grubbström">grubba</attacher>
            
              <data encoding="base64">LS0tIFdlYkNvcmUvQ2hhbmdlTG9nLm9yaWcJVHVlIEphbiAxMCAxOTowNzowOSAyMDA2CisrKyBX
ZWJDb3JlL0NoYW5nZUxvZwlUdWUgSmFuIDEwIDE5OjEwOjQ0IDIwMDYKQEAgLTEsMyArMSw5IEBA
CisyMDA2LTAxLTEwICBIZW5yaWsgR3J1YmJzdHL2bSAgPGdydWJiYUBncnViYmEub3JnPgorCisJ
KiBrd3EvS1dRS1VSTC5tbToKKwlLSU86OmFwcGVuZEVzY2FwaW5nQmFkQ2hhcnMoKSBlcnJvbmVv
dXNseSBlc2NhcGVkICV1IHNlcXVlbmNlcyBhbgorCWV4dHJhIHRpbWUgKGh0dHA6Ly9idWd6aWxs
YS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1MikuCisKIDIwMDYtMDEtMDcgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQG1hYy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TWFjaWVqLgotLS0gV2ViQ29yZS9rd3EvS1dRS1VSTC5tbS5vcmlnCVR1ZSBKYW4gMTAgMTg6NTY6
MzcgMjAwNgorKysgV2ViQ29yZS9rd3EvS1dRS1VSTC5tbQlUdWUgSmFuIDEwIDE4OjU4OjM4IDIw
MDYKQEAgLTk4MSw2ICs5ODEsMTYgQEAKICAgICAgICAgICAgICAgICAqcCsrID0gYzsKICAgICAg
ICAgICAgICAgICAqcCsrID0gKnN0cisrOwogICAgICAgICAgICAgICAgICpwKysgPSAqc3RyKys7
CisJICAgIH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgc3RyRW5kIC0gc3RyID49IDUgJiYKKwkJICAg
ICAgIChzdHJbMF0gPT0gJ3UnIHx8IHN0clswXSA9PSAnVScpICYmCisJCSAgICAgICBpc0hleERp
Z2l0KHN0clswXSkgJiYgaXNIZXhEaWdpdChzdHJbMV0pICYmCisJCSAgICAgICBpc0hleERpZ2l0
KHN0clsyXSkgJiYgaXNIZXhEaWdpdChzdHJbM10pKSB7CisJICAgICAgICAqcCsrID0gYzsKKwkg
ICAgICAgICpwKysgPSAqc3RyKys7CisJICAgICAgICAqcCsrID0gKnN0cisrOworCSAgICAgICAg
KnArKyA9ICpzdHIrKzsKKwkgICAgICAgICpwKysgPSAqc3RyKys7CisJICAgICAgICAqcCsrID0g
KnN0cisrOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjID09ICc/JykgewogICAgICAgICAgICAg
ICAgICpwKysgPSBjOwogICAgICAgICAgICAgfSBlbHNlIHsK
</data>
<flag name="review"
          id="1236"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6486</attachid>
            <date>2006-02-14 12:21:52 -0800</date>
            <delta_ts>2006-02-14 18:05:24 -0800</delta_ts>
            <desc>don&apos;t escape % characters</desc>
            <filename>6452r2_patch.txt</filename>
            <type>text/plain</type>
            <size>2531</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcGVyY2VudC1lc2NhcGluZy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcGVyY2VudC1lc2NhcGluZy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9lbmNvZGluZy9wZXJjZW50LWVz
Y2FwaW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8dGl0bGU+UGVyY2VudCBlc2NhcGluZzwvdGl0bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1MiI+YnVnIDY0NTI8L2E+IC0gCitLSU86OmFwcGVuZEVzY2Fw
aW5nQmFkQ2hhcnMoKSBzaG91bGQgbmV2ZXIgZXNjYXBlIHBlcmNlbnQgY2hhcmFjdGVycy48L3A+
Cis8Zm9ybSBhY3Rpb249J3Jlc291cmNlcy8lMjUyNSV1MDQzNSAwICV4eCUyNSUldWxpa2UuaHRt
bCcgbmFtZT1mPgorIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXEgdmFsdWU9Jyc+Cis8L2Zvcm0+
Cis8c2NyaXB0PgorCisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICB9CisKKyAgZG9jdW1lbnQuZi5zdWJtaXQoKTsKKworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VuY29kaW5n
L3Jlc291cmNlcy8lMjUldTA0MzUgMCAleHglJSV1bGlrZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZW5jb2RpbmcvcmVzb3VyY2VzLyUyNSV1MDQzNSAwICV4eCUlJXVsaWtl
Lmh0bWwgMCAleHglJSV1bGlrZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9lbmNvZGluZy9yZXNvdXJjZXMvJTI1JXUwNDM1IDAgJXh4JSUldWxpa2UuaHRtbCAwICV4eCUl
JXVsaWtlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzxodG1sPgorPGJvZHkg
b25sb2FkPSJqYXZhc2NyaXB0OgorICAvLyBXaW5JRSBhbmQgRmlyZWZveCB1c2UgdGhlIHNhbWUg
VVJMLCBidXQgaW4gV2luSUUsIGRvY3VtZW50LlVSTCByZXR1cm5zIHVuZXNjYXBlZCB0ZXh0Cisg
IGlmIChkb2N1bWVudC5VUkwubWF0Y2goJyUyNS4qaHRtbCcpID09ICclMjUyNSV1MDQzNSUyMDAl
MjAleHglMjUlJXVsaWtlLmh0bWwnIHx8IAorICAgICAgZG9jdW1lbnQuVVJMLm1hdGNoKCclMjUu
Kmh0bWwnKSA9PSAnJTI1JXUwNDM1IDAgJXh4JSUldWxpa2UuaHRtbCcpCisgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9ICdTVUNDRVNT
JzsKKworICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisiPgorPHA+VGVzdCBm
b3IgPGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NDUyIj5idWcgNjQ1MjwvYT4gLSAKK0tJTzo6YXBwZW5kRXNjYXBpbmdCYWRDaGFycygpIHNo
b3VsZCBuZXZlciBlc2NhcGUgcGVyY2VudCBjaGFyYWN0ZXJzLjwvcD4KKzxwIGlkPXJlc3VsdD5G
QUlMVVJFPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViQ29yZS9rd3EvS1dRS1VSTC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2t3cS9LV1FLVVJMLm1tCShyZXZpc2lvbiAxMjc5MSkK
KysrIFdlYkNvcmUva3dxL0tXUUtVUkwubW0JKHdvcmtpbmcgY29weSkKQEAgLTgxOCwxMSArODE4
LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhjaGFyKgogICAgIHdoaWxl
IChzdHIgPCBzdHJFbmQpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnN0cisrOwogICAg
ICAgICBpZiAoaXNCYWRDaGFyKGMpKSB7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnJScgJiYgc3Ry
RW5kIC0gc3RyID49IDIgJiYgaXNIZXhEaWdpdChzdHJbMF0pICYmIGlzSGV4RGlnaXQoc3RyWzFd
KSkgewotICAgICAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICAgICAgICAgICpwKysgPSAq
c3RyKys7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICpzdHIrKzsKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoYyA9PSAnPycpIHsKKyAgICAgICAgICAgIGlmIChjID09ICclJyB8fCBjID09ICc/Jykg
ewogICAgICAgICAgICAgICAgICpwKysgPSBjOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAqcCsrID0gJyUnOwo=
</data>
<flag name="review"
          id="1610"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>