<?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>37682</bug_id>
          
          <creation_ts>2010-04-15 16:29:10 -0700</creation_ts>
          <short_desc>WebSocket crash when it receives bad header.</short_desc>
          <delta_ts>2010-04-16 16:13:54 -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>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="Fumitoshi Ukai">ukai</reporter>
          <assigned_to name="Fumitoshi Ukai">ukai</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213100</commentid>
    <comment_count>0</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-15 16:29:10 -0700</bug_when>
    <thetext>If server sends back the following as websocket handshake, it crashes.

HTTP/1.1 101 Web Socket Protocol Handshake\r\n
Upgrade: WebSocket\r\n
Connection: Upgrade\r\n
¥:\r\n
\r\n

See http://code.google.com/p/chromium/issues/detail?id=41147 more detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213105</commentid>
    <comment_count>1</comment_count>
      <attachid>53487</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-15 16:40:45 -0700</bug_when>
    <thetext>Created attachment 53487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213126</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-15 17:14:25 -0700</bug_when>
    <thetext>+static String encodeHeaderField(const char* data, size_t len)

This function needs a name that makes intended usage clear, something like encodeHeaderFieldForDisplay. Otherwise, one can&apos;t help but wonder why it does what it does.

But I&apos;m also not sure how much it helps to display garbage headers encoded as JavaScript literal strings. For one thing, this could be natural for a JavaScript function, but HTTP is a distinct field. It&apos;s better to tell what is wrong about the header field name or value than dump a string a hex codes. An finally, this may not be an important enough case to to go into all this trouble.

+            return p;

Should this be &quot;return 0&quot; to indicate error?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213132</commentid>
    <comment_count>3</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-15 17:29:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; +static String encodeHeaderField(const char* data, size_t len)
&gt; 
&gt; This function needs a name that makes intended usage clear, something like
&gt; encodeHeaderFieldForDisplay. Otherwise, one can&apos;t help but wonder why it does
&gt; what it does.

Ok. I&apos;ll rename it to encodeHeaderFieldForDisplay().

&gt; 
&gt; But I&apos;m also not sure how much it helps to display garbage headers encoded as
&gt; JavaScript literal strings. For one thing, this could be natural for a
&gt; JavaScript function, but HTTP is a distinct field. It&apos;s better to tell what is
&gt; wrong about the header field name or value than dump a string a hex codes. An
&gt; finally, this may not be an important enough case to to go into all this
&gt; trouble.

I see. Make it to dump a string a hex codes.
 
&gt; +            return p;
&gt; 
&gt; Should this be &quot;return 0&quot; to indicate error?

Oops. I&apos;ll fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213136</commentid>
    <comment_count>4</comment_count>
      <attachid>53487</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-15 17:39:40 -0700</bug_when>
    <thetext>Comment on attachment 53487
Patch

&gt; I see. Make it to dump a string a hex codes.

To re-iterate, I think that it&apos;s not great. Ideally, the text should explain what exactly is wrong with the header, and not just dump it in the face of the developer. But it&apos;s not a big deal.

Marking r- for the &quot;return p&quot; issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213137</commentid>
    <comment_count>5</comment_count>
      <attachid>53494</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-15 17:40:23 -0700</bug_when>
    <thetext>Created attachment 53494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213357</commentid>
    <comment_count>6</comment_count>
      <attachid>53494</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-16 12:11:08 -0700</bug_when>
    <thetext>Comment on attachment 53494
Patch

&gt; CONSOLE MESSAGE: line 0: invalid header name: a5 

This looks even more confusing than before. What is invalid about the name &quot;a5&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213396</commentid>
    <comment_count>7</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-16 13:32:59 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 53494 [details])
&gt; &gt; CONSOLE MESSAGE: line 0: invalid header name: a5 
&gt; 
&gt; This looks even more confusing than before. What is invalid about the name
&gt; &quot;a5&quot;?

&quot;a5&quot; only is invalid UTF-8 sequence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213403</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-16 13:44:42 -0700</bug_when>
    <thetext>Yes, I understand this. But to a Web developer, this would look like an ASCII string &quot;a5&quot; - there is nothing to say or imply that this is hexadecimal. And most Web developers probably don&apos;t know how utf-8 works anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213406</commentid>
    <comment_count>9</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-16 13:48:06 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Yes, I understand this. But to a Web developer, this would look like an ASCII
&gt; string &quot;a5&quot; - there is nothing to say or imply that this is hexadecimal. And
&gt; most Web developers probably don&apos;t know how utf-8 works anyway.

Ok, so changing console log to &quot; invalid UTF-8 sequence in header name: 0xa5 (in hexadecimal)&quot; is fine?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213420</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-16 14:08:03 -0700</bug_when>
    <thetext>My preferred message would be just &quot;invalid UTF-8 sequence in header name&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213426</commentid>
    <comment_count>11</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-16 14:21:07 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; My preferred message would be just &quot;invalid UTF-8 sequence in header name&quot;.

Does it mean we don&apos;t need to dump byte sequence of header name in hexadecimal?
IIRC, raw byte sequence might not be outputted correctly in some DRT, so we might need to rebaseline expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213429</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-16 14:29:40 -0700</bug_when>
    <thetext>I think that there is no need to dump the headers, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213432</commentid>
    <comment_count>13</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-16 14:32:35 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I think that there is no need to dump the headers, yes.

Ok, so I&apos;ll change log message and remove dumping byte sequence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213438</commentid>
    <comment_count>14</comment_count>
      <attachid>53566</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-16 14:45:42 -0700</bug_when>
    <thetext>Created attachment 53566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213464</commentid>
    <comment_count>15</comment_count>
      <attachid>53566</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-16 16:03:27 -0700</bug_when>
    <thetext>Comment on attachment 53566
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213474</commentid>
    <comment_count>16</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-16 16:13:54 -0700</bug_when>
    <thetext>Committed r57760: &lt;http://trac.webkit.org/changeset/57760&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53487</attachid>
            <date>2010-04-15 16:40:45 -0700</date>
            <delta_ts>2010-04-15 17:40:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37682-20100416084044.patch</filename>
            <type>text/plain</type>
            <size>6343</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjNWUyMjdlLi5iZDQ5NjY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQt
MTUgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGNyYXNoIHdoZW4gaXQg
cmVjZWl2ZXMgYmFkIGhlYWRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3NjgyCisKKyAgICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRz
aGFrZS1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldC90ZXN0
cy9iYWQtaGFuZHNoYWtlLWNyYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldC90
ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoX3dzaC5weTogQWRkZWQuCisgICAgICAgICogd2Vic29j
a2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLmpzOiBBZGRlZC4KKwog
MjAxMC0wNC0xNSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMv
YmFkLWhhbmRzaGFrZS1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQv
dGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMDQ2YThmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYnNvY2tldC90ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogaW52YWxpZCBoZWFkZXIgbmFtZSAi
XHhhNSIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhh
bmRzaGFrZTogJ3dlYnNvY2tldC1vcmlnaW4nIGhlYWRlciBpcyBtaXNzaW5nCitNYWtlIHN1cmUg
V2ViU29ja2V0IGRvZXNuJ3QgY3Jhc2ggd2l0aCBiYWQgaGFuZHNoYWtlIG1lc3NhZ2UuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworV2ViU29ja2V0IGlzIGNsb3NlZAorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhM2ExMWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC5odG1sCkBAIC0w
LDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2JhZC1oYW5kc2hh
a2UtY3Jhc2guanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2JhZC1oYW5kc2hha2UtY3Jhc2hfd3NoLnB5IGIvTGF5
b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2JhZC1oYW5kc2hha2UtY3Jhc2hfd3NoLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYzQ4MzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaF93c2gucHkK
QEAgLTAsMCArMSwxMSBAQAorZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgorICBtc2cgPSAiSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtl
XHJcbiIKKyAgbXNnICs9ICJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIgorICBtc2cgKz0gIkNvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuIgorICBtc2cgKz0gIlx4YTU6XHJcbiIKKyAgbXNnICs9ICJcclxu
IgorICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobXNnKQorICBwcmludCBtc2cKKworZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNo
LmpzIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9iYWQtaGFuZHNo
YWtlLWNyYXNoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMGNjNmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRl
c3RzL2JhZC1oYW5kc2hha2UtY3Jhc2guanMKQEAgLTAsMCArMSwyMCBAQAorZGVzY3JpcHRpb24o
Ik1ha2Ugc3VyZSBXZWJTb2NrZXQgZG9lc24ndCBjcmFzaCB3aXRoIGJhZCBoYW5kc2hha2UgbWVz
c2FnZS4iKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiBmaW5pc2goKSB7CisgICAg
aXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3Zh
ciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3Rz
L2JhZC1oYW5kc2hha2UtY3Jhc2giKTsKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKKyAgICBk
ZWJ1ZygiV2ViU29ja2V0IGlzIG9wZW4iKTsKK307Cit3cy5vbmNsb3NlID0gZnVuY3Rpb24gKCkg
eworICAgIGRlYnVnKCJXZWJTb2NrZXQgaXMgY2xvc2VkIik7CisgICAgZmluaXNoKCk7Cit9Owor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZhNDVjMy4uYjEzNmJkMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMC0wNC0xNSAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJTb2Nr
ZXQgY3Jhc2ggd2hlbiBpdCByZWNlaXZlcyBiYWQgaGVhZGVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2ODIKKworICAgICAgICBJZiBuYW1lIG9y
IHZhbHVlIGlzIG5vdCB2YWxpZCBVVEYtOCwgbmFtZVN0ciBvciB2YWx1ZVN0ciB3b3VsZCBiZQor
ICAgICAgICBudWxsIHN0cmluZywgc28gY3Jhc2hlZCBpbiBoZWFkZXJzLT5hZGQobmFtZVN0ciwg
dmFsdWVTdHIpLgorICAgICAgICBDaGVjayBib3RoIG5hbWVTdHIgYW5kIHZhbHVlU3RyIGFyZSBu
b3QgbnVsbCBzdHJpbmcuCisgICAgICAgIE90aGVyd2lzZSBoYW5kc2hha2Ugd2lsbCBmYWlsLgor
CisgICAgICAgIFRlc3Q6IHdlYnNvY2tldC90ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLmh0bWwK
KworICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmVuY29kZUhlYWRlckZpZWxkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyk6IGNoZWNrIG5hbWVTdHIgYW5kIHZh
bHVlU3RyIGFyZSBub3QgbnVsbCBzdHJpbmcuCisKIDIwMTAtMDQtMTUgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSBVc2VyQ29udGVudFVSTFBhdHRlcm4g
YXMgV2ViS2l0IFNQSQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApp
bmRleCAwYmE2YjExLi5hMjFmYTY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcApAQCAtOTUsNiArOTUsMjUgQEAgc3RhdGljIFN0cmluZyB0cmltQ29uc29sZU1l
c3NhZ2UoY29uc3QgY2hhciogcCwgc2l6ZV90IGxlbikKICAgICByZXR1cm4gczsKIH0KIAorc3Rh
dGljIFN0cmluZyBlbmNvZGVIZWFkZXJGaWVsZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
KQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgiXCIi
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGNoYXIg
Y2ggPSAqKGRhdGEgKyBpKTsKKyAgICAgICAgaWYgKGNoIDwgMHgyMCB8fCBjaCA+PSAweDdFKQor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlxceCUwMngiLCBjaCAm
IDB4ZmYpKTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPT0gMHg1YykKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJcXFxcIik7CisgICAgICAgIGVsc2UgaWYgKGNoID09ICciJykKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJcXFwiIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGNoKTsKKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIlwiIik7CisgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwogV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJT
b2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogbV91cmwodXJsKQogICAgICwg
bV9jbGllbnRQcm90b2NvbChwcm90b2NvbCkKQEAgLTQ0NSw2ICs0NjQsMTQgQEAgY29uc3QgY2hh
ciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGUKICAgICAgICAgfQogICAgICAgICBBdG9taWNTdHJpbmcgbmFtZVN0cihT
dHJpbmc6OmZyb21VVEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOwogICAgICAgICBTdHJp
bmcgdmFsdWVTdHIgPSBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgp
KTsKKyAgICAgICAgaWYgKG5hbWVTdHIuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fY29udGV4
dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgImludmFsaWQgaGVhZGVyIG5hbWUgIiArIGVuY29kZUhlYWRlckZpZWxkKG5hbWUu
ZGF0YSgpLCBuYW1lLnNpemUoKSksIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgICAgIHJl
dHVybiBwOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVN0ci5pc051bGwoKSkgeworICAg
ICAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiaW52YWxpZCBoZWFkZXIgdmFsdWUgIiArIGVuY29k
ZUhlYWRlckZpZWxkKHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKSwgMCwgY2xpZW50T3JpZ2lu
KCkpOworICAgICAgICAgICAgcmV0dXJuIHA7CisgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdv
cmssICJuYW1lPSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2
YWx1ZVN0ci51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaGVhZGVycy0+YWRkKG5hbWVTdHIsIHZh
bHVlU3RyKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53494</attachid>
            <date>2010-04-15 17:40:23 -0700</date>
            <delta_ts>2010-04-16 14:45:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37682-20100416094021.patch</filename>
            <type>text/plain</type>
            <size>5974</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZDlmZmU2Li43NzQ5MTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQt
MTUgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGNyYXNoIHdoZW4gaXQg
cmVjZWl2ZXMgYmFkIGhlYWRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3NjgyCisKKyAgICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRz
aGFrZS1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldC90ZXN0
cy9iYWQtaGFuZHNoYWtlLWNyYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldC90
ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoX3dzaC5weTogQWRkZWQuCisgICAgICAgICogd2Vic29j
a2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLmpzOiBBZGRlZC4KKwog
MjAxMC0wNC0xNSAgRXJpYyBVaHJoYW5lICA8ZXJpY3VAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERtaXRyeSBUaXRvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNv
Y2tldC90ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYnNvY2tldC90ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWFhZTE4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2JhZC1oYW5kc2hha2UtY3Jhc2gtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBpbnZhbGlkIGhl
YWRlciBuYW1lOiBhNSAKK01ha2Ugc3VyZSBXZWJTb2NrZXQgZG9lc24ndCBjcmFzaCB3aXRoIGJh
ZCBoYW5kc2hha2UgbWVzc2FnZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitXZWJT
b2NrZXQgaXMgY2xvc2VkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2JhZC1o
YW5kc2hha2UtY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9iYWQtaGFu
ZHNoYWtlLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEz
YTExZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9iYWQt
aGFuZHNoYWtlLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhh
bmRzaGFrZS1jcmFzaF93c2gucHkgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhh
bmRzaGFrZS1jcmFzaF93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MDFjNDgzMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9i
YWQtaGFuZHNoYWtlLWNyYXNoX3dzaC5weQpAQCAtMCwwICsxLDExIEBACitkZWYgd2ViX3NvY2tl
dF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgIG1zZyA9ICJIVFRQLzEuMSAxMDEgV2Vi
IFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuIgorICBtc2cgKz0gIlVwZ3JhZGU6IFdlYlNv
Y2tldFxyXG4iCisgIG1zZyArPSAiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iCisgIG1zZyArPSAi
XHhhNTpcclxuIgorICBtc2cgKz0gIlxyXG4iCisgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSht
c2cpCisgIHByaW50IG1zZworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0
LXRlc3RzL2JhZC1oYW5kc2hha2UtY3Jhc2guanMgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVz
dHMvc2NyaXB0LXRlc3RzL2JhZC1oYW5kc2hha2UtY3Jhc2guanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMGYwY2M2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC5qcwpAQCAt
MCwwICsxLDIwIEBACitkZXNjcmlwdGlvbigiTWFrZSBzdXJlIFdlYlNvY2tldCBkb2Vzbid0IGNy
YXNoIHdpdGggYmFkIGhhbmRzaGFrZSBtZXNzYWdlLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisK
K2Z1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly8xMjcu
MC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaCIpOword3Mub25v
cGVuID0gZnVuY3Rpb24gKCkgeworICAgIGRlYnVnKCJXZWJTb2NrZXQgaXMgb3BlbiIpOworfTsK
K3dzLm9uY2xvc2UgPSBmdW5jdGlvbiAoKSB7CisgICAgZGVidWcoIldlYlNvY2tldCBpcyBjbG9z
ZWQiKTsKKyAgICBmaW5pc2goKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAwZmE0ZDA3Li4wZDE0NGZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA0LTE1ICBGdW1pdG9zaGkg
VWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlYlNvY2tldCBjcmFzaCB3aGVuIGl0IHJlY2VpdmVzIGJhZCBo
ZWFkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NzY4MgorCisgICAgICAgIElmIG5hbWUgb3IgdmFsdWUgaXMgbm90IHZhbHVkIFVURi04LCBuYW1l
U3RyIG9yIHZhbHVlU3RyIHdvdWxkIGJlCisgICAgICAgIG51bGwgc3RyaW5nLCBzbyBjcmFzaGVk
IGluIGhlYWRlcnMtPmFkZChuYW1lU3RyLCB2YWx1ZVN0cikuCisgICAgICAgIENoZWNrIGJvdGgg
bmFtZVN0ciBhbmQgdmFsdWVTdHIgYXJlIG5vdCBudWxsIHN0cmluZy4KKyAgICAgICAgT3RoZXJ3
aXNlIGhhbmRzaGFrZSB3aWxsIGZhaWwuCisKKyAgICAgICAgVGVzdDogd2Vic29ja2V0L3Rlc3Rz
L2JhZC1oYW5kc2hha2UtY3Jhc2guaHRtbAorCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSGVhZGVyRmllbGRGb3JE
aXNwbGF5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJl
YWRIVFRQSGVhZGVycyk6IGNoZWNrIG5hbWVTdHIgYW5kIHZhbHVlU3RyIGFyZSBub3QgbnVsbCBz
dHJpbmcuCisKIDIwMTAtMDQtMTUgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDBiYTZiMTEuLjZlYTM3MzYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC05NSw2ICs5NSwxNCBAQCBzdGF0
aWMgU3RyaW5nIHRyaW1Db25zb2xlTWVzc2FnZShjb25zdCBjaGFyKiBwLCBzaXplX3QgbGVuKQog
ICAgIHJldHVybiBzOwogfQogCitzdGF0aWMgU3RyaW5nIGVuY29kZUhlYWRlckZpZWxkRm9yRGlz
cGxheShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKQoreworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJTAyeCAiLCAqKGRhdGEgKyBpKSAmIDB4ZmYp
KTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiBXZWJTb2NrZXRIYW5kc2hh
a2U6OldlYlNvY2tldEhhbmRzaGFrZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX3VybCh1cmwp
CiAgICAgLCBtX2NsaWVudFByb3RvY29sKHByb3RvY29sKQpAQCAtNDQ1LDYgKzQ1MywxNCBAQCBj
b25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFy
KiBzdGFydCwgY29uc3QgY2hhciogZQogICAgICAgICB9CiAgICAgICAgIEF0b21pY1N0cmluZyBu
YW1lU3RyKFN0cmluZzo6ZnJvbVVURjgobmFtZS5kYXRhKCksIG5hbWUuc2l6ZSgpKSk7CiAgICAg
ICAgIFN0cmluZyB2YWx1ZVN0ciA9IFN0cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1
ZS5zaXplKCkpOworICAgICAgICBpZiAobmFtZVN0ci5pc051bGwoKSkgeworICAgICAgICAgICAg
bV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCAiaW52YWxpZCBoZWFkZXIgbmFtZTogIiArIGVuY29kZUhlYWRlckZp
ZWxkRm9yRGlzcGxheShuYW1lLmRhdGEoKSwgbmFtZS5zaXplKCkpLCAwLCBjbGllbnRPcmlnaW4o
KSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVT
dHIuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgImludmFsaWQgaGVh
ZGVyIHZhbHVlOiAiICsgZW5jb2RlSGVhZGVyRmllbGRGb3JEaXNwbGF5KHZhbHVlLmRhdGEoKSwg
dmFsdWUuc2l6ZSgpKSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmssICJuYW1lPSVzIHZhbHVlPSVzIiwgbmFt
ZVN0ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1ZVN0ci51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgaGVhZGVycy0+YWRkKG5hbWVTdHIsIHZhbHVlU3RyKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53566</attachid>
            <date>2010-04-16 14:45:42 -0700</date>
            <delta_ts>2010-04-16 16:03:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37682-20100417064540.patch</filename>
            <type>text/plain</type>
            <size>5413</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4N2YwZWU5Li45OGVkNjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQt
MTYgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGNyYXNoIHdoZW4gaXQg
cmVjZWl2ZXMgYmFkIGhlYWRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3NjgyCisKKyAgICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRz
aGFrZS1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldC90ZXN0
cy9iYWQtaGFuZHNoYWtlLWNyYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldC90
ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoX3dzaC5weTogQWRkZWQuCisgICAgICAgICogd2Vic29j
a2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLmpzOiBBZGRlZC4KKwog
MjAxMC0wNC0xNiAgU2VyZ2V5IFVsYW5vdiA8c2VyZ2V5dUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgY2hlY2tpbmcgaW4gYmFzZWxpbmVzIGR1ZSB0byBjaGFuZ2VzIHRvIENo
cm9taXVtJ3MgdmlkZW8gc2NhbGluZyBhbGdvcml0aG0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U3YTg4NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogaW52
YWxpZCBVVEYtOCBzZXF1ZW5jZSBpbiBoZWFkZXIgbmFtZQorTWFrZSBzdXJlIFdlYlNvY2tldCBk
b2Vzbid0IGNyYXNoIHdpdGggYmFkIGhhbmRzaGFrZSBtZXNzYWdlLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1dlYlNvY2tldCBpcyBjbG9zZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2JhZC1oYW5kc2hha2UtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kYTNhMTFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2JhZC1oYW5kc2hha2UtY3Jhc2guaHRtbApAQCAtMCwwICsxLDEzIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoLmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YnNvY2tldC90ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoX3dzaC5weSBiL0xheW91dFRlc3RzL3dl
YnNvY2tldC90ZXN0cy9iYWQtaGFuZHNoYWtlLWNyYXNoX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wMWM0ODMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2JhZC1oYW5kc2hha2UtY3Jhc2hfd3NoLnB5CkBAIC0wLDAgKzEs
MTEgQEAKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgbXNn
ID0gIkhUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4iCisgIG1z
ZyArPSAiVXBncmFkZTogV2ViU29ja2V0XHJcbiIKKyAgbXNnICs9ICJDb25uZWN0aW9uOiBVcGdy
YWRlXHJcbiIKKyAgbXNnICs9ICJceGE1OlxyXG4iCisgIG1zZyArPSAiXHJcbiIKKyAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXRlKG1zZykKKyAgcHJpbnQgbXNnCisKK2RlZiB3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEocmVxdWVzdCk6CisgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC5qcyBiL0xheW91
dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjBjYzZiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9iYWQtaGFu
ZHNoYWtlLWNyYXNoLmpzCkBAIC0wLDAgKzEsMjAgQEAKK2Rlc2NyaXB0aW9uKCJNYWtlIHN1cmUg
V2ViU29ja2V0IGRvZXNuJ3QgY3Jhc2ggd2l0aCBiYWQgaGFuZHNoYWtlIG1lc3NhZ2UuIik7Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gZmluaXNoKCkgeworICAgIGlzU3VjY2Vzc2Z1
bGx5UGFyc2VkKCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgd3MgPSBuZXcg
V2ViU29ja2V0KCJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9iYWQtaGFuZHNo
YWtlLWNyYXNoIik7Cit3cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7CisgICAgZGVidWcoIldlYlNv
Y2tldCBpcyBvcGVuIik7Cit9Oword3Mub25jbG9zZSA9IGZ1bmN0aW9uICgpIHsKKyAgICBkZWJ1
ZygiV2ViU29ja2V0IGlzIGNsb3NlZCIpOworICAgIGZpbmlzaCgpOworfTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ4MmZlODAuLmY2ZTU3YTYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTAtMDQtMTYgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGNyYXNoIHdo
ZW4gaXQgcmVjZWl2ZXMgYmFkIGhlYWRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM3NjgyCisKKyAgICAgICAgSWYgbmFtZSBvciB2YWx1ZSBpcyBu
b3QgdmFsaWQgVVRGLTgsIG5hbWVTdHIgb3IgdmFsdWVTdHIgd291bGQgYmUKKyAgICAgICAgbnVs
bCBzdHJpbmcsIHNvIGNyYXNoZWQgaW4gaGVhZGVycy0+YWRkKG5hbWVTdHIsIHZhbHVlU3RyKS4K
KyAgICAgICAgQ2hlY2sgYm90aCBuYW1lU3RyIGFuZCB2YWx1ZVN0ciBhcmUgbm90IG51bGwgc3Ry
aW5nLgorICAgICAgICBPdGhlcndpc2UgaGFuZHNoYWtlIHdpbGwgZmFpbC4KKworICAgICAgICBU
ZXN0OiB3ZWJzb2NrZXQvdGVzdHMvYmFkLWhhbmRzaGFrZS1jcmFzaC5odG1sCisKKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyk6IGNoZWNrIG5hbWVTdHIgYW5kIHZh
bHVlU3RyIGFyZSBub3QgbnVsbCBzdHJpbmcuCisKIDIwMTAtMDQtMTYgIEphcmtrbyBTYWtraW5l
biAgPGphcmtrby5qLnNha2tpbmVuQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
aW5kZXggMGJhNmIxMS4uMTQ0OWM4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKQEAgLTQ0NSw2ICs0NDUsMTQgQEAgY29uc3QgY2hhciogV2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGUK
ICAgICAgICAgfQogICAgICAgICBBdG9taWNTdHJpbmcgbmFtZVN0cihTdHJpbmc6OmZyb21VVEY4
KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOwogICAgICAgICBTdHJpbmcgdmFsdWVTdHIgPSBT
dHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKTsKKyAgICAgICAgaWYg
KG5hbWVTdHIuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShK
U01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgImludmFs
aWQgVVRGLTggc2VxdWVuY2UgaW4gaGVhZGVyIG5hbWUiLCAwLCBjbGllbnRPcmlnaW4oKSk7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVTdHIuaXNO
dWxsKCkpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgImludmFsaWQgVVRGLTggc2Vx
dWVuY2UgaW4gaGVhZGVyIHZhbHVlIiwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmssICJuYW1lPSVzIHZhbHVl
PSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1ZVN0ci51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgaGVhZGVycy0+YWRkKG5hbWVTdHIsIHZhbHVlU3RyKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="37329"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>