<?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>81878</bug_id>
          
          <creation_ts>2012-03-22 00:34:05 -0700</creation_ts>
          <short_desc>[WebSocket]Reserved1 bit should be 0 when no negotiated extension</short_desc>
          <delta_ts>2012-03-24 19:56:44 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>0</everconfirmed>
          <reporter name="Li Yin">li.yin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>tkent</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>585028</commentid>
    <comment_count>0</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-22 00:34:05 -0700</bug_when>
    <thetext>RFC 6455
http://tools.ietf.org/html/rfc6455#section-5.2

MUST be 0 unless an extension is negotiated that defines meanings
for non-zero values.  If a nonzero value is received and none of
the negotiated extensions defines the meaning of such a nonzero
value, the receiving endpoint MUST _Fail the WebSocket Connection_.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585034</commentid>
    <comment_count>1</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-22 00:44:26 -0700</bug_when>
    <thetext>From the websocket test site:
http://autobahn.ws/testsuite/reports/clients/index.html
Case 3.4 failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585039</commentid>
    <comment_count>2</comment_count>
      <attachid>133201</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-22 00:51:03 -0700</bug_when>
    <thetext>Created attachment 133201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585889</commentid>
    <comment_count>3</comment_count>
      <attachid>133201</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-22 17:15:07 -0700</bug_when>
    <thetext>Comment on attachment 133201
Patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +        [WebSocket]Reserved1 bit should be 0 when no negotiated extension
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=81878
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

I think it is worth adding a short explanation in this bug, linking the relevant spec.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests, because it was covered by reserved-bits.html

This is not right.
If it was covered, why did you have to modify the test?

&gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits.html:49
&gt; -doTest(2);
&gt; +doTest(1);

This seems bogus, you are changing the coverage of an existing test.

The function doTest() also has a comment made false with this patch: &quot;// bitNumber must be 2 or 3.&quot;.

&gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits_wsh.py:7
&gt; -    pass
&gt; +    request.ws_extension_processors = []

This is most mysterious. An explanation in the ChangeLog would be welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585923</commentid>
    <comment_count>4</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-22 17:46:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 133201 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133201&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:7
&gt; &gt; +        [WebSocket]Reserved1 bit should be 0 when no negotiated extension
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=81878
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; 
&gt; I think it is worth adding a short explanation in this bug, linking the relevant spec.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests, because it was covered by reserved-bits.html
&gt; 
&gt; This is not right.
&gt; If it was covered, why did you have to modify the test?
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits.html:49
&gt; &gt; -doTest(2);
&gt; &gt; +doTest(1);
&gt; 
&gt; This seems bogus, you are changing the coverage of an existing test.
&gt; 
&gt; The function doTest() also has a comment made false with this patch: &quot;// bitNumber must be 2 or 3.&quot;.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits_wsh.py:7
&gt; &gt; -    pass
&gt; &gt; +    request.ws_extension_processors = []
&gt; 
&gt; This is most mysterious. An explanation in the ChangeLog would be welcome.

Thanks for your review.
Update the patch. Please have a check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585928</commentid>
    <comment_count>5</comment_count>
      <attachid>133402</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-22 17:48:39 -0700</bug_when>
    <thetext>Created attachment 133402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585933</commentid>
    <comment_count>6</comment_count>
      <attachid>133402</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-22 17:57:21 -0700</bug_when>
    <thetext>Comment on attachment 133402
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        RFC 6455 http://tools.ietf.org/html/rfc6455#section-5.2
&gt; +        MUST be 0 unless an extension is negotiated that defines meanings
&gt; +        for non-zero values. If a nonzero value is received and none of
&gt; +        the negotiated extensions defines the meaning of such a nonzero
&gt; +        value, the receiving endpoint MUST _Fail the WebSocket Connection_.

Now that I see a bit more what this is about...

Is there also a test in WebKit for the positive case? Setting the bit number and having an extension.
What about setting a bit, having an extension, but the extension does not define the meaning of the bit? (per: If a nonzero value is received and none of the negotiated extensions defines the meaning of such a nonzero value, the receiving endpoint MUST _Fail the WebSocketConnection_.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585948</commentid>
    <comment_count>7</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-22 18:21:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 133402 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133402&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        RFC 6455 http://tools.ietf.org/html/rfc6455#section-5.2
&gt; &gt; +        MUST be 0 unless an extension is negotiated that defines meanings
&gt; &gt; +        for non-zero values. If a nonzero value is received and none of
&gt; &gt; +        the negotiated extensions defines the meaning of such a nonzero
&gt; &gt; +        value, the receiving endpoint MUST _Fail the WebSocket Connection_.
&gt; 
&gt; Now that I see a bit more what this is about...
&gt; 
&gt; Is there also a test in WebKit for the positive case? Setting the bit number and having an extension.
Yes, the normal test based on this way, for example simple.html.

&gt; What about setting a bit, having an extension, but the extension does not define the meaning of the bit? (per: If a nonzero value is received and none of the negotiated extensions defines the meaning of such a nonzero value, the receiving endpoint MUST _Fail the WebSocketConnection_.)
If it has negotiated extension in WebKit, the reserved bit1 means compress bit. If the reserved1 bit is set to be 1, it means the frame is compressed, or the frame is uncompressed. WebKit can handle these frames successfully.
But it seems no test case to cover it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585951</commentid>
    <comment_count>8</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-22 18:25:57 -0700</bug_when>
    <thetext>Hi benjamin,
   Do you think it is necessary to design a new test to cover the following case:
   It has negotiated extension, but the reserved1 bit is set to be 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585954</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-22 18:31:04 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt;    Do you think it is necessary to design a new test to cover the following case:
&gt;    It has negotiated extension, but the reserved1 bit is set to be 0.

Yep, that would be neat.
This is directly related to this patch, it is all about making sure we correctly check in input of the Reserved bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586081</commentid>
    <comment_count>10</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-22 22:01:51 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt;    Do you think it is necessary to design a new test to cover the following case:
&gt; &gt;    It has negotiated extension, but the reserved1 bit is set to be 0.
&gt; 
&gt; Yep, that would be neat.
&gt; This is directly related to this patch, it is all about making sure we correctly check in input of the Reserved bits.

Sorry for my misleading, according to the investigation, this kind of case has been covered by current test, such as zero-length-text.html, receive-blob.html and so on, most of the former test cases based on uncompressed frames. 
So, maybe it&apos;s not necessary to design the duplicate case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586306</commentid>
    <comment_count>11</comment_count>
      <attachid>133402</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-23 07:09:44 -0700</bug_when>
    <thetext>Comment on attachment 133402
Patch

This bug has been fixed in the newest code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586318</commentid>
    <comment_count>12</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-23 07:20:31 -0700</bug_when>
    <thetext>Maybe the test case should be redesigned, it had better cover both no-extension and extension scenarios.

extension bit1 bit2 bit3
   yes     0    1    0
   yes     0    0    1
   no      1    0    0
   no      0    1    0
   no      0    0    1

The current test case only covered the 1st and 2nd.
But the 3rd, 4th and 5th were not covered. 

What&apos;s your opinion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586589</commentid>
    <comment_count>13</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-23 12:15:34 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Maybe the test case should be redesigned, it had better cover both no-extension and extension scenarios.
&gt; 
&gt; extension bit1 bit2 bit3
&gt;    yes     0    1    0
&gt;    yes     0    0    1
&gt;    no      1    0    0
&gt;    no      0    1    0
&gt;    no      0    0    1
&gt; 
&gt; The current test case only covered the 1st and 2nd.
&gt; But the 3rd, 4th and 5th were not covered. 
&gt; 
&gt; What&apos;s your opinion?

Improving the test coverage sounds good. You should submit the test separately and CC the engineer who made the fix you mentioned.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133201</attachid>
            <date>2012-03-22 00:51:03 -0700</date>
            <delta_ts>2012-03-22 17:48:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81878-20120323155308.patch</filename>
            <type>text/plain</type>
            <size>4598</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IxN2U4ZjMzMWJkNDI4
ZGRmZjE5ZjUxM2ZkOTEyMzQ3NDI1ZGEwYy4uOGFhNzAxOWI5MWVhYWJjM2NkNjQ0ZjVmYWVlNzUy
MTIyMTE4YTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTIzICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdUmVzZXJ2ZWQxIGJp
dCBzaG91bGQgYmUgMCB3aGVuIG5vIG5lZ290aWF0ZWQgZXh0ZW5zaW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTg3OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBp
dCB3YXMgY292ZXJlZCBieSByZXNlcnZlZC1iaXRzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6CisKIDIwMTItMDMtMjEgIERhbmEgSmFuc2VucyAg
PGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFYXJseSBvdXQgaW4g
YSBuZXcgcHJlcGFyZVRvRHJhdygpIHN0ZXAgaWYgY2hlY2tlcmJvYXJkaW5nIGFuIGFjY2VsZXJh
dGVkIGFuaW1hdGlvbiBpbiBvcmRlciB0byBza2lwIHRoZSBmcmFtZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4
IDc2MTE4NjJmYmI5M2Q3Y2ZhODk3ODA2MjhlMjFjYTIyNjY5MzhmZGYuLjA3YmRkMTVkMGRmOTQ5
ZGM3ZmRiNjg4MjJjNWMxYzNlY2IzNTI5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTYzNCw2ICs2MzQs
MTEgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgIEFTU0VSVCht
X2J1ZmZlciA8IGZyYW1lRW5kKTsKICAgICBBU1NFUlQoZnJhbWVFbmQgPD0gbV9idWZmZXIgKyBt
X2J1ZmZlclNpemUpOwogCisgICAgaWYgKGZyYW1lLmNvbXByZXNzICYmICFtX2RlZmxhdGVGcmFt
ZXIuZW5hYmxlZCgpKSB7CisgICAgICAgIGZhaWwoIlJlc2VydmVkMSBiaXQgbXVzdCBiZSAwIGlm
IG5vIG5lZ290aWF0ZWQgZXh0ZW5zaW9uIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCiAgICAgT3duUHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IGluZmxhdGVSZXN1bHQgPSBt
X2RlZmxhdGVGcmFtZXIuaW5mbGF0ZShmcmFtZSk7CiAgICAgaWYgKCFpbmZsYXRlUmVzdWx0LT5z
dWNjZWVkZWQoKSkgewogICAgICAgICBmYWlsKGluZmxhdGVSZXN1bHQtPmZhaWx1cmVSZWFzb24o
KSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYWNiYzY3YTQzOGZiMmU5NThiZTA2MDk2YWU3NWEzNGI1NDRkNGExMS4uM2Rh
Y2UyNWM2MmJlZjQ3MTY0YWFmZWRlMzcwYTIwNjFmNzNkYzkxNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTAzLTIzICBMaSBZaW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtX
ZWJTb2NrZXRdUmVzZXJ2ZWQxIGJpdCBzaG91bGQgYmUgMCB3aGVuIG5vIG5lZ290aWF0ZWQgZXh0
ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTg3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJp
dHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2Vy
dmVkLWJpdHNfd3NoLnB5OgorICAgICAgICAod2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Up
OgorCiAyMDEyLTAzLTIxICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYWt1Y29ARnJlZUJTRC5v
cmc+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCBnYXJkZW5pbmc7IHNraXAgYSBmZXcgdGVz
dHMgd2hpY2ggYXJlIG5vdCByZWFsbHkgYmVpbmcgcmVuZGVyZWQgY29ycmVjdGx5LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZl
ZC1iaXRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQKaW5kZXggNjNhOGQ2MTdiZjZiOWU3
OGQ0MzBkYTlkYjk4YTFkZGYwZWQ3MTU5NS4uMDFlM2NkODIwY2ZhNjU1ZWI2NjEzNzBkYTM2ZTdj
MmQyZjU2ZWVlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0
CkBAIC0xLDkgKzEsMTQgQEAKK0NPTlNPTEUgTUVTU0FHRTogUmVzZXJ2ZWQxIGJpdCBtdXN0IGJl
IDAgaWYgbm8gbmVnb3RpYXRlZCBleHRlbnNpb24KIENPTlNPTEUgTUVTU0FHRTogT25lIG9yIG1v
cmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDEsIHJlc2VydmVkMyA9IDAKIENP
TlNPTEUgTUVTU0FHRTogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVk
MiA9IDAsIHJlc2VydmVkMyA9IDEKIFRlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBmcmFt
ZXMgd2hvc2UgcmVzZXJ2ZWQgYml0IGlzIG9uLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKK0JpdCAxOiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgp
IHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKIEJpdCAyOiBU
ZXN0IHN0YXJ0ZWQuCiBvbm9wZW4oKSB3YXMgY2FsbGVkLgogb25jbG9zZSgpIHdhcyBjYWxsZWQu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3Jlc2VydmVkLWJpdHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCmluZGV4IGVjOGRkMzNhNzViYWJhNjY3NmEyY2Nj
MzM2OTJkOTQzZDMxY2Y2ODEuLjA2MTQ1OTRkZmU1YWQwYmU1ZTdmOTgwMGFhYTYzODM1N2E5ZmIw
MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvcmVzZXJ2ZWQtYml0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCkBAIC00Niw3ICs0Niw3IEBAIGZ1bmN0
aW9uIGRvVGVzdChiaXROdW1iZXIpCiAgICAgfTsKIH0KIAotZG9UZXN0KDIpOworZG9UZXN0KDEp
OwogCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weSBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gu
cHkKaW5kZXggNGFkMGRmZGM1NTFiMDY1NTE1NmE2YWUxMjA4NTU0NGRkM2E4ZmVhMC4uZGU5MmU3
ZDI4MTlmMTY4ZjE4ZTcwYTFmMmM0NjcwYWRiYTUzYWE2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weQor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVk
LWJpdHNfd3NoLnB5CkBAIC00LDcgKzQsNyBAQCBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
c3RyZWFtCiAKIAogZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgot
ICAgIHBhc3MKKyAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10KIAogCiBk
ZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133402</attachid>
            <date>2012-03-22 17:48:39 -0700</date>
            <delta_ts>2012-03-23 07:09:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81878-20120324085045.patch</filename>
            <type>text/plain</type>
            <size>5292</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IxN2U4ZjMzMWJkNDI4
ZGRmZjE5ZjUxM2ZkOTEyMzQ3NDI1ZGEwYy4uMTdhMWYyMDJjZDc3NjQyZWRmMzYzOTE2NmI4NThh
Yjc4MzQ4ZDczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAzLTIzICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdUmVzZXJ2ZWQxIGJp
dCBzaG91bGQgYmUgMCB3aGVuIG5vIG5lZ290aWF0ZWQgZXh0ZW5zaW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTg3OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJGQyA2NDU1IGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzY0NTUjc2VjdGlvbi01LjIKKyAgICAgICAgTVVTVCBiZSAwIHVubGVz
cyBhbiBleHRlbnNpb24gaXMgbmVnb3RpYXRlZCB0aGF0IGRlZmluZXMgbWVhbmluZ3MKKyAgICAg
ICAgZm9yIG5vbi16ZXJvIHZhbHVlcy4gSWYgYSBub256ZXJvIHZhbHVlIGlzIHJlY2VpdmVkIGFu
ZCBub25lIG9mCisgICAgICAgIHRoZSBuZWdvdGlhdGVkIGV4dGVuc2lvbnMgZGVmaW5lcyB0aGUg
bWVhbmluZyBvZiBzdWNoIGEgbm9uemVybworICAgICAgICB2YWx1ZSwgdGhlIHJlY2VpdmluZyBl
bmRwb2ludCBNVVNUIF9GYWlsIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbl8uCisgICAgICAgIAor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJp
dHMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToK
KwogMjAxMi0wMy0yMSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIEVhcmx5IG91dCBpbiBhIG5ldyBwcmVwYXJlVG9EcmF3KCkgc3RlcCBp
ZiBjaGVja2VyYm9hcmRpbmcgYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uIGluIG9yZGVyIHRvIHNr
aXAgdGhlIGZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzYxMTg2MmZiYjkzZDdjZmE4OTc4MDYyOGUy
MWNhMjI2NjkzOGZkZi4uMDdiZGQxNWQwZGY5NDlkYzdmZGI2ODgyMmM1YzFjM2VjYjM1MjlkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtNjM0LDYgKzYzNCwxMSBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6
OnByb2Nlc3NGcmFtZSgpCiAgICAgQVNTRVJUKG1fYnVmZmVyIDwgZnJhbWVFbmQpOwogICAgIEFT
U0VSVChmcmFtZUVuZCA8PSBtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZSk7CiAKKyAgICBpZiAoZnJh
bWUuY29tcHJlc3MgJiYgIW1fZGVmbGF0ZUZyYW1lci5lbmFibGVkKCkpIHsKKyAgICAgICAgZmFp
bCgiUmVzZXJ2ZWQxIGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRlZCBleHRlbnNpb24iKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICBPd25QdHI8SW5mbGF0ZVJl
c3VsdEhvbGRlcj4gaW5mbGF0ZVJlc3VsdCA9IG1fZGVmbGF0ZUZyYW1lci5pbmZsYXRlKGZyYW1l
KTsKICAgICBpZiAoIWluZmxhdGVSZXN1bHQtPnN1Y2NlZWRlZCgpKSB7CiAgICAgICAgIGZhaWwo
aW5mbGF0ZVJlc3VsdC0+ZmFpbHVyZVJlYXNvbigpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhY2JjNjdhNDM4ZmIyZTk1
OGJlMDYwOTZhZTc1YTM0YjU0NGQ0YTExLi4yOGUyZjU0NGZhMzU1NzA3NmIxNDM1ZmEwMTIxZjFl
MjEzMTdjM2MwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMjMgIExpIFlpbiAgPGxp
LnlpbkBpbnRlbC5jb20+CisKKyAgICAgICAgW1dlYlNvY2tldF1SZXNlcnZlZDEgYml0IHNob3Vs
ZCBiZSAwIHdoZW4gbm8gbmVnb3RpYXRlZCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxODc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVzZXJ2ZWQgYml0cyBtdXN0IGJlIDAgdW5sZXNz
IGFuIGV4dGVuc2lvbiBpcyBuZWdvdGlhdGVkLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5
OgorICAgICAgICAod2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UpOgorCiAyMDEyLTAzLTIx
ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYWt1Y29ARnJlZUJTRC5vcmc+CiAKICAgICAgICAg
W0VGTF0gVW5yZXZpZXdlZCBnYXJkZW5pbmc7IHNraXAgYSBmZXcgdGVzdHMgd2hpY2ggYXJlIG5v
dCByZWFsbHkgYmVpbmcgcmVuZGVyZWQgY29ycmVjdGx5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2
ZWQtYml0cy1leHBlY3RlZC50eHQKaW5kZXggNjNhOGQ2MTdiZjZiOWU3OGQ0MzBkYTlkYjk4YTFk
ZGYwZWQ3MTU5NS4uMDFlM2NkODIwY2ZhNjU1ZWI2NjEzNzBkYTM2ZTdjMmQyZjU2ZWVlZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNl
cnZlZC1iaXRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsMTQg
QEAKK0NPTlNPTEUgTUVTU0FHRTogUmVzZXJ2ZWQxIGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3Rp
YXRlZCBleHRlbnNpb24KIENPTlNPTEUgTUVTU0FHRTogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0
cyBhcmUgb246IHJlc2VydmVkMiA9IDEsIHJlc2VydmVkMyA9IDAKIENPTlNPTEUgTUVTU0FHRTog
T25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDAsIHJlc2VydmVk
MyA9IDEKIFRlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBmcmFtZXMgd2hvc2UgcmVzZXJ2
ZWQgYml0IGlzIG9uLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKK0JpdCAxOiBUZXN0
IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQuCitQ
QVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKIEJpdCAyOiBUZXN0IHN0YXJ0ZWQuCiBv
bm9wZW4oKSB3YXMgY2FsbGVkLgogb25jbG9zZSgpIHdhcyBjYWxsZWQuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2
ZWQtYml0cy5odG1sCmluZGV4IGVjOGRkMzNhNzViYWJhNjY3NmEyY2NjMzM2OTJkOTQzZDMxY2Y2
ODEuLjUxODRhOTU5MWI2N2I4NTFkYTQ1MTlkMjRkMDRlZDlkNGYzZDZjYjEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
cmVzZXJ2ZWQtYml0cy5odG1sCkBAIC0xNSw3ICsxNSw2IEBAIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCiAKIHZhciBjbG9zZUV2ZW50OwogCi0vLyBiaXROdW1iZXIgbXVzdCBiZSAy
IG9yIDMuCiBmdW5jdGlvbiBkb1Rlc3QoYml0TnVtYmVyKQogewogICAgIHZhciB1cmwgPSAid3M6
Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzP2JpdD0i
ICsgYml0TnVtYmVyOwpAQCAtNDYsNyArNDUsNyBAQCBmdW5jdGlvbiBkb1Rlc3QoYml0TnVtYmVy
KQogICAgIH07CiB9CiAKLWRvVGVzdCgyKTsKK2RvVGVzdCgxKTsKIAogPC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5CmluZGV4IDRhZDBkZmRjNTUx
YjA2NTUxNTZhNmFlMTIwODU1NDRkZDNhOGZlYTAuLjNkMTIzMmE3ZjhiZjA1OTk4ODFlYmU1MTRh
ZDc5NDhiNTU5Y2I0MDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weQpAQCAtNCw3
ICs0LDcgQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQogCiAKIGRlZiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCisgICAgcmVxdWVz
dC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9IFtdICMgdXNpbmcgbm8gZXh0ZW5zaW9uIHJlc3Bv
bnNlCiAKIAogZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToK
</data>
<flag name="review"
          id="137367"
          type_id="1"
          status="-"
          setter="li.yin"
    />
          </attachment>
      

    </bug>

</bugzilla>