<?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>128593</bug_id>
          
          <creation_ts>2014-02-11 03:13:54 -0800</creation_ts>
          <short_desc>Tighten XMLHttpRequest setRequestHeader value check</short_desc>
          <delta_ts>2015-07-30 08:47:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>chrism</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979357</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-02-11 03:13:54 -0800</bug_when>
    <thetext>XMLHttpRequest::setRequestHeader currently validates header names and values.
This validation could be tighten for header values as illustrated by http://w3c-test.org/web-platform-tests/master/XMLHttpRequest/setrequestheader-bogus-value.htm
According RFC2616, header values should be encoded as ISO-8859-1 and should not contain any control character except whitespaces (CR, LF, SPACE and TAB)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979361</commentid>
    <comment_count>1</comment_count>
      <attachid>223839</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-02-11 03:41:56 -0800</bug_when>
    <thetext>Created attachment 223839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041705</commentid>
    <comment_count>2</comment_count>
      <attachid>223839</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-14 15:43:19 -0700</bug_when>
    <thetext>Comment on attachment 223839
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=223839&amp;action=review

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:105
&gt; +bool isValidHTTPHeaderValue(const String&amp; characters)

I don’t think “characters” is a good name for a string. Maybe “string” or “value”. Maybe make this take a StringView instead of a const String&amp;.

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:116
&gt; +    // FIXME: Check all constraints in one loop
&gt; +    if (!characters.containsOnlyLatin1() || characters.contains(&apos;\r&apos;) || characters.contains(&apos;\n&apos;))
&gt; +        return false;
&gt; +    // FIXME: Add validation of encoding rules defined by RFC 2047.
&gt; +    for (unsigned i = 0; i &lt; characters.length(); ++i) {
&gt; +        UChar c = characters[i];
&gt; +        // Check that c is not a control character except if whitespace (reduced to 0x09 in that context)
&gt; +        if (c &lt;= 0x1F &amp;&amp; c != 0x09)
&gt; +            return false;
&gt; +    }

This seems like a strange way to write this. Why have four different loops here? I would write:

    unsigned length = value.length();
    for (unsigned i = 0; i &lt; length; ++i) {
        UChar character = value[i];
        if (character != &apos;\t&apos; &amp;&amp; (character &lt; 0x20 || character &gt; 0x7F))
            return false;
    }
    return true;

If you took a string view it could be:

    for (UChar character : value.codeunits()) {
        if (character != &apos;\t&apos; &amp;&amp; (character &lt; 0x20 || character &gt; 0x7F))
            return false;
    }

No need for containsOnlyLatin1, or a special check for \r or \n.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041913</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-10-15 12:06:59 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 223839 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=223839&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/HTTPParsers.cpp:105
&gt; &gt; +bool isValidHTTPHeaderValue(const String&amp; characters)
&gt; 
&gt; I don’t think “characters” is a good name for a string. Maybe “string” or “value”. Maybe make this take a StringView instead of a const String&amp;.
&gt; 
&gt; &gt; Source/WebCore/platform/network/HTTPParsers.cpp:116
&gt; &gt; +    // FIXME: Check all constraints in one loop
&gt; &gt; +    if (!characters.containsOnlyLatin1() || characters.contains(&apos;\r&apos;) || characters.contains(&apos;\n&apos;))
&gt; &gt; +        return false;
&gt; &gt; +    // FIXME: Add validation of encoding rules defined by RFC 2047.
&gt; &gt; +    for (unsigned i = 0; i &lt; characters.length(); ++i) {
&gt; &gt; +        UChar c = characters[i];
&gt; &gt; +        // Check that c is not a control character except if whitespace (reduced to 0x09 in that context)
&gt; &gt; +        if (c &lt;= 0x1F &amp;&amp; c != 0x09)
&gt; &gt; +            return false;
&gt; &gt; +    }
&gt; 
&gt; This seems like a strange way to write this. Why have four different loops here? I would write:
&gt; 
&gt;     unsigned length = value.length();
&gt;     for (unsigned i = 0; i &lt; length; ++i) {
&gt;         UChar character = value[i];
&gt;         if (character != &apos;\t&apos; &amp;&amp; (character &lt; 0x20 || character &gt; 0x7F))
&gt;             return false;
&gt;     }
&gt;     return true;
&gt; 
&gt; If you took a string view it could be:
&gt; 
&gt;     for (UChar character : value.codeunits()) {
&gt;         if (character != &apos;\t&apos; &amp;&amp; (character &lt; 0x20 || character &gt; 0x7F))
&gt;             return false;
&gt;     }
&gt; 
&gt; No need for containsOnlyLatin1, or a special check for \r or \n.

Thanks for the review.
IIRC, I wrote it this way to easily align with the spec rules.
Reading it again, I agree with your suggestion.
Also I just saw RFC2616 was recently obsolete by RFC7230, which may have an impact on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042105</commentid>
    <comment_count>4</comment_count>
      <attachid>239942</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-10-16 04:02:45 -0700</bug_when>
    <thetext>Created attachment 239942
Updated according comments and RFC7230</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042569</commentid>
    <comment_count>5</comment_count>
      <attachid>239942</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-17 22:57:39 -0700</bug_when>
    <thetext>Comment on attachment 239942
Updated according comments and RFC7230

View in context: https://bugs.webkit.org/attachment.cgi?id=239942&amp;action=review

Looks OK, but there is a bug here and the test case has insufficient coverage.

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:111
&gt; +    c = value[value.length()];

This will always return 0, since it’s trying to fetch a character past the end of the string.

&gt; LayoutTests/http/tests/xmlhttprequest/set-bad-headervalue.html:24
&gt; +      try_value(&quot;t\rt&quot;, true)

Coverage of this test is insufficient. I don’t see any cases checking the rules about the first and last characters not being spaces or tabs. If we had cases checking for that we would have noticed the bug I mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042987</commentid>
    <comment_count>6</comment_count>
      <attachid>240150</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2014-10-20 15:34:07 -0700</bug_when>
    <thetext>Created attachment 240150
fixing bug and improving test coverage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043061</commentid>
    <comment_count>7</comment_count>
      <attachid>240150</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 18:50:40 -0700</bug_when>
    <thetext>Comment on attachment 240150
fixing bug and improving test coverage

Clearing flags on attachment: 240150

Committed r174920: &lt;http://trac.webkit.org/changeset/174920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043062</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 18:50:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113348</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Mitchell">chrism</who>
    <bug_when>2015-07-30 06:56:21 -0700</bug_when>
    <thetext>I can see that the changes for this have tightened the header value validation more than what RFC 7230 suggests. If you set the value to a single SPACE character it is reported as an invalid header value. RFC 7320 does not suggest this check should be done. You can check this by adding try_value(&quot; &quot;) to the test harness. You will see that this test passes (i.e. it throws an exception) but accordinging to RFC 7320 it shouldn&apos;t since a single SPACE character is a valid value.

I am reporting this since we utilites the ablility to set the &quot;Content-Type&quot; to a space character and these changes have broken our site.

Should I raise a new bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113350</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-30 07:14:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I can see that the changes for this have tightened the header value
&gt; validation more than what RFC 7230 suggests. If you set the value to a
&gt; single SPACE character it is reported as an invalid header value. RFC 7320
&gt; does not suggest this check should be done. You can check this by adding
&gt; try_value(&quot; &quot;) to the test harness. You will see that this test passes (i.e.
&gt; it throws an exception) but accordinging to RFC 7320 it shouldn&apos;t since a
&gt; single SPACE character is a valid value.
&gt; 
&gt; I am reporting this since we utilites the ablility to set the &quot;Content-Type&quot;
&gt; to a space character and these changes have broken our site.
&gt; 
&gt; Should I raise a new bug?

Hi.
Yes, please file a new bug.
Can you CC me, as well as ap and darin?

Out of curiosity, can you explain why setting Content-Type to &quot; &quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113352</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Mitchell">chrism</who>
    <bug_when>2015-07-30 07:21:37 -0700</bug_when>
    <thetext>Hi,

We are uploading files to a service which requires the content-type to be set. Any value will work. We are not 100% of their MimeType so we set it to a space character and the system we are uploading to doesn&apos;t seem to care about the validity but does allow the upload to happen.

I will file the bug and CC those you mentioned.

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113369</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-07-30 08:47:29 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Hi,
&gt; 
&gt; We are uploading files to a service which requires the content-type to be
&gt; set. Any value will work. We are not 100% of their MimeType so we set it to
&gt; a space character and the system we are uploading to doesn&apos;t seem to care
&gt; about the validity but does allow the upload to happen.
&gt; 
&gt; I will file the bug and CC those you mentioned.
&gt; 
&gt; Thanks

Thanks for filing bug 147445</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223839</attachid>
            <date>2014-02-11 03:41:56 -0800</date>
            <delta_ts>2014-10-16 04:02:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128593-20140211120804.patch</filename>
            <type>text/plain</type>
            <size>5654</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNmNzkwZTAxYjczZWUz
NzBhNTMyNjhlZjU0N2Y3NGU1MWUyMjg4Yy4uNTM1NTYxNzY0YWVkOWE5MjI5OGUyMDZlYTgzOGZm
NTU1NmQ3ZDdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTAyLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgVGlnaHRlbiBYTUxIdHRw
UmVxdWVzdCBzZXRSZXF1ZXN0SGVhZGVyIHZhbHVlIGNoZWNrCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg1OTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjaGVjayB0aGF0IGhlYWRlciB2YWx1
ZXMgb25seSBjb250YWluIElTTy04ODU5LTEgY2hhcmFjdGVycyAKKyAgICAgICAgYW5kIGRvIG5v
dCBjb250YWluaW5nIGNvbnRyb2wgY2hhcmFjdGVycyBleGNlcHQgdGFiLiAKKworICAgICAgICBU
ZXN0OiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbAor
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1ZhbGlkSFRUUEhlYWRlclZhbHVlKToKKwogMjAxNC0wMi0xMCAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IGEgZmV3IG1pc3Rha2Vz
IHRoYXQgbGFuZGVkIHdpdGggcjE2Mzc0OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggNTRiODVkN2YxNjYzY2NhYjNlMjc4NjgyNmRj
YmMxMWUzZmU1YzczNS4uMGUzNWY4MWU4MWYxOTA2MTA5NDQ4ZWU1ZGQyZTY2YmFlODQxNWM2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAK
QEAgLTEwMiwxMiArMTAyLDE5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBza2lwVmFsdWUoY29uc3Qg
U3RyaW5nJiBzdHIsIHVuc2lnbmVkJiBwb3MpCiAgICAgcmV0dXJuIHBvcyAhPSBzdGFydDsKIH0K
IAotYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wg
aXNWYWxpZEhUVFBIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMpCiB7Ci0gICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBtYXRjaCBuYW1lIGFnYWluc3QKLSAgICAvLyBm
aWVsZC12YWx1ZSBpbiBzZWN0aW9uIDQuMiBvZiBSRkMgMjYxNi4KLQotICAgIHJldHVybiAhbmFt
ZS5jb250YWlucygnXHInKSAmJiAhbmFtZS5jb250YWlucygnXG4nKTsKKyAgICAvLyBGSVhNRTog
Q2hlY2sgYWxsIGNvbnN0cmFpbnRzIGluIG9uZSBsb29wCisgICAgaWYgKCFjaGFyYWN0ZXJzLmNv
bnRhaW5zT25seUxhdGluMSgpIHx8IGNoYXJhY3RlcnMuY29udGFpbnMoJ1xyJykgfHwgY2hhcmFj
dGVycy5jb250YWlucygnXG4nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1F
OiBBZGQgdmFsaWRhdGlvbiBvZiBlbmNvZGluZyBydWxlcyBkZWZpbmVkIGJ5IFJGQyAyMDQ3Lgor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGFyYWN0ZXJzLmxlbmd0aCgpOyArK2kpIHsK
KyAgICAgICAgVUNoYXIgYyA9IGNoYXJhY3RlcnNbaV07CisgICAgICAgIC8vIENoZWNrIHRoYXQg
YyBpcyBub3QgYSBjb250cm9sIGNoYXJhY3RlciBleGNlcHQgaWYgd2hpdGVzcGFjZSAocmVkdWNl
ZCB0byAweDA5IGluIHRoYXQgY29udGV4dCkKKyAgICAgICAgaWYgKGMgPD0gMHgxRiAmJiBjICE9
IDB4MDkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OwogfQogCiAvLyBTZWUgUkZDIDI2MTYsIFNlY3Rpb24gMi4yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIxNWRjNmI4MDBi
MTdhZGQ4YjkzY2ZiMWEzY2E0ZWQwOWM3NGNhOGIuLjkxMWU5NTlmNzFjOTdmZjE1YTc3NmM1ZjU2
MzgxZDFmMWI5MDhmNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wMi0xMSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubmZAZ21haWwuY29tPgorCisgICAgICAgIFRpZ2h0ZW4gWE1MSHR0cFJl
cXVlc3Qgc2V0UmVxdWVzdEhlYWRlciB2YWx1ZSBjaGVjaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NTkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IG9yaWdpbmF0aW5nIGZyb20g
dzNjLXRlc3Qub3JnIHRvIHRlc3QgaGVhZGVyIHZhbHVlcyBjaGVja2luZy4KKyAgICAgICAgVGVz
dGluZyBoZWFkZXJzIHdpdGggbm9uIElTTy04ODU5LTEgY2hhcmFjdGVycyBhbmQgdmFyaW91cyBj
b250cm9sIGNoYXJhY3RlcnMuIAorCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9zZXQtYmFkLWhlYWRlcnZhbHVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtYmFkLWhlYWRlcnZhbHVlLmh0bWw6IEFkZGVkLgor
CiAyMDE0LTAyLTEwICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAg
ICAgIFtDU1MgUmVnaW9uc10gRml4IFByb3BhZ2F0aW5nIEJvcmRlciBhbmQgUGFkZGluZyBmb3Ig
SW5saW5lIFJlcGxhY2VkIEVsZW1lbnRzIEZsb3dlZCBpbiBSZWdpb25zCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQt
YmFkLWhlYWRlcnZhbHVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmJjY2U2NDhlYmFiN2Zj
Zjg3NjBmZDViZTQzMmJjMmZmYmY3MGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtYmFkLWhlYWRlcnZhbHVlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACisKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IHNldFJlcXVlc3RIZWFk
ZXIoKSB2YWx1ZSBhcmd1bWVudCBjaGVja3MgCitQQVNTIFhNTEh0dHBSZXF1ZXN0OiBzZXRSZXF1
ZXN0SGVhZGVyKCkgdmFsdWUgYXJndW1lbnQgY2hlY2tzIDEgCitQQVNTIFhNTEh0dHBSZXF1ZXN0
OiBzZXRSZXF1ZXN0SGVhZGVyKCkgdmFsdWUgYXJndW1lbnQgY2hlY2tzIDIgCitQQVNTIFhNTEh0
dHBSZXF1ZXN0OiBzZXRSZXF1ZXN0SGVhZGVyKCkgdmFsdWUgYXJndW1lbnQgY2hlY2tzIDMgCitQ
QVNTIFhNTEh0dHBSZXF1ZXN0OiBzZXRSZXF1ZXN0SGVhZGVyKCkgdmFsdWUgYXJndW1lbnQgY2hl
Y2tzIDQgCitQQVNTIFhNTEh0dHBSZXF1ZXN0OiBzZXRSZXF1ZXN0SGVhZGVyKCkgdmFsdWUgYXJn
dW1lbnQgY2hlY2tzIDUgCitQQVNTIFhNTEh0dHBSZXF1ZXN0OiBzZXRSZXF1ZXN0SGVhZGVyKCkg
dmFsdWUgYXJndW1lbnQgY2hlY2tzIDYgCitQQVNTIFhNTEh0dHBSZXF1ZXN0OiBzZXRSZXF1ZXN0
SGVhZGVyKCkgdmFsdWUgYXJndW1lbnQgY2hlY2tzIDcgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtYmFkLWhlYWRlcnZhbHVl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGQ0NWU3NTgyZTA5NjVhZTdmMDQzOTM5MDA1Y2JlNDU1MDI4NTc1
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8
dGl0bGU+WE1MSHR0cFJlcXVlc3Q6IHNldFJlcXVlc3RIZWFkZXIoKSB2YWx1ZSBhcmd1bWVudCBj
aGVja3M8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwhLS0gVGVzdCBiYXNlZCBvbiBo
dHRwOi8vdzNjLXRlc3Qub3JnL3dlYi1wbGF0Zm9ybS10ZXN0cy9tYXN0ZXIvWE1MSHR0cFJlcXVl
c3Qvc2V0cmVxdWVzdGhlYWRlci1ib2d1cy12YWx1ZS5odG0gLS0+CisgIDwvaGVhZD4KKyAgPGJv
ZHk+CisgICAgPGRpdiBpZD0ibG9nIj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAgZnVuY3Rp
b24gdHJ5X3ZhbHVlKHZhbHVlLCBleHBlY3RFcnJvcikgeworICAgICAgICB0ZXN0KGZ1bmN0aW9u
KCkgeworICAgICAgICAgIHZhciBjbGllbnQgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKQorICAgICAg
ICAgIGNsaWVudC5vcGVuKCJHRVQiLCAiLi4uIikKKyAgICAgICAgICBpZiAoZXhwZWN0RXJyb3Ip
CisgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIlN5bnRheEVycm9yIiwgZnVuY3Rpb24oKSB7
IGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiLCB2YWx1ZSkgfSwgJyBnaXZlbiB2YWx1
ZSAnICsgdmFsdWUrJywgJykKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGNsaWVudC5z
ZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiLCB2YWx1ZSkgIAorICAgICAgICAgIH0pCisgICAgICB9
CisKKyAgICAgIHRyeV92YWx1ZSgidFxydCIsIHRydWUpCisgICAgICB0cnlfdmFsdWUoInRcbnQi
LCB0cnVlKQorICAgICAgdHJ5X3ZhbHVlKCLvvoPvvb3vvoQiLCB0cnVlKQorICAgICAgdHJ5X3Zh
bHVlKCJ0XGJ0IiwgdHJ1ZSkKKyAgICAgIHRyeV92YWx1ZSgidFx2dCIsIHRydWUpCisgICAgICB0
cnlfdmFsdWUoInRcdHQiLCBmYWxzZSkKKyAgICAgIHRyeV92YWx1ZSgidCB0IiwgZmFsc2UpCisg
ICAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY2xpZW50ID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCkKKyAgICAgICAgY2xpZW50Lm9wZW4oIkdFVCIsICIuLi4iKQorICAgICAgICBhc3Nl
cnRfdGhyb3dzKHtuYW1lOidUeXBlRXJyb3InfSwgZnVuY3Rpb24oKSB7IGNsaWVudC5zZXRSZXF1
ZXN0SGVhZGVyKCJ4LXRlc3QiKSB9KQorICAgICAgfSkKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239942</attachid>
            <date>2014-10-16 04:02:45 -0700</date>
            <delta_ts>2014-10-20 15:34:01 -0700</delta_ts>
            <desc>Updated according comments and RFC7230</desc>
            <filename>bug-128593-20141016130249.patch</filename>
            <type>text/plain</type>
            <size>6094</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgyYmM4YTg0MDgyYzVh
NmM4NGQ0ZDYwOWNjMmUwMjNhYzIwMGZhMC4uNWE1MTc5NDcxZGQ5ZWNkYWZiNmQxZmRhM2NhN2Yy
Mjc5ZjEzOWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTEwLTE2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgVGlnaHRl
biBYTUxIdHRwUmVxdWVzdCBzZXRSZXF1ZXN0SGVhZGVyIHZhbHVlIGNoZWNrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg1OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkSFRU
UEhlYWRlclZhbHVlKTogVXBkYXRlZCBoZWFkZXIgdmFsdWVzIGNoZWNrIGFjY29yZGluZyBSRkMg
NzIzMC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRIVFRQVG9rZW4pOiBSZW5hbWVkIHZhcmlh
YmxlIG5hbWUgYW5kIHVwZGF0ZWQgUkZDIHJlbGF0ZWQgY29tbWVudC4KKwogMjAxNC0xMC0wNSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4o
KSAvIGRvd25jYXN0PD4oKSBmb3IgU2Nyb2xsaW5nQ29vcmRpbmF0b3IgLyBTY3JvbGxpbmdTdGF0
ZU5vZGUgc3ViY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcAppbmRleCA2ZDFhYWIyMGIyZmYyZTM0YmM5MDU0YjAzZGZlZjhmMjE2MDI3
MjIyLi5lOWE5OWQxNjQzZjE1MTNhOWIyOTliZTdkOWI1MzlkNWQ3MWY4Y2FiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMTAyLDIx
ICsxMDIsMzAgQEAgc3RhdGljIGlubGluZSBib29sIHNraXBWYWx1ZShjb25zdCBTdHJpbmcmIHN0
ciwgdW5zaWduZWQmIHBvcykKICAgICByZXR1cm4gcG9zICE9IHN0YXJ0OwogfQogCi1ib29sIGlz
VmFsaWRIVFRQSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lKQorLy8gU2VlIFJGQyA3MjMw
LCBTZWN0aW9uIDMuMi4zLgorYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBtYXRjaCBuYW1l
IGFnYWluc3QKLSAgICAvLyBmaWVsZC12YWx1ZSBpbiBzZWN0aW9uIDQuMiBvZiBSRkMgMjYxNi4K
LQotICAgIHJldHVybiAhbmFtZS5jb250YWlucygnXHInKSAmJiAhbmFtZS5jb250YWlucygnXG4n
KTsKKyAgICBVQ2hhciBjID0gdmFsdWVbMF07CisgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0
JykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGMgPSB2YWx1ZVt2YWx1ZS5sZW5ndGgoKV07
CisgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0JykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGgoKTsgKytpKSB7CisgICAg
ICAgIGMgPSB2YWx1ZVtpXTsKKyAgICAgICAgaWYgKGMgPT0gMHg3RiB8fCBjID4gMHhGRiB8fCAo
YyA8IDB4MjAgJiYgYyAhPSAnXHQnKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIFNlZSBSRkMgMjYxNiwgU2VjdGlvbiAyLjIuCi1i
b29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJzKQorLy8gU2VlIFJG
QyA3MjMwLCBTZWN0aW9uIDMuMi42LgorYm9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGNoYXJhY3RlcnMuaXNFbXB0eSgpKQorICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY2hhcmFjdGVycy5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGMgPSBj
aGFyYWN0ZXJzW2ldOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGgo
KTsgKytpKSB7CisgICAgICAgIFVDaGFyIGMgPSB2YWx1ZVtpXTsKICAgICAgICAgaWYgKGMgPD0g
MHgyMCB8fCBjID49IDB4N0YKICAgICAgICAgICAgIHx8IGMgPT0gJygnIHx8IGMgPT0gJyknIHx8
IGMgPT0gJzwnIHx8IGMgPT0gJz4nIHx8IGMgPT0gJ0AnCiAgICAgICAgICAgICB8fCBjID09ICcs
JyB8fCBjID09ICc7JyB8fCBjID09ICc6JyB8fCBjID09ICdcXCcgfHwgYyA9PSAnIicKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBmYTRkMmVhMmJhNjY4NDQ4NGZhNzAyMzdhMGJmZGEzMTViODY2NGJhLi41NWEyZmVhNzY5Njhh
OGYxYjQ0ZjhkZmJlN2UwOTY4YTFhYjEwOTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQt
MTAtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAg
ICAgICBUaWdodGVuIFhNTEh0dHBSZXF1ZXN0IHNldFJlcXVlc3RIZWFkZXIgdmFsdWUgY2hlY2sK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODU5Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEg
dGVzdCBvcmlnaW5hdGluZyBmcm9tIHczYy10ZXN0Lm9yZyB0byB0ZXN0IGhlYWRlciB2YWx1ZXMg
Y2hlY2tpbmcuCisgICAgICAgIFRlc3RpbmcgaGVhZGVycyB3aXRoIG5vbiBBU0NJSSBjaGFyYWN0
ZXJzIGFuZCB2YXJpb3VzIGNvbnRyb2wgY2hhcmFjdGVycy4gCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFs
dWUuaHRtbDogQWRkZWQuCisKIDIwMTQtMTAtMDUgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgZGVwcmVjYXRpb24gd2FybmluZyBmb3IgRWxl
bWVudC53ZWJraXRNYXRjaGVzU2VsZWN0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmYmNjZTY0OGViYWI3ZmNmODc2MGZkNWJlNDMyYmMy
ZmZiZjcwYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKKworUEFTUyBYTUxIdHRwUmVxdWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZhbHVlIGFyZ3Vt
ZW50IGNoZWNrcyAKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IHNldFJlcXVlc3RIZWFkZXIoKSB2YWx1
ZSBhcmd1bWVudCBjaGVja3MgMSAKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IHNldFJlcXVlc3RIZWFk
ZXIoKSB2YWx1ZSBhcmd1bWVudCBjaGVja3MgMiAKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IHNldFJl
cXVlc3RIZWFkZXIoKSB2YWx1ZSBhcmd1bWVudCBjaGVja3MgMyAKK1BBU1MgWE1MSHR0cFJlcXVl
c3Q6IHNldFJlcXVlc3RIZWFkZXIoKSB2YWx1ZSBhcmd1bWVudCBjaGVja3MgNCAKK1BBU1MgWE1M
SHR0cFJlcXVlc3Q6IHNldFJlcXVlc3RIZWFkZXIoKSB2YWx1ZSBhcmd1bWVudCBjaGVja3MgNSAK
K1BBU1MgWE1MSHR0cFJlcXVlc3Q6IHNldFJlcXVlc3RIZWFkZXIoKSB2YWx1ZSBhcmd1bWVudCBj
aGVja3MgNiAKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IHNldFJlcXVlc3RIZWFkZXIoKSB2YWx1ZSBh
cmd1bWVudCBjaGVja3MgNyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9zZXQtYmFkLWhlYWRlcnZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZDQ1ZTc1ODJlMDk2NWFlN2YwNDM5MzkwMDVjYmU0NTUwMjg1NzUzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtYmFkLWhlYWRl
cnZhbHVlLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAg
PGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5YTUxIdHRwUmVx
dWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZhbHVlIGFyZ3VtZW50IGNoZWNrczwvdGl0bGU+Cisg
ICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+CisgICAgPCEtLSBUZXN0IGJhc2VkIG9uIGh0dHA6Ly93M2MtdGVzdC5v
cmcvd2ViLXBsYXRmb3JtLXRlc3RzL21hc3Rlci9YTUxIdHRwUmVxdWVzdC9zZXRyZXF1ZXN0aGVh
ZGVyLWJvZ3VzLXZhbHVlLmh0bSAtLT4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8ZGl2IGlk
PSJsb2ciPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICBmdW5jdGlvbiB0cnlfdmFsdWUodmFs
dWUsIGV4cGVjdEVycm9yKSB7CisgICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
dmFyIGNsaWVudCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpCisgICAgICAgICAgY2xpZW50Lm9wZW4o
IkdFVCIsICIuLi4iKQorICAgICAgICAgIGlmIChleHBlY3RFcnJvcikKKyAgICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygiU3ludGF4RXJyb3IiLCBmdW5jdGlvbigpIHsgY2xpZW50LnNldFJlcXVl
c3RIZWFkZXIoIngtdGVzdCIsIHZhbHVlKSB9LCAnIGdpdmVuIHZhbHVlICcgKyB2YWx1ZSsnLCAn
KQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIo
IngtdGVzdCIsIHZhbHVlKSAgCisgICAgICAgICAgfSkKKyAgICAgIH0KKworICAgICAgdHJ5X3Zh
bHVlKCJ0XHJ0IiwgdHJ1ZSkKKyAgICAgIHRyeV92YWx1ZSgidFxudCIsIHRydWUpCisgICAgICB0
cnlfdmFsdWUoIu++g++9ve++hCIsIHRydWUpCisgICAgICB0cnlfdmFsdWUoInRcYnQiLCB0cnVl
KQorICAgICAgdHJ5X3ZhbHVlKCJ0XHZ0IiwgdHJ1ZSkKKyAgICAgIHRyeV92YWx1ZSgidFx0dCIs
IGZhbHNlKQorICAgICAgdHJ5X3ZhbHVlKCJ0IHQiLCBmYWxzZSkKKyAgICAgIHRlc3QoZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBjbGllbnQgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKQorICAgICAg
ICBjbGllbnQub3BlbigiR0VUIiwgIi4uLiIpCisgICAgICAgIGFzc2VydF90aHJvd3Moe25hbWU6
J1R5cGVFcnJvcid9LCBmdW5jdGlvbigpIHsgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVz
dCIpIH0pCisgICAgICB9KQorICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240150</attachid>
            <date>2014-10-20 15:34:07 -0700</date>
            <delta_ts>2014-10-20 18:50:40 -0700</delta_ts>
            <desc>fixing bug and improving test coverage</desc>
            <filename>bug-128593-20141021003412.patch</filename>
            <type>text/plain</type>
            <size>6550</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUyNGVmYmZjN2FjZDE3
MDg0MzdiZmI2NWM5MjQ3YTZhZDM5ODUzMy4uNGVlNzIwNTNkZjk3MWU3NjRlMjBjNzA5ZWViNjBh
NzVjY2RhMWJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTEwLTIwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgVGlnaHRl
biBYTUxIdHRwUmVxdWVzdCBzZXRSZXF1ZXN0SGVhZGVyIHZhbHVlIGNoZWNrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg1OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkSFRU
UEhlYWRlclZhbHVlKTogVXBkYXRlZCBoZWFkZXIgdmFsdWVzIGNoZWNrIGFjY29yZGluZyBSRkMg
NzIzMC4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRIVFRQVG9rZW4pOiBSZW5hbWVkIHZhcmlh
YmxlIG5hbWUgYW5kIHVwZGF0ZWQgUkZDIHJlbGF0ZWQgY29tbWVudC4KKwogMjAxNC0xMC0yMCAg
RGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gU3VwcG9ydCAi
aW52ZXJ0ZWQtY29sb3JzIiBhbmQgIm1vbm9jaHJvbWUiIG1lZGlhIGZlYXR1cmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDZkMWFh
YjIwYjJmZjJlMzRiYzkwNTRiMDNkZmVmOGYyMTYwMjcyMjIuLmRkNzY4YjMxMjgzODI5MjQ3MTAy
YjA0MDg1NzkzNDEzMDJiMGE3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0xMDIsMjEgKzEwMiwzMCBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgc2tpcFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCYgcG9zKQogICAgIHJl
dHVybiBwb3MgIT0gc3RhcnQ7CiB9CiAKLWJvb2wgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZShjb25z
dCBTdHJpbmcmIG5hbWUpCisvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjMuCitib29sIGlz
VmFsaWRIVFRQSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgcmVhbGx5IG1hdGNoIG5hbWUgYWdhaW5zdAotICAgIC8vIGZpZWxkLXZh
bHVlIGluIHNlY3Rpb24gNC4yIG9mIFJGQyAyNjE2LgotCi0gICAgcmV0dXJuICFuYW1lLmNvbnRh
aW5zKCdccicpICYmICFuYW1lLmNvbnRhaW5zKCdcbicpOworICAgIFVDaGFyIGMgPSB2YWx1ZVsw
XTsKKyAgICBpZiAoYyA9PSAnICcgfHwgYyA9PSAnXHQnKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYyA9IHZhbHVlW3ZhbHVlLmxlbmd0aCgpIC0gMV07CisgICAgaWYgKGMgPT0gJyAnIHx8
IGMgPT0gJ1x0JykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2YWx1ZS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGMgPSB2YWx1ZVtpXTsKKyAg
ICAgICAgaWYgKGMgPT0gMHg3RiB8fCBjID4gMHhGRiB8fCAoYyA8IDB4MjAgJiYgYyAhPSAnXHQn
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKLS8vIFNlZSBSRkMgMjYxNiwgU2VjdGlvbiAyLjIuCi1ib29sIGlzVmFsaWRIVFRQVG9rZW4o
Y29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJzKQorLy8gU2VlIFJGQyA3MjMwLCBTZWN0aW9uIDMuMi42
LgorYm9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYg
KGNoYXJhY3RlcnMuaXNFbXB0eSgpKQorICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hhcmFjdGVycy5s
ZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzW2ldOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFVD
aGFyIGMgPSB2YWx1ZVtpXTsKICAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N0YKICAg
ICAgICAgICAgIHx8IGMgPT0gJygnIHx8IGMgPT0gJyknIHx8IGMgPT0gJzwnIHx8IGMgPT0gJz4n
IHx8IGMgPT0gJ0AnCiAgICAgICAgICAgICB8fCBjID09ICcsJyB8fCBjID09ICc7JyB8fCBjID09
ICc6JyB8fCBjID09ICdcXCcgfHwgYyA9PSAnIicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZDZiOTZkNGYzMTE4OWU2NWE0
YWY4MDRiNDFhZGEzNGMyZjBlMDFiLi5kZmQyYjc0MWE3M2Q0NTE0MTA5YjE4MTRkNjc0NjM0MjYw
NTdlODA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMTAtMjAgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBUaWdodGVuIFhNTEh0dHBS
ZXF1ZXN0IHNldFJlcXVlc3RIZWFkZXIgdmFsdWUgY2hlY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODU5MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgdGVzdCBvcmlnaW5hdGluZyBmcm9t
IHczYy10ZXN0Lm9yZyB0byB0ZXN0IGhlYWRlciB2YWx1ZXMgY2hlY2tpbmcuCisgICAgICAgIFRl
c3RpbmcgaGVhZGVycyB3aXRoIG5vbiBBU0NJSSBjaGFyYWN0ZXJzIGFuZCB2YXJpb3VzIGNvbnRy
b2wgY2hhcmFjdGVycy4gCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Nl
dC1iYWQtaGVhZGVydmFsdWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbDogQWRkZWQuCisKIDIw
MTQtMTAtMjAgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNd
IFN1cHBvcnQgImludmVydGVkLWNvbG9ycyIgYW5kICJtb25vY2hyb21lIiBtZWRpYSBmZWF0dXJl
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQt
YmFkLWhlYWRlcnZhbHVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWI4ZWE2YWIxYmRkNGU3NDJkMDkyYmFiN2IxYWJlZjNjMjJjNGQzYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2
YWx1ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorCitQQVNTIFhNTEh0dHBSZXF1ZXN0
OiBzZXRSZXF1ZXN0SGVhZGVyKCkgdmFsdWUgYXJndW1lbnQgY2hlY2tzIAorUEFTUyBYTUxIdHRw
UmVxdWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZhbHVlIGFyZ3VtZW50IGNoZWNrcyAxIAorUEFT
UyBYTUxIdHRwUmVxdWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZhbHVlIGFyZ3VtZW50IGNoZWNr
cyAyIAorUEFTUyBYTUxIdHRwUmVxdWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZhbHVlIGFyZ3Vt
ZW50IGNoZWNrcyAzIAorUEFTUyBYTUxIdHRwUmVxdWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZh
bHVlIGFyZ3VtZW50IGNoZWNrcyA0IAorUEFTUyBYTUxIdHRwUmVxdWVzdDogc2V0UmVxdWVzdEhl
YWRlcigpIHZhbHVlIGFyZ3VtZW50IGNoZWNrcyA1IAorUEFTUyBYTUxIdHRwUmVxdWVzdDogc2V0
UmVxdWVzdEhlYWRlcigpIHZhbHVlIGFyZ3VtZW50IGNoZWNrcyA2IAorUEFTUyBYTUxIdHRwUmVx
dWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZhbHVlIGFyZ3VtZW50IGNoZWNrcyA3IAorUEFTUyBY
TUxIdHRwUmVxdWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZhbHVlIGFyZ3VtZW50IGNoZWNrcyA4
IAorUEFTUyBYTUxIdHRwUmVxdWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZhbHVlIGFyZ3VtZW50
IGNoZWNrcyA5IAorUEFTUyBYTUxIdHRwUmVxdWVzdDogc2V0UmVxdWVzdEhlYWRlcigpIHZhbHVl
IGFyZ3VtZW50IGNoZWNrcyAxMCAKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IHNldFJlcXVlc3RIZWFk
ZXIoKSB2YWx1ZSBhcmd1bWVudCBjaGVja3MgMTEgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtYmFkLWhlYWRlcnZhbHVlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjM5YTc1ODk5MTFkYWU1YWE4NWVjYzk0ZTViYWRhZGRiNDMyMDVjZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
c2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhZG9jdHlwZSBodG1s
PgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0
bGU+WE1MSHR0cFJlcXVlc3Q6IHNldFJlcXVlc3RIZWFkZXIoKSB2YWx1ZSBhcmd1bWVudCBjaGVj
a3M8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwhLS0gVGVzdCBiYXNlZCBvbiBodHRw
Oi8vdzNjLXRlc3Qub3JnL3dlYi1wbGF0Zm9ybS10ZXN0cy9tYXN0ZXIvWE1MSHR0cFJlcXVlc3Qv
c2V0cmVxdWVzdGhlYWRlci1ib2d1cy12YWx1ZS5odG0gVGhpcyB0ZXN0IHNob3VsZCBiZSByZW1v
dmVkIG9uY2Ugd3B0IFhNTEh0dHBSZXF1ZXN0IGlzIGltcG9ydGVkIGlmIGJvdGggdGVzdHMgYXJl
IGluIHN5bmMgLS0+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPGRpdiBpZD0ibG9nIj48L2Rp
dj4KKyAgICA8c2NyaXB0PgorICAgICAgZnVuY3Rpb24gdHJ5X3ZhbHVlKHZhbHVlLCBleHBlY3RF
cnJvcikgeworICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICAgIHZhciBjbGllbnQg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKQorICAgICAgICAgIGNsaWVudC5vcGVuKCJHRVQiLCAiLi4u
IikKKyAgICAgICAgICBpZiAoZXhwZWN0RXJyb3IpCisgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MoIlN5bnRheEVycm9yIiwgZnVuY3Rpb24oKSB7IGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4
LXRlc3QiLCB2YWx1ZSkgfSwgJyBnaXZlbiB2YWx1ZSAnICsgdmFsdWUrJywgJykKKyAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgIGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiLCB2
YWx1ZSkgIAorICAgICAgICAgIH0pCisgICAgICB9CisKKyAgICAgIHRyeV92YWx1ZSgidFxydCIs
IHRydWUpCisgICAgICB0cnlfdmFsdWUoInRcbnQiLCB0cnVlKQorICAgICAgdHJ5X3ZhbHVlKCLv
voPvvb3vvoQiLCB0cnVlKQorICAgICAgdHJ5X3ZhbHVlKCJ0XGJ0IiwgdHJ1ZSkKKyAgICAgIHRy
eV92YWx1ZSgidFx2dCIsIHRydWUpCisgICAgICB0cnlfdmFsdWUoInRcdHQiLCBmYWxzZSkKKyAg
ICAgIHRyeV92YWx1ZSgidCB0IiwgZmFsc2UpCisgICAgICB0cnlfdmFsdWUoIiB0IiwgdHJ1ZSkK
KyAgICAgIHRyeV92YWx1ZSgidCAiLCB0cnVlKQorICAgICAgdHJ5X3ZhbHVlKCJceGQwXHhhMSIs
IGZhbHNlKQorICAgICAgdHJ5X3ZhbHVlKCJceDdmIiwgdHJ1ZSkKKyAgICAgIHRlc3QoZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBjbGllbnQgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKQorICAgICAg
ICBjbGllbnQub3BlbigiR0VUIiwgIi4uLiIpCisgICAgICAgIGFzc2VydF90aHJvd3Moe25hbWU6
J1R5cGVFcnJvcid9LCBmdW5jdGlvbigpIHsgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVz
dCIpIH0pCisgICAgICB9KQorICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>