<?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>59656</bug_id>
          
          <creation_ts>2011-04-27 16:40:49 -0700</creation_ts>
          <short_desc>Fix OwnPtr issues in IndexedDB</short_desc>
          <delta_ts>2011-04-28 11:26:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric</cc>
    
    <cc>hans</cc>
    
    <cc>levin</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>393967</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-27 16:40:49 -0700</bug_when>
    <thetext>Fix OwnPtr issues in IndexedDB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393971</commentid>
    <comment_count>1</comment_count>
      <attachid>91378</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-27 16:42:20 -0700</bug_when>
    <thetext>Created attachment 91378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393976</commentid>
    <comment_count>2</comment_count>
      <attachid>91378</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-04-27 16:46:13 -0700</bug_when>
    <thetext>Comment on attachment 91378
Patch

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

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:102
&gt; +    OwnPtr&lt;LevelDBDatabase&gt; result = adoptPtr(new LevelDBDatabase());

Not required (cq+ is ok with me) but might want to remove the ().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393980</commentid>
    <comment_count>3</comment_count>
      <attachid>91378</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 16:47:16 -0700</bug_when>
    <thetext>Comment on attachment 91378
Patch

Yay!  I&apos;m kinda surprised it got landed as it was.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393993</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-27 16:52:05 -0700</bug_when>
    <thetext>In fareness to Steve, I think Darin&apos;s document is due for a refresh: http://www.webkit.org/coding/RefPtr.html.  Some of what seemed &quot;obviously&quot; wrong in the previous commit, it not actually that obvious of patterns of WebCore.  But we do need to be careful to get our memory management (and header includes) correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393994</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-27 16:52:14 -0700</bug_when>
    <thetext>Committed r85122: &lt;http://trac.webkit.org/changeset/85122&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394032</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-27 17:30:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85122 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394136</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-04-27 20:05:47 -0700</bug_when>
    <thetext>This busticated the clang build:

http://build.chromium.org/p/chromium.webkit/builders/Mac%20Clang%20Builder%20%28dbg%29/builds/6490/steps/compile/logs/stdio

In file included from /b/build/slave/Mac_Clang_Builder__dbg_/build/src/third_party/WebKit/Source/WebCore/WebCore.gyp/../platform/leveldb/LevelDBDatabase.cpp:27:
In file included from ../platform/leveldb/LevelDBDatabase.h:31:
../../JavaScriptCore/wtf/OwnPtr.h:57:9: error: function &apos;WTF::OwnPtr&lt;WebCore::&lt;anonymous&gt;::ComparatorAdapter&gt;::OwnPtr&apos; has internal linkage but is not defined [-Werror]
        OwnPtr(const OwnPtr&lt;ValueType&gt;&amp;);
        ^
/b/build/slave/Mac_Clang_Builder__dbg_/build/src/third_party/WebKit/Source/WebCore/WebCore.gyp/../platform/leveldb/LevelDBDatabase.cpp:100:31: note: used here
    OwnPtr&lt;ComparatorAdapter&gt; comparatorAdapter = adoptPtr(new ComparatorAdapter(comparator));
                              ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394230</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-27 22:58:20 -0700</bug_when>
    <thetext>&gt; This busticated the clang build:

I have no idea what that error means.  That line of code is one of the most common patterns in WebKit.  Maybe it&apos;s a compiler bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394267</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-27 23:47:59 -0700</bug_when>
    <thetext>Maciej has a theory for how to fix this error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394268</commentid>
    <comment_count>10</comment_count>
      <attachid>91436</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-27 23:49:56 -0700</bug_when>
    <thetext>Created attachment 91436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394269</commentid>
    <comment_count>11</comment_count>
      <attachid>91436</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-04-27 23:51:36 -0700</bug_when>
    <thetext>Comment on attachment 91436
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394270</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-27 23:53:30 -0700</bug_when>
    <thetext>&gt; r=me

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394272</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-27 23:56:42 -0700</bug_when>
    <thetext>Committed r85169: &lt;http://trac.webkit.org/changeset/85169&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394320</commentid>
    <comment_count>14</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-28 02:59:50 -0700</bug_when>
    <thetext>Thanks for fixing this and apologies for missing the include problems in the original patch.

I wasn&apos;t aware that we should always use (Pass)OwnPtr every time ownership of an object is being transferred. What exactly is the policy? It would be great if the document could be updated for future reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394582</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-28 11:26:29 -0700</bug_when>
    <thetext>&gt; I wasn&apos;t aware that we should always use (Pass)OwnPtr every time ownership of an object is being transferred. What exactly is the policy? It would be great if the document could be updated for future reference.

The policy is that we should try to avoid ever having a &quot;naked new,&quot; which means every call to new should be immediately followed by either adoptRef (for ref-counted objects) or adoptPtr (for objects with a single owner).  Everything else follows from the C++ type system.

Turning on strict mode tightens the type system to better enforce this style.  Once we&apos;ve got that all working, we&apos;ll probably add a check-webkit-style nag about &quot;naked new&quot; so that these problems can be flagged automagically.  (There&apos;s already an ASSERT that enforces this behavior for ref-counted objects.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91378</attachid>
            <date>2011-04-27 16:42:20 -0700</date>
            <delta_ts>2011-04-27 23:49:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59656-20110427164218.patch</filename>
            <type>text/plain</type>
            <size>15453</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTE5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMjcgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggT3duUHRyIGlzc3VlcyBpbiBJbmRleGVkREIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NjU2CisKKyAgICAgICAg
SSBkaWRuJ3QgZG8gYW4gZXhoYXVzdGl2ZSByZXZpZXcgb2YgdGhpcyBjb2RlLCBidXQgSSBmaXhl
ZCB0aGUgcHJvYmxlbXMKKyAgICAgICAgY2F1Z2h0IGJ5IHR1cm5pbmcgb24gc3RyaWN0IE93blB0
ciBhbmQgYWxsIHRoZWlyIGFudGVjZWRlbnRzLiAgVGhpcworICAgICAgICBwYXRjaCBpcyBlbnRp
cmVseSB0aWdodGVyIGJvb2trZWVwaW5nLiAgVGhlcmUgc2hvdWxkbid0IGJlIGFueSBhY3R1YWwK
KyAgICAgICAgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9M
ZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQkRhdGFiYXNlOjpM
ZXZlbERCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQkRhdGFiYXNlOjpvcGVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGV2ZWxEQkl0ZXJhdG9yOjpMZXZlbERCSXRlcmF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2xl
dmVsZGIvTGV2ZWxEQkl0ZXJhdG9yLmg6CisgICAgICAgICogc3RvcmFnZS9JREJMZXZlbERCQmFj
a2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OklEQkxldmVsREJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpnZXROZXdEYXRhYmFzZUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jl
cyk6CisgICAgICAgIChXZWJDb3JlOjpnZXROZXdPYmplY3RTdG9yZUlkKToKKyAgICAgICAgKFdl
YkNvcmU6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5n
U3RvcmU6Om5leHRBdXRvSW5jcmVtZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmZvckVhY2hPYmplY3RTdG9yZVJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldE5ld0luZGV4SWQpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEdyZWF0ZXN0S2V5
TGVzc1RoYW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0
UHJpbWFyeUtleVZpYUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5n
U3RvcmU6OmtleUV4aXN0c0luSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZExhc3RJbmRl
eEtleUVxdWFsVG8pOgorICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5o
OgorCiAyMDExLTA0LTE5ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCShyZXZpc2lvbiA4NTEx
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNiBAQCBwcml2YXRlOgogfQogCiBMZXZlbERC
RGF0YWJhc2U6OkxldmVsREJEYXRhYmFzZSgpCi0gICAgOiBtX2RiKDApCiB7CiB9CiAKQEAgLTk2
LDExICs5NSwxMSBAQCBMZXZlbERCRGF0YWJhc2U6On5MZXZlbERCRGF0YWJhc2UoKQogewogfQog
Ci1MZXZlbERCRGF0YWJhc2UqIExldmVsREJEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogY29tcGFyYXRvcikKK1Bhc3NPd25QdHI8
TGV2ZWxEQkRhdGFiYXNlPiBMZXZlbERCRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IpCiB7Ci0gICAgT3duUHRy
PENvbXBhcmF0b3JBZGFwdGVyPiBjb21wYXJhdG9yQWRhcHRlcihuZXcgQ29tcGFyYXRvckFkYXB0
ZXIoY29tcGFyYXRvcikpOworICAgIE93blB0cjxDb21wYXJhdG9yQWRhcHRlcj4gY29tcGFyYXRv
ckFkYXB0ZXIgPSBhZG9wdFB0cihuZXcgQ29tcGFyYXRvckFkYXB0ZXIoY29tcGFyYXRvcikpOwog
Ci0gICAgTGV2ZWxEQkRhdGFiYXNlKiByZXN1bHQgPSBuZXcgTGV2ZWxEQkRhdGFiYXNlKCk7Cisg
ICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gcmVzdWx0ID0gYWRvcHRQdHIobmV3IExldmVsREJE
YXRhYmFzZSgpKTsKIAogICAgIGxldmVsZGI6Ok9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25z
LmNvbXBhcmF0b3IgPSBjb21wYXJhdG9yQWRhcHRlci5nZXQoKTsKQEAgLTEwOCwxNSArMTA3LDEz
IEBAIExldmVsREJEYXRhYmFzZSogTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKGMKICAgICBsZXZlbGRi
OjpEQiogZGI7CiAgICAgbGV2ZWxkYjo6U3RhdHVzIHMgPSBsZXZlbGRiOjpEQjo6T3BlbihvcHRp
b25zLCBmaWxlTmFtZS51dGY4KCkuZGF0YSgpLCAmZGIpOwogCi0gICAgaWYgKCFzLm9rKCkpIHsK
LSAgICAgICAgZGVsZXRlIHJlc3VsdDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGlm
ICghcy5vaygpKQorICAgICAgICByZXR1cm4gUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+KCk7
CiAKLSAgICByZXN1bHQtPm1fZGIgPSBXVEY6OmFkb3B0UHRyKGRiKTsKKyAgICByZXN1bHQtPm1f
ZGIgPSBhZG9wdFB0cihkYik7CiAgICAgcmVzdWx0LT5tX2NvbXBhcmF0b3JBZGFwdGVyID0gY29t
cGFyYXRvckFkYXB0ZXIucmVsZWFzZSgpOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAogCkBAIC0xNDYsMTQgKzE0MywxNCBAQCBib29sIExl
dmVsREJEYXRhYmFzZTo6Z2V0KGNvbnN0IExldmVsREJTCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LUxldmVsREJJdGVyYXRvciogTGV2ZWxEQkRhdGFiYXNlOjpuZXdJdGVyYXRvcigpCitQYXNzT3du
UHRyPExldmVsREJJdGVyYXRvcj4gTGV2ZWxEQkRhdGFiYXNlOjpjcmVhdGVJdGVyYXRvcigpCiB7
Ci0gICAgbGV2ZWxkYjo6SXRlcmF0b3IqIGkgPSBtX2RiLT5OZXdJdGVyYXRvcihsZXZlbGRiOjpS
ZWFkT3B0aW9ucygpKTsKKyAgICBPd25QdHI8bGV2ZWxkYjo6SXRlcmF0b3I+IGkgPSBhZG9wdFB0
cihtX2RiLT5OZXdJdGVyYXRvcihsZXZlbGRiOjpSZWFkT3B0aW9ucygpKSk7CiAgICAgaWYgKCFp
KSAvLyBGSVhNRTogRG91YmxlIGNoZWNrIGlmIHdlIGFjdHVhbGx5IG5lZWQgdG8gY2hlY2sgdGhp
cy4KICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5ldyBMZXZlbERCSXRlcmF0b3IoaSk7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMZXZlbERCSXRlcmF0b3IoaS5yZWxlYXNlKCkpKTsK
IH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfQogCi0jZW5kaWYgLy8gRU5BQkxFKExFVkVM
REIpCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QkRhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxk
Yi9MZXZlbERCRGF0YWJhc2UuaAkocmV2aXNpb24gODUxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5
ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKExFVkVMREIpCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgotI2luY2x1ZGUgPE93blB0ci5oPgotI2luY2x1ZGUgPFZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIGxldmVsZGIgewogY2xhc3MgQ29tcGFyYXRvcjsKQEAgLTQ1LDEzICs0NiwxMyBAQCBjbGFz
cyBMZXZlbERCU2xpY2U7CiAKIGNsYXNzIExldmVsREJEYXRhYmFzZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIExldmVsREJEYXRhYmFzZSogb3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBMZXZlbERCQ29tcGFyYXRvciopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExldmVsREJEYXRh
YmFzZT4gb3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRv
ciopOwogICAgIH5MZXZlbERCRGF0YWJhc2UoKTsKIAogICAgIGJvb2wgcHV0KGNvbnN0IExldmVs
REJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKICAgICBib29sIHJlbW92
ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSk7CiAgICAgYm9vbCBnZXQoY29uc3QgTGV2ZWxEQlNs
aWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpOwotICAgIExldmVsREJJdGVyYXRvciogbmV3
SXRlcmF0b3IoKTsKKyAgICBQYXNzT3duUHRyPExldmVsREJJdGVyYXRvcj4gY3JlYXRlSXRlcmF0
b3IoKTsKIAogcHJpdmF0ZToKICAgICBMZXZlbERCRGF0YWJhc2UoKTsKQEAgLTYwLDcgKzYxLDcg
QEAgcHJpdmF0ZToKICAgICBPd25QdHI8bGV2ZWxkYjo6Q29tcGFyYXRvcj4gbV9jb21wYXJhdG9y
QWRhcHRlcjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30KIAotI2VuZGlmIC8vIEVO
QUJMRShMRVZFTERCKQotI2VuZGlmIC8vIExldmVsREJEYXRhYmFzZV9oCisjZW5kaWYKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCSXRlcmF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
Qkl0ZXJhdG9yLmNwcAkocmV2aXNpb24gODUxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgPGxldmVsZGIvaXRlcmF0b3IuaD4KICNpbmNsdWRlIDxsZXZlbGRi
L3NsaWNlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM5LDcg
KzQwLDcgQEAgTGV2ZWxEQkl0ZXJhdG9yOjp+TGV2ZWxEQkl0ZXJhdG9yKCkKIHsKIH0KIAotTGV2
ZWxEQkl0ZXJhdG9yOjpMZXZlbERCSXRlcmF0b3IobGV2ZWxkYjo6SXRlcmF0b3IqIGl0KQorTGV2
ZWxEQkl0ZXJhdG9yOjpMZXZlbERCSXRlcmF0b3IoUGFzc093blB0cjxsZXZlbGRiOjpJdGVyYXRv
cj4gaXQpCiAgICAgOiBtX2l0ZXJhdG9yKGl0KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJJdGVyYXRvci5oCShyZXZpc2lvbiA4NTEx
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkl0ZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIExldmVsREJTbGlj
ZSB2YWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIExldmVsREJJdGVyYXRvcihsZXZlbGRi
OjpJdGVyYXRvciopOworICAgIExldmVsREJJdGVyYXRvcihQYXNzT3duUHRyPGxldmVsZGI6Okl0
ZXJhdG9yPik7CiAgICAgZnJpZW5kIGNsYXNzIExldmVsREJEYXRhYmFzZTsKIAogICAgIE93blB0
cjxsZXZlbGRiOjpJdGVyYXRvcj4gbV9pdGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAkocmV2aXNpb24gODUxMTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGJvb2wgc2V0VXBNZXRhZGF0
YShMZXZlbERCRGF0YWJhcwogICAgIHJldHVybiB0cnVlOwogfQogCi1JREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlKFN0cmluZyBpZGVudGlmaWVyLCBJREJGYWN0
b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIExldmVsREJEYXRhYmFzZSogZGIpCitJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlKFN0cmluZyBpZGVudGlmaWVyLCBJ
REJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNl
PiBkYikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZh
Y3RvcnkpCiAgICAgLCBtX2RiKGRiKQpAQCAtMTM0LDI4ICsxMzQsMjggQEAgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IElEQkxldmVsREJCYQogCiAgICAgaWYgKHBhdGhCYXNlLmlzRW1wdHko
KSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gRklYTUU6IFdlIG5lZWQgdG8g
aGFuZGxlIHRoaXMgY2FzZSBmb3IgaW5jb2duaXRvIGFuZCBEdW1wUmVuZGVyVHJlZS4KLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4o
KTsKICAgICB9CiAKICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhwYXRoQmFzZSkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIEluZGV4ZWREQiBkYXRhYmFzZSBwYXRo
ICVzIiwgcGF0aEJhc2UudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+KCk7CiAgICAgfQogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZXZlbnR1YWxseSB1c2UgdGhlIHNhbWUgTGV2ZWxEQiBkYXRhYmFzZSBm
b3IgYWxsIG9yaWdpbnMuCiAgICAgU3RyaW5nIHBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGF0aEJhc2UsIHNlY3VyaXR5T3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSArICIuaW5k
ZXhlZGRiLmxldmVsZGIiKTsKIAotICAgIE93blB0cjxMZXZlbERCQ29tcGFyYXRvcj4gY29tcGFy
YXRvcihuZXcgQ29tcGFyYXRvcigpKTsKLSAgICBMZXZlbERCRGF0YWJhc2UqIGRiID0gTGV2ZWxE
QkRhdGFiYXNlOjpvcGVuKHBhdGgsIGNvbXBhcmF0b3IuZ2V0KCkpOworICAgIE93blB0cjxMZXZl
bERCQ29tcGFyYXRvcj4gY29tcGFyYXRvciA9IGFkb3B0UHRyKG5ldyBDb21wYXJhdG9yKCkpOwor
ICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBh
dGgsIGNvbXBhcmF0b3IuZ2V0KCkpOwogICAgIGlmICghZGIpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+KCk7CiAKICAgICAvLyBG
SVhNRTogSGFuZGxlIGNvbXBhcmF0b3IgbmFtZSBjaGFuZ2VzLgogCi0gICAgUmVmUHRyPElEQkxl
dmVsREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJlZihuZXcgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwgZmFjdG9yeSwgZGIpKSk7CisgICAgUmVmUHRyPElE
QkxldmVsREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShhZG9wdFJlZihuZXcgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZShmaWxlSWRlbnRpZmllciwgZmFjdG9yeSwgZGIucmVsZWFzZSgpKSkpOwog
ICAgIGJhY2tpbmdTdG9yZS0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvci5yZWxlYXNlKCk7CiAK
ICAgICBpZiAoIXNldFVwTWV0YWRhdGEoYmFja2luZ1N0b3JlLT5tX2RiLmdldCgpKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4o
KTsKIAogICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFzZSgpOwogfQpAQCAtMTgwLDcgKzE4
MCw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld0RhdGFiYXNlSWQoTGV2ZWxEQkQKICAgICBjb25z
dCBWZWN0b3I8Y2hhcj4gZnJlZUxpc3RTdGFydEtleSA9IERhdGFiYXNlRnJlZUxpc3RLZXk6OmVu
Y29kZSgwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gZnJlZUxpc3RTdG9wS2V5ID0gRGF0YWJh
c2VGcmVlTGlzdEtleTo6ZW5jb2RlKElOVDY0X01BWCk7CiAKLSAgICBPd25QdHI8TGV2ZWxEQkl0
ZXJhdG9yPiBpdChkYi0+bmV3SXRlcmF0b3IoKSk7CisgICAgT3duUHRyPExldmVsREJJdGVyYXRv
cj4gaXQgPSBkYi0+Y3JlYXRlSXRlcmF0b3IoKTsKICAgICBmb3IgKGl0LT5zZWVrKGZyZWVMaXN0
U3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgZnJlZUxp
c3RTdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpIHsKICAgICAgICAgY29uc3QgY2hhciAqcCA9IGl0
LT5rZXkoKS5iZWdpbigpOwogICAgICAgICBjb25zdCBjaGFyICpsaW1pdCA9IGl0LT5rZXkoKS5l
bmQoKTsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dE9iamVjdFN0CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gT2JqZWN0U3RvcmVN
ZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIDEsIDApOwogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBzdG9wS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IElOVDY0X01BWCwgMCk7CiAKLSAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdChtX2RiLT5u
ZXdJdGVyYXRvcigpKTsKKyAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IG1fZGItPmNy
ZWF0ZUl0ZXJhdG9yKCk7CiAgICAgZm9yIChpdC0+c2VlayhzdGFydEtleSk7IGl0LT5pc1ZhbGlk
KCkgJiYgY29tcGFyZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpIHsK
ICAgICAgICAgY29uc3QgY2hhciAqcCA9IGl0LT5rZXkoKS5iZWdpbigpOwogICAgICAgICBjb25z
dCBjaGFyICpsaW1pdCA9IGl0LT5rZXkoKS5lbmQoKTsKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0
aWMgaW50NjRfdCBnZXROZXdPYmplY3RTdG9yZUlkKExldmVsCiAgICAgY29uc3QgVmVjdG9yPGNo
YXI+IGZyZWVMaXN0U3RhcnRLZXkgPSBPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgMCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGZyZWVMaXN0U3RvcEtleSA9IE9i
amVjdFN0b3JlRnJlZUxpc3RLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBJTlQ2NF9NQVgpOwogCi0g
ICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQoZGItPm5ld0l0ZXJhdG9yKCkpOworICAgIE93
blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgZm9y
IChpdC0+c2VlayhmcmVlTGlzdFN0YXJ0S2V5KTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5
cyhpdC0+a2V5KCksIGZyZWVMaXN0U3RvcEtleSkgPCAwOyBpdC0+bmV4dCgpKSB7CiAgICAgICAg
IGNvbnN0IGNoYXIqIHAgPSBpdC0+a2V5KCkuYmVnaW4oKTsKICAgICAgICAgY29uc3QgY2hhciog
bGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7CkBAIC0zNzksNyArMzc5LDcgQEAgYm9vbCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplYwogc3RhdGljIGJvb2wgZGVsZXRlUmFuZ2UoTGV2
ZWxEQkRhdGFiYXNlKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBiZWdpbiwgY29uc3QgVmVjdG9y
PGNoYXI+JiBlbmQpCiB7CiAgICAgLy8gRklYTUU6IExldmVsREIgbWF5IGJlIGFibGUgdG8gcHJv
dmlkZSBhIGJ1bGsgb3BlcmF0aW9uIHRoYXQgd2UgY2FuIGRvIGZpcnN0LgotICAgIE93blB0cjxM
ZXZlbERCSXRlcmF0b3I+IGl0KGRiLT5uZXdJdGVyYXRvcigpKTsKKyAgICBPd25QdHI8TGV2ZWxE
Qkl0ZXJhdG9yPiBpdCA9IGRiLT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGZvciAoaXQtPnNlZWso
YmVnaW4pOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgZW5kKSA8IDA7
IGl0LT5uZXh0KCkpIHsKICAgICAgICAgaWYgKCFkYi0+cmVtb3ZlKGl0LT5rZXkoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MTEsNyArNTExLDcgQEAgZG91YmxlIElEQkxldmVs
REJCYWNraW5nU3RvcmU6Om5leHRBdXRvSQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtl
eSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IG1pbklEQktleSgpKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IE9iamVjdFN0
b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIG1heElEQktleSgp
KTsKIAotICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0KG1fZGItPm5ld0l0ZXJhdG9yKCkp
OworICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3Io
KTsKIAogICAgIGludCBtYXhOdW1lcmljS2V5ID0gMDsKIApAQCAtNTU4LDcgKzU1OCw3IEBAIGJv
b2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Zm9yRWFjaE9iamUKICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gc3RhcnRLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBtaW5JREJLZXkoKSk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BL
ZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBtYXhJREJLZXkoKSk7CiAKLSAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdChtX2RiLT5u
ZXdJdGVyYXRvcigpKTsKKyAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IG1fZGItPmNy
ZWF0ZUl0ZXJhdG9yKCk7CiAgICAgZm9yIChpdC0+c2VlayhzdGFydEtleSk7IGl0LT5pc1ZhbGlk
KCkgJiYgY29tcGFyZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpIHsK
ICAgICAgICAgY29uc3QgY2hhciAqcCA9IGl0LT5rZXkoKS5iZWdpbigpOwogICAgICAgICBjb25z
dCBjaGFyICpsaW1pdCA9IGl0LT5rZXkoKS5lbmQoKTsKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lk
IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoCiAgICAgY29uc3QgVmVjdG9yPGNo
YXI+IHN0YXJ0S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIDAsIDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gSW5kZXhN
ZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQgKyAxLCAwLCAwKTsK
IAotICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0KG1fZGItPm5ld0l0ZXJhdG9yKCkpOwor
ICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsK
ICAgICBmb3IgKGl0LT5zZWVrKHN0YXJ0S2V5KTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5
cyhpdC0+a2V5KCksIHN0b3BLZXkpIDwgMDsgaXQtPm5leHQoKSkgewogICAgICAgICBjb25zdCBj
aGFyKiBwID0gaXQtPmtleSgpLmJlZ2luKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGxpbWl0ID0g
aXQtPmtleSgpLmVuZCgpOwpAQCAtNjI3LDcgKzYyNyw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5l
d0luZGV4SWQoTGV2ZWxEQkRhdGEKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBJ
bmRleEZyZWVMaXN0S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCk7CiAg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBJbmRleEZyZWVMaXN0S2V5OjplbmNvZGUo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgSU5UNjRfTUFYKTsKIAotICAgIE93blB0cjxMZXZl
bERCSXRlcmF0b3I+IGl0KGRiLT5uZXdJdGVyYXRvcigpKTsKKyAgICBPd25QdHI8TGV2ZWxEQkl0
ZXJhdG9yPiBpdCA9IGRiLT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGZvciAoaXQtPnNlZWsoc3Rh
cnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkg
PCAwOyBpdC0+bmV4dCgpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBpdC0+a2V5KCkuYmVn
aW4oKTsKICAgICAgICAgY29uc3QgY2hhciogbGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7CkBAIC03
MTAsNyArNzEwLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdAog
CiBzdGF0aWMgYm9vbCBmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbihMZXZlbERCRGF0YWJhc2UqIGRi
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHRhcmdldCwgVmVjdG9yPGNoYXI+JiBmb3VuZEtleSkKIHsK
LSAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdChkYi0+bmV3SXRlcmF0b3IoKSk7CisgICAg
T3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBkYi0+Y3JlYXRlSXRlcmF0b3IoKTsKICAgICBp
dC0+c2Vlayh0YXJnZXQpOwogCiAgICAgaWYgKCFpdC0+aXNWYWxpZCgpKSB7CkBAIC03NTksNyAr
NzU5LDcgQEAgc3RhdGljIGJvb2wgdmVyc2lvbkV4aXN0cyhMZXZlbERCRGF0YWJhcwogUGFzc1Jl
ZlB0cjxJREJLZXk+IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldFByaW1hcnlLZXlWaWFJbmRl
eChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXkmIGtleSkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxk
YktleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsIGtleSwgMCk7Ci0gICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQobV9kYi0+bmV3
SXRlcmF0b3IoKSk7CisgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVh
dGVJdGVyYXRvcigpOwogICAgIGl0LT5zZWVrKGxldmVsZGJLZXkpOwogCiAgICAgZm9yICg7Oykg
ewpAQCAtNzkxLDcgKzc5MSw3IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBJREJMZXZlbERCQmFja2lu
Z1N0b3IKIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5JbmRleChpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBJREJLZXkmIGtleSkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxEQktleSA9
IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQs
IGtleSwgMCk7Ci0gICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQobV9kYi0+bmV3SXRlcmF0
b3IoKSk7CisgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVy
YXRvcigpOwogCiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogCkBAIC04NDAsNyArODQwLDcgQEAg
cHJvdGVjdGVkOgogCiBib29sIEN1cnNvckltcGxDb21tb246OmZpcnN0U2VlaygpCiB7Ci0gICAg
bV9pdGVyYXRvciA9IG1fZGItPm5ld0l0ZXJhdG9yKCk7CisgICAgbV9pdGVyYXRvciA9IG1fZGIt
PmNyZWF0ZUl0ZXJhdG9yKCk7CiAKICAgICBpZiAobV9mb3J3YXJkKQogICAgICAgICBtX2l0ZXJh
dG9yLT5zZWVrKG1fbG93S2V5KTsKQEAgLTExMTcsNyArMTExNyw3IEBAIGJvb2wgSW5kZXhDdXJz
b3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAKIHN0YXRpYyBib29sIGZpbmRMYXN0SW5kZXhLZXlF
cXVhbFRvKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgdGFyZ2V0LCBW
ZWN0b3I8Y2hhcj4mIGZvdW5kS2V5KQogewotICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0
KGRiLT5uZXdJdGVyYXRvcigpKTsKKyAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IGRi
LT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGl0LT5zZWVrKHRhcmdldCk7CiAKICAgICBpZiAoIWl0
LT5pc1ZhbGlkKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuaAkocmV2aXNpb24gODUxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRyYW5zYWN0aW9uPiBjcmVhdGVU
cmFuc2FjdGlvbigpOwogCiBwcml2YXRlOgotICAgIElEQkxldmVsREJCYWNraW5nU3RvcmUoU3Ry
aW5nIGlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCosIExldmVsREJEYXRhYmFzZSop
OworICAgIElEQkxldmVsREJCYWNraW5nU3RvcmUoU3RyaW5nIGlkZW50aWZpZXIsIElEQkZhY3Rv
cnlCYWNrZW5kSW1wbCosIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPik7CiAKICAgICBTdHJp
bmcgbV9pZGVudGlmaWVyOwogICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEltcGw+IG1fZmFj
dG9yeTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91436</attachid>
            <date>2011-04-27 23:49:56 -0700</date>
            <delta_ts>2011-04-27 23:51:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59656-20110427234954.patch</filename>
            <type>text/plain</type>
            <size>1424</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MTY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQtMjcgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggT3duUHRyIGlzc3VlcyBpbiBJbmRleGVkREIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NjU2CisKKyAgICAgICAg
VGhpcyBwYXRjaCBpcyBhbiBhdHRlbXB0IHRvIGZpeCB0aGUgY2xhbmcgYnVpbGQuICBDbGFuZyBj
YW4ndCBzZWVtIHRvCisgICAgICAgIGNvcGUgd2l0aCBPd25QdHJzIHRvIGNsYXNzZXMgZGVjbGFy
ZWQgaW4gYW4gYW5vbnltb3VzIG5hbWVzcGFjZSBiZWNhdXNlCisgICAgICAgIE93blB0cidzIGNv
cHkgY29uc3RydWN0b3IgaXNuJ3QgZGVmaW5lZCAoYnV0IHdvdWxkIG5lZWQgdG8gYmUgZGVmaW5l
ZAorICAgICAgICBpbiB0aGlzIHRyYW5zbGF0aW9uIHVuaXQpLgorCisgICAgICAgICogcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorCiAyMDExLTA0LTI3ICBSeXVhbiBDaG9p
ICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlv
IEdvbWVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0
YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIv
TGV2ZWxEQkRhdGFiYXNlLmNwcAkocmV2aXNpb24gODUxNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDcgKzYzLDYgQEAgc3RhdGljIFZlY3RvcjxjaGFyPiBtYWtlVmVjdG9yKGNvbnN0IHN0ZAogICAg
IHJldHVybiByZXM7CiB9CiAKLW5hbWVzcGFjZSB7CiBjbGFzcyBDb21wYXJhdG9yQWRhcHRlciA6
IHB1YmxpYyBsZXZlbGRiOjpDb21wYXJhdG9yIHsKIHB1YmxpYzoKICAgICBDb21wYXJhdG9yQWRh
cHRlcihjb25zdCBMZXZlbERCQ29tcGFyYXRvciogY29tcGFyYXRvcikKQEAgLTg1LDcgKzg0LDYg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogbV9jb21w
YXJhdG9yOwogfTsKLX0KIAogTGV2ZWxEQkRhdGFiYXNlOjpMZXZlbERCRGF0YWJhc2UoKQogewo=
</data>
<flag name="review"
          id="84286"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>