<?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>87980</bug_id>
          
          <creation_ts>2012-05-31 08:05:27 -0700</creation_ts>
          <short_desc>Fix access beyond array end when parsing the empty string</short_desc>
          <delta_ts>2012-06-04 11:49:22 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Andy Wingo">wingo</reporter>
          <assigned_to name="Andy Wingo">wingo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>jdapena</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>638423</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-05-31 08:05:27 -0700</bug_when>
    <thetext>The patch to be attached fixes an OOB array access in the lexer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638427</commentid>
    <comment_count>1</comment_count>
      <attachid>145095</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-05-31 08:10:52 -0700</bug_when>
    <thetext>Created attachment 145095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638521</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-05-31 10:09:54 -0700</bug_when>
    <thetext>Adding more potential reviewers :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638543</commentid>
    <comment_count>3</comment_count>
      <attachid>145095</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-31 10:28:17 -0700</bug_when>
    <thetext>Comment on attachment 145095
Patch

Our policy is to require a regression test for a code change that fixes an observable bug (http://www.webkit.org/coding/contributing.html). Can you make a regression test for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638587</commentid>
    <comment_count>4</comment_count>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2012-05-31 11:19:10 -0700</bug_when>
    <thetext>With this patch, I&apos;m getting the assert

==31670== Invalid write of size 4
==31670==    at 0xB4E5578: JSC::Identifier const&amp; JSC::IdentifierArena::makeIdentifier&lt;unsigned short&gt;(JSC::JSGlobalData*, unsigned short const*, unsigned long) (ParserArena.h:74)
==31670==    by 0xB4E2FAA: JSC::Lexer&lt;unsigned short&gt;::makeIdentifier(unsigned short const*, unsigned long) (Lexer.h:236)
==31670==    by 0xB4E217A: JSC::Lexer&lt;unsigned short&gt;::scanRegExp(JSC::Identifier const*&amp;, JSC::Identifier const*&amp;, unsigned short) (Lexer.cpp:1623)
==31670==    by 0xB531EC0: JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned short&gt; &gt;::parsePrimaryExpression&lt;JSC::SyntaxChecker&gt;(JSC::SyntaxChecker&amp;) (Parser.cpp:1456)
==31670==    by 0xB52F5B6: JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned short&gt; &gt;::parseMemberExpression&lt;JSC::SyntaxChecker&gt;(JSC::SyntaxChecker&amp;) (Parser.cpp:1519)
==31670==    by 0xB52DE05: JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned short&gt; &gt;::parseUnaryExpression&lt;JSC::SyntaxChecker&gt;(JSC::SyntaxChecker&amp;) (Parser.cpp:1608)
==31670==    by 0xB52C0DC: JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned short&gt; &gt;::parseBinaryExpression&lt;JSC::SyntaxChecker&gt;(JSC::SyntaxChecker&amp;) (Parser.cpp:1150)
==31670==    by 0xB52A20E: JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned short&gt; &gt;::parseConditionalExpression&lt;JSC::SyntaxChecker&gt;(JSC::SyntaxChecker&amp;) (Parser.cpp:1112)
==31670==    by 0xB527DCE: JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned short&gt; &gt;::parseAssignmentExpression&lt;JSC::SyntaxChecker&gt;(JSC::SyntaxChecker&amp;) (Parser.cpp:1054)
==31670==    by 0xB524B34: JSC::SyntaxChecker::Expression JSC::Parser&lt;JSC::Lexer&lt;unsigned short&gt; &gt;::parseExpression&lt;JSC::SyntaxChecker&gt;(JSC::SyntaxChecker&amp;) (Parser.cpp:1028)

Seems similar changes are needed in other usages of makeIdentifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638649</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-05-31 12:43:51 -0700</bug_when>
    <thetext>I appear to have borked the patch :)  It was a valgrind run from José that caught the bug.

Geoffrey; are you asking me to make an exploit for this bug?  It seems tricky: the extra byte would have to reside on a page that is not mapped into memory, and it would just yield a segfault.  There is of course the possibility of poisoning the recent identifiers cache, but that doesn&apos;t seem to be exploitable, merely an efficiency loss.  I&apos;ll submit an updated patch, but can you please clarify that you think a regression test is necessary in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638683</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-31 13:45:57 -0700</bug_when>
    <thetext>&gt; Geoffrey; are you asking me to make an exploit for this bug?

I&apos;m not sure -- maybe you can explain what the symptom is that you&apos;re trying to fix, and what conditions might cause it, and then we can talk about the best way to add a test.

If this is a read past the end of a malloc buffer, one option is to create a test that crashes if and only if you are running under GuardMalloc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638695</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-05-31 13:59:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Geoffrey; are you asking me to make an exploit for this bug?
&gt; 
&gt; I&apos;m not sure -- maybe you can explain what the symptom is that you&apos;re trying to fix, and what conditions might cause it, and then we can talk about the best way to add a test.

The story is that José was doing a valgrind run and noticed this read beyond the end of the array.  It seems to be worth fixing, as it could cause a segfault at some point.  Admittedly, we have not seen a crash due to this.

Though, hummm: what if the OOB byte is greater than 127.  In that case we would be writing beyond the bounds of m_recentIdentifiers.

&gt; If this is a read past the end of a malloc buffer, one option is to create a test that crashes if and only if you are running under GuardMalloc.

I will look into this, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639511</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-01 10:45:44 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; If this is a read past the end of a malloc buffer, one option is to create a test that crashes if and only if you are running under GuardMalloc.
&gt; 
&gt; I will look into this, thanks.

Another good option is to add an assertion that we aren’t reading past the end of the buffer, then write a test that hits the assertion, then fix the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640561</commentid>
    <comment_count>9</comment_count>
      <attachid>145582</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-06-04 07:20:59 -0700</bug_when>
    <thetext>Created attachment 145582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640568</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-06-04 07:23:37 -0700</bug_when>
    <thetext>The patch I pushed does include tests for the codepaths that hit this assertion.  Without the fix they do indeed abort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640590</commentid>
    <comment_count>11</comment_count>
      <attachid>145582</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-06-04 08:07:21 -0700</bug_when>
    <thetext>Comment on attachment 145582
Patch

Clearing review flag, as I am seeing some test suite failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640629</commentid>
    <comment_count>12</comment_count>
      <attachid>145596</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-06-04 09:01:16 -0700</bug_when>
    <thetext>Created attachment 145596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640633</commentid>
    <comment_count>13</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-06-04 09:04:40 -0700</bug_when>
    <thetext>Attachment 145582 had a bug.  Sorry for the noise.  I fixed it and ran all the layout tests on the one I just uploaded, attachment 145596.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640718</commentid>
    <comment_count>14</comment_count>
      <attachid>145596</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-04 11:49:22 -0700</bug_when>
    <thetext>Comment on attachment 145596
Patch

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

&gt; Source/JavaScriptCore/parser/Lexer.cpp:605
&gt; +    if (!length)
&gt; +        return;

This function and all its callees seem safe vs zero length. What happens if you remove this check?

If something bad happens, why doesn&apos;t append16 need this check?

&gt; Source/JavaScriptCore/parser/ParserArena.h:74
&gt; +        ASSERT(length);

I&apos;m not a fan of the design pattern that has a callee ASSERT a condition and then requires all callers to ensure the condition with extra lines of code. This is only a good tradeoff if it&apos;s critical to performance in some way. But even then, I prefer to have a &quot;fast path&quot; function that ASSERTs the condition and a &quot;slow path&quot; convenience function that ensures the condition. That way, there&apos;s only one place in the code that needs to get this right, instead of many.

I&apos;d suggest the following design change:
(1) Remove all instances of &quot;stringStart != currentCharacter() &amp;&amp; &quot;, &quot;currentCharacter() != stringStart &amp;&amp;&quot;, &quot;identifierStart != currentCharacter()&quot;, etc.
(2) Add a test for zero length inside Lexer::makeIdentifier and Lexer::makeIdentifierLCharFromUChar, which returns the empty identifier.
(3) Put an ASSERT(length) inside IdentifierArena::makeIdentifier and IdentifierArena::makeIdentifierLCharFromUChar.

To test the *16 conditions, you need a separate .js file encoded as UTF-16.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145095</attachid>
            <date>2012-05-31 08:10:52 -0700</date>
            <delta_ts>2012-06-04 07:20:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87980-20120531171050.patch</filename>
            <type>text/plain</type>
            <size>2718</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YTk3YzAyZjExZjk3YmI0MWIwZDg3YTQzNjJkMzJhYTcwMDY2NDY4Li5jMjA5ODg1NzlmOWUyNzg4
MDVkNTZhMzFhNmQzNmU3ZmE5ODZkODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMi0wNS0zMSAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgRml4IGFjY2VzcyBiZXlvbmQgYXJyYXkgZW5kIGluIFBhcnNlckFyZW5hOjptYWtl
SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODc5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhcnNlci9MZXhlci5jcHAgKHBhcnNlU3RyaW5nKTogQXZvaWQgY2FsbGluZworICAgICAg
ICBQYXJzZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIgZm9yIHRoZSBlbXB0eSBpZGVudGlmaWVyLiBJ
bnN0ZWFkCisgICAgICAgIHJlZmVyZW5jZSB0aGUgZW1wdHkgaWRlbnRpZmllciBkaXJlY3RseS4K
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaCAobWFrZUlkZW50aWZpZXIpOiBBZGQgYXNz
ZXJ0aW9uIHRoYXQgbGVuZ3RoCisgICAgICAgIGlzIG5vbnplcm8uCisKIDIwMTItMDUtMzAgIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBIZWFwIHNo
b3VsZCBzd2VlcCBpbmNyZW1lbnRhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCmluZGV4IDNiMDIwZjRmMmIxYjA5NmE3MGE5NWE5YjU4ODgyN2JkOTBiOTg1OWMuLmU2YjQ5
MWIxMGE4ZjIzZGMzYjE3ZjIzMTYyN2FiZWQwNjhjZmI0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSw4ICsyNSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTGV4ZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKQEAg
LTg3OSwxMyArODc5LDE0IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxX
QVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZVN0cmluZyhKU1RvCiAgICAgICAgIHNoaWZ0
KCk7CiAgICAgfQogCi0gICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIoKSAhPSBzdHJpbmdTdGFydCAm
JiBzaG91bGRCdWlsZFN0cmluZ3MpCisgICAgaWYgKCFzaG91bGRCdWlsZFN0cmluZ3MpCisgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOworICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIo
KSAhPSBzdHJpbmdTdGFydCkgewogICAgICAgICBhcHBlbmQ4KHN0cmluZ1N0YXJ0LCBjdXJyZW50
Q2hhcmFjdGVyKCkgLSBzdHJpbmdTdGFydCk7Ci0gICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykg
ewogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRh
dGEoKSwgbV9idWZmZXI4LnNpemUoKSk7CiAgICAgICAgIG1fYnVmZmVyOC5yZXNpemUoMCk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOworICAgICAgICB0b2tlbkRh
dGEtPmlkZW50ID0gJm1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVy
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlckFyZW5hLmgKaW5kZXggMDY3YjgzYTI2MmYxMjBlYWFlYWRhOWYxZGUyYWRhMzU3NzkwMDlj
Yy4uYzhlYTU2Y2UwMWU0YTQ2ZGU2MjRhZDBiNzAwNmZjODRkMTIwODQxYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtNzEsNiArNzEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBBTFdBWVNfSU5MSU5F
IGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBUKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQog
ICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCk7CiAgICAgICAgIGlmIChjaGFyYWN0ZXJzWzBd
ID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikgewogICAgICAgICAgICAgbV9pZGVudGlmaWVy
cy5hcHBlbmQoSWRlbnRpZmllcihnbG9iYWxEYXRhLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145582</attachid>
            <date>2012-06-04 07:20:59 -0700</date>
            <delta_ts>2012-06-04 09:01:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87980-20120604162058.patch</filename>
            <type>text/plain</type>
            <size>5477</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Y2Q0NzgzYTYxNzQxNzdhN2RmODlhYzg1ZDA4YTUxYzE1ZTZjMzI3Li5jN2NmNTFmMzNkOTIyYjU1
YjIwNjg1ZmE1Y2M2OTc4MzFkOWJmYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMi0wNS0zMSAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgRml4IGFjY2VzcyBiZXlvbmQgYXJyYXkgZW5kIGluIFBhcnNlckFyZW5hOjptYWtl
SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODc5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhcnNlci9MZXhlci5jcHAgKHBhcnNlU3RyaW5nLCBzY2FuUmVnRXhwKTogQXZvaWQgY2Fs
bGluZworICAgICAgICBQYXJzZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIgZm9yIHRoZSBlbXB0eSBp
ZGVudGlmaWVyLiBJbnN0ZWFkCisgICAgICAgIHJlZmVyZW5jZSB0aGUgZW1wdHkgaWRlbnRpZmll
ciBkaXJlY3RseS4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyQXJlbmEuaCAobWFrZUlkZW50aWZp
ZXIpOiBBZGQgYXNzZXJ0aW9uIHRoYXQgbGVuZ3RoCisgICAgICAgIGlzIG5vbnplcm8uCisKIDIw
MTItMDYtMDIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWFrIHBvaW50ZXIgZmluYWxpemF0aW9uIHNob3VsZCBiZSBsYXp5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDNiMDIwZjRmMmIxYjA5NmE3MGE5NWE5YjU4ODgyN2Jk
OTBiOTg1OWMuLmE5ZmExY2EyYzUyOWI3ZjlkNzRlYzExZWMyMzUzZTM1YTVhODBiMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5j
bHVkZSAiTGV4ZXIuaCIKIAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKLQogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIk5vZGVJbmZvLmgiCkBAIC04NzksMTMgKzg3OCwxNCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6cGFyc2VTdHJpbmco
SlNUbwogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIGlmIChjdXJyZW50Q2hhcmFjdGVy
KCkgIT0gc3RyaW5nU3RhcnQgJiYgc2hvdWxkQnVpbGRTdHJpbmdzKQorICAgIGlmICghc2hvdWxk
QnVpbGRTdHJpbmdzKQorICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKKyAgICBlbHNlIGlm
IChjdXJyZW50Q2hhcmFjdGVyKCkgIT0gc3RyaW5nU3RhcnQpIHsKICAgICAgICAgYXBwZW5kOChz
dHJpbmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOwotICAgIGlmIChz
aG91bGRCdWlsZFN0cmluZ3MpIHsKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVu
dGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpOwogICAgICAgICBtX2J1
ZmZlcjgucmVzaXplKDApOwogICAgIH0gZWxzZQotICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
MDsKKyAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFt
ZXMtPmVtcHR5SWRlbnRpZmllcjsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTYxMSwxNiAr
MTYxMSwyMiBAQCBib29sIExleGVyPFQ+OjpzY2FuUmVnRXhwKGNvbnN0IElkZW50aWZpZXIqJiBw
YXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyKiYgZmxhZ3MsCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBwYXR0ZXJuID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYu
c2l6ZSgpKTsKLSAgICBtX2J1ZmZlcjE2LnJlc2l6ZSgwKTsKKyAgICBpZiAobV9idWZmZXIxNi5z
aXplKCkpIHsKKyAgICAgICAgcGF0dGVybiA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYuZGF0
YSgpLCBtX2J1ZmZlcjE2LnNpemUoKSk7CisgICAgICAgIG1fYnVmZmVyMTYucmVzaXplKDApOwor
ICAgIH0gZWxzZQorICAgICAgICBwYXR0ZXJuID0gJm1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+ZW1wdHlJZGVudGlmaWVyOwogCiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkp
IHsKICAgICAgICAgcmVjb3JkMTYobV9jdXJyZW50KTsKICAgICAgICAgc2hpZnQoKTsKICAgICB9
CiAKLSAgICBmbGFncyA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYuZGF0YSgpLCBtX2J1ZmZl
cjE2LnNpemUoKSk7Ci0gICAgbV9idWZmZXIxNi5yZXNpemUoMCk7CisgICAgaWYgKG1fYnVmZmVy
MTYuc2l6ZSgpKSB7CisgICAgICAgIGZsYWdzID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXIxNi5k
YXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKKyAgICAgICAgbV9idWZmZXIxNi5yZXNpemUoMCk7
CisgICAgfSBlbHNlCisgICAgICAgIGZsYWdzID0gJm1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+ZW1wdHlJZGVudGlmaWVyOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXggMDY3YjgzYTI2MmYxMjBlYWFlYWRh
OWYxZGUyYWRhMzU3NzkwMDljYy4uYzhlYTU2Y2UwMWU0YTQ2ZGU2MjRhZDBiNzAwNmZjODRkMTIw
ODQxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVu
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAt
NzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFr
ZUlkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBUKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbGVuZ3RoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCk7CiAgICAgICAg
IGlmIChjaGFyYWN0ZXJzWzBdID49IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcikgewogICAgICAg
ICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcihnbG9iYWxEYXRhLCBjaGFyYWN0
ZXJzLCBsZW5ndGgpKTsKICAgICAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZjExNDBmYWE2ZTI2NzVjMjRkOGI1Y2Y3YTJjMmM0N2Q4ZGFmNDNhLi4yNWE3MGI0
MjBjNWUzZDNiMGZlYmJkMDExOWQzMzE2NWJiMjcyZWFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMDYtMDQgIEFuZHkgV2luZ28gIDx3aW5nb0BpZ2FsaWEuY29tPgorCisgICAgICAgIEZp
eCBhY2Nlc3MgYmV5b25kIGFycmF5IGVuZCBpbiBQYXJzZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2pz
L3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvc2Ny
aXB0LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2suanM6IEFkZCBhIGNvdXBsZSB0ZXN0cworICAg
ICAgICB0aGF0IGhpdCB0aGUgbWFrZUlkZW50aWZpZXIoKSBhc3NlcnRpb24gaWYgdGhlIExleGVy
LmNwcCBmaXhlcworICAgICAgICBhcmUgbm90IGluY2x1ZGVkLgorCiAyMDEyLTA2LTA0ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKICAgICAgICAg
W0NhaXJvXSBJbXBsZW1lbnRhdGlvbiBvZiBHcmFwaGljc0NvbnRleHQgZG9lcyBub3Qgc2F2ZS9y
ZXN0b3JlIEltYWdlSW50ZXJwb2xhdGlvbiBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2pzL3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0CmluZGV4IDNhNDg5YWNl
MzcyYWFkODgwZjY1ZDkxZWZmMjI1M2EzZTY4MWRjOWIuLjllNjJhZWY4NjU3MmQ4NGU3ZWVmYzNl
MzI1OGFkZDJiMjUzOTZmYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvcGFyc2Vy
LXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9wYXJz
ZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dApAQCAtNTc4LDYgKzU3OCwxMCBAQCBQQVNTIFZh
bGlkOiAgICJmdW5jdGlvbiBmKCkgeyAoe2E6IDEgfHwgMX0uYSA9IDEpIH0iCiBQQVNTIGUubGlu
ZSBpcyAxCiBQQVNTIGZvbyBpcyAnUEFTUycKIFBBU1MgYmFyIGlzICdQQVNTJworUEFTUyBWYWxp
ZDogICAiIiIiCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyAiIiB9IgorUEFTUyBWYWxp
ZDogICAiL1tdLyIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IC9bXS8gfSIKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2suanMK
aW5kZXggZTJmY2MzMDE5OWY4NjMwMTQ4MDhiNjhhODM3MGM4MDBlNDQ3ZDI3OS4uYWI3ZjViNjNj
YTU5MWQ4MmFiY2E3MDZhYzVhZTlhNzM1NWJhNzEzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zY3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qcworKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzCkBAIC0zNzUs
MyArMzc1LDYgQEAgdHJ5IHsKICAgICAgc2hvdWxkQmUoImZvbyIsICInUEFTUyciKTsKICAgICAg
c2hvdWxkQmUoImJhciIsICInUEFTUyciKTsKIH0KKwordmFsaWQoJyIiJyk7Cit2YWxpZCgnL1td
LycpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145596</attachid>
            <date>2012-06-04 09:01:16 -0700</date>
            <delta_ts>2012-06-04 11:49:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87980-20120604180114.patch</filename>
            <type>text/plain</type>
            <size>6232</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Y2Q0NzgzYTYxNzQxNzdhN2RmODlhYzg1ZDA4YTUxYzE1ZTZjMzI3Li5hZDBiZWEzN2E5NjZiODRk
NDM1NTkxMTIwZDFlYzliZTBkMjA0ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMi0wNS0zMSAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgRml4IGFjY2VzcyBiZXlvbmQgYXJyYXkgZW5kIGluIFBhcnNlckFyZW5hOjptYWtl
SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODc5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhcnNlci9MZXhlci5jcHAgKHBhcnNlU3RyaW5nLCBzY2FuUmVnRXhwKTogQXZvaWQgY2Fs
bGluZworICAgICAgICBQYXJzZXJBcmVuYTo6bWFrZUlkZW50aWZpZXIgZm9yIHRoZSBlbXB0eSBp
ZGVudGlmaWVyLiBJbnN0ZWFkCisgICAgICAgIHJlZmVyZW5jZSB0aGUgZW1wdHkgaWRlbnRpZmll
ciBkaXJlY3RseS4KKyAgICAgICAgKGFwcGVuZDgpOiBNb3ZlIHRoZSBsZW5ndGggPT0gMCBzaG9y
dGN1dCBoZXJlLCBmcm9tIGl0cyBjYWxsZXJzLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJBcmVu
YS5oIChtYWtlSWRlbnRpZmllcik6IEFkZCBhc3NlcnRpb24gdGhhdCBsZW5ndGgKKyAgICAgICAg
aXMgbm9uemVyby4KKwogMjAxMi0wNi0wMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYWsgcG9pbnRlciBmaW5hbGl6YXRpb24gc2hvdWxkIGJlIGxhenkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggM2IwMjBmNGYyYjFiMDk2
YTcwYTk1YTliNTg4ODI3YmQ5MGI5ODU5Yy4uMmUwY2RiYzUxZDNmYmJjMTdiMjA0ODJlMWVkNDg2
NDVhYzFjY2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTYw
MSw2ICs2MDEsOSBAQCBpbmxpbmUgdm9pZCBhc3NlcnRDaGFySXNJbjhCaXRSYW5nZShMQ2hhcikK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogaW5saW5lIHZvaWQgTGV4ZXI8VD46OmFwcGVuZDgoY29u
c3QgVCogcCwgc2l6ZV90IGxlbmd0aCkKIHsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgc2l6ZV90IGN1cnJlbnRTaXplID0gbV9idWZmZXI4LnNpemUoKTsKICAgICBt
X2J1ZmZlcjguZ3JvdyhjdXJyZW50U2l6ZSArIGxlbmd0aCk7CiAgICAgTENoYXIqIHJhd0J1ZmZl
ciA9IG1fYnVmZmVyOC5kYXRhKCkgKyBjdXJyZW50U2l6ZTsKQEAgLTgzNSw3ICs4MzgsNyBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgYm9vbCBMZXhl
cjxUPjo6cGFyc2VTdHJpbmcoSlNUbwogCiAgICAgd2hpbGUgKG1fY3VycmVudCAhPSBzdHJpbmdR
dW90ZUNoYXJhY3RlcikgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcp
KSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudENoYXJhY3RlcigpICYm
IHNob3VsZEJ1aWxkU3RyaW5ncykKKyAgICAgICAgICAgIGlmIChzaG91bGRCdWlsZFN0cmluZ3Mp
CiAgICAgICAgICAgICAgICAgYXBwZW5kOChzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3Rlcigp
IC0gc3RyaW5nU3RhcnQpOwogICAgICAgICAgICAgc2hpZnQoKTsKIApAQCAtODc5LDExICs4ODIs
MTMgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5MSU5FIGJv
b2wgTGV4ZXI8VD46OnBhcnNlU3RyaW5nKEpTVG8KICAgICAgICAgc2hpZnQoKTsKICAgICB9CiAK
LSAgICBpZiAoY3VycmVudENoYXJhY3RlcigpICE9IHN0cmluZ1N0YXJ0ICYmIHNob3VsZEJ1aWxk
U3RyaW5ncykKLSAgICAgICAgYXBwZW5kOChzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3Rlcigp
IC0gc3RyaW5nU3RhcnQpOwogICAgIGlmIChzaG91bGRCdWlsZFN0cmluZ3MpIHsKLSAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVm
ZmVyOC5zaXplKCkpOwotICAgICAgICBtX2J1ZmZlcjgucmVzaXplKDApOworICAgICAgICBhcHBl
bmQ4KHN0cmluZ1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJpbmdTdGFydCk7CisgICAg
ICAgIGlmIChtX2J1ZmZlcjguc2l6ZSgpKSB7CisgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSk7Cisg
ICAgICAgICAgICBtX2J1ZmZlcjgucmVzaXplKDApOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5lbXB0
eUlkZW50aWZpZXI7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwog
CkBAIC0xNjExLDE2ICsxNjE2LDIyIEBAIGJvb2wgTGV4ZXI8VD46OnNjYW5SZWdFeHAoY29uc3Qg
SWRlbnRpZmllciomIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIqJiBmbGFncywKICAgICAgICAg
fQogICAgIH0KIAotICAgIHBhdHRlcm4gPSBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjE2LmRhdGEo
KSwgbV9idWZmZXIxNi5zaXplKCkpOwotICAgIG1fYnVmZmVyMTYucmVzaXplKDApOworICAgIGlm
IChtX2J1ZmZlcjE2LnNpemUoKSkgeworICAgICAgICBwYXR0ZXJuID0gbWFrZUlkZW50aWZpZXIo
bV9idWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKKyAgICAgICAgbV9idWZmZXIx
Ni5yZXNpemUoMCk7CisgICAgfSBlbHNlCisgICAgICAgIHBhdHRlcm4gPSAmbV9nbG9iYWxEYXRh
LT5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXI7CiAKICAgICB3aGlsZSAoaXNJZGVudFBh
cnQobV9jdXJyZW50KSkgewogICAgICAgICByZWNvcmQxNihtX2N1cnJlbnQpOwogICAgICAgICBz
aGlmdCgpOwogICAgIH0KIAotICAgIGZsYWdzID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXIxNi5k
YXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKLSAgICBtX2J1ZmZlcjE2LnJlc2l6ZSgwKTsKKyAg
ICBpZiAobV9idWZmZXIxNi5zaXplKCkpIHsKKyAgICAgICAgZmxhZ3MgPSBtYWtlSWRlbnRpZmll
cihtX2J1ZmZlcjE2LmRhdGEoKSwgbV9idWZmZXIxNi5zaXplKCkpOworICAgICAgICBtX2J1ZmZl
cjE2LnJlc2l6ZSgwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZmxhZ3MgPSAmbV9nbG9iYWxEYXRh
LT5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXI7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCAwNjdiODNh
MjYyZjEyMGVhYWVhZGE5ZjFkZTJhZGEzNTc3OTAwOWNjLi5jOGVhNTZjZTAxZTRhNDZkZTYyNGFk
MGI3MDA2ZmM4NGQxMjA4NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJBcmVuYS5oCkBAIC03MSw2ICs3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciYgSWRlbnRp
ZmllckFyZW5hOjptYWtlSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0
IFQqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiAgICAgeworICAgICAgICBBU1NFUlQobGVu
Z3RoKTsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbMF0gPj0gTWF4aW11bUNhY2hhYmxlQ2hhcmFj
dGVyKSB7CiAgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKGdsb2Jh
bERhdGEsIGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgICAgICAgICAgcmV0dXJuIG1faWRlbnRp
ZmllcnMubGFzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRmMTE0MGZhYTZlMjY3NWMyNGQ4YjVjZjdhMmMyYzQ3ZDhk
YWY0M2EuLjI1YTcwYjQyMGM1ZTNkM2IwZmViYmQwMTE5ZDMzMTY1YmIyNzJlYWYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMi0wNi0wNCAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+
CisKKyAgICAgICAgRml4IGFjY2VzcyBiZXlvbmQgYXJyYXkgZW5kIGluIFBhcnNlckFyZW5hOjpt
YWtlSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODc5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qczogQWRkIGEgY291
cGxlIHRlc3RzCisgICAgICAgIHRoYXQgaGl0IHRoZSBtYWtlSWRlbnRpZmllcigpIGFzc2VydGlv
biBpZiB0aGUgTGV4ZXIuY3BwIGZpeGVzCisgICAgICAgIGFyZSBub3QgaW5jbHVkZWQuCisKIDIw
MTItMDYtMDQgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNv
bT4KIAogICAgICAgICBbQ2Fpcm9dIEltcGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4dCBk
b2VzIG5vdCBzYXZlL3Jlc3RvcmUgSW1hZ2VJbnRlcnBvbGF0aW9uIGNvcnJlY3RseQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQK
aW5kZXggM2E0ODlhY2UzNzJhYWQ4ODBmNjVkOTFlZmYyMjUzYTNlNjgxZGM5Yi4uOWU2MmFlZjg2
NTcyZDg0ZTdlZWZjM2UzMjU4YWRkMmIyNTM5NmZiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2pzL3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0CkBAIC01NzgsNiArNTc4
LDEwIEBAIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICh7YTogMSB8fCAxfS5hID0gMSkg
fSIKIFBBU1MgZS5saW5lIGlzIDEKIFBBU1MgZm9vIGlzICdQQVNTJwogUEFTUyBiYXIgaXMgJ1BB
U1MnCitQQVNTIFZhbGlkOiAgICIiIiIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICIi
IH0iCitQQVNTIFZhbGlkOiAgICIvW10vIgorUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsg
L1tdLyB9IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3lu
dGF4LWNoZWNrLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcGFyc2VyLXN5
bnRheC1jaGVjay5qcwppbmRleCBlMmZjYzMwMTk5Zjg2MzAxNDgwOGI2OGE4MzcwYzgwMGU0NDdk
Mjc5Li5hYjdmNWI2M2NhNTkxZDgyYWJjYTcwNmFjNWFlOWE3MzU1YmE3MTMzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpz
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3BhcnNlci1zeW50YXgtY2hl
Y2suanMKQEAgLTM3NSwzICszNzUsNiBAQCB0cnkgewogICAgICBzaG91bGRCZSgiZm9vIiwgIidQ
QVNTJyIpOwogICAgICBzaG91bGRCZSgiYmFyIiwgIidQQVNTJyIpOwogfQorCit2YWxpZCgnIiIn
KTsKK3ZhbGlkKCcvW10vJyk7Cg==
</data>
<flag name="review"
          id="152735"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>