<?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>103960</bug_id>
          
          <creation_ts>2012-12-03 19:14:59 -0800</creation_ts>
          <short_desc>IndexedDB: Abort transactions because of leveldb errors part 3</short_desc>
          <delta_ts>2012-12-05 16:09:53 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103782</dependson>
          <blocked>103964</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>782131</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-03 19:14:59 -0800</bug_when>
    <thetext>IndexedDB: Abort transactions because of leveldb errors part 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782134</commentid>
    <comment_count>1</comment_count>
      <attachid>177395</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-03 19:18:02 -0800</bug_when>
    <thetext>Created attachment 177395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783113</commentid>
    <comment_count>2</comment_count>
      <attachid>177606</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 16:52:46 -0800</bug_when>
    <thetext>Created attachment 177606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783114</commentid>
    <comment_count>3</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 16:53:34 -0800</bug_when>
    <thetext>Josh or Alec, could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783151</commentid>
    <comment_count>4</comment_count>
      <attachid>177606</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 17:26:48 -0800</bug_when>
    <thetext>Comment on attachment 177606
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:252
&gt; +        int64_t databaseId, int64_t objectStoreId, int64_t indexId, bool&amp; canAddKeys,

Just remove wrapping?

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:253
&gt; +        const IDBKey* primaryKey = 0, String* errorMessage = 0)

Add WARN_UNUSED_RETURN

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:282
&gt; +        int64_t databaseId, int64_t objectStoreId, int64_t indexId,

Just remove wrapping?

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:283
&gt; +        const IDBKey* indexKey, const IDBKey* primaryKey, bool&amp; allowed) const

Add WARN_UNUSED_RETURN

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:306
&gt; +static bool makeIndexWriters(PassRefPtr&lt;IDBTransactionBackendImpl&gt; transaction, IDBObjectStoreBackendImpl* objectStore, PassRefPtr&lt;IDBKey&gt; primaryKey, bool keyWasGenerated, const Vector&lt;int64_t&gt;&amp; indexIds, const Vector&lt;IDBObjectStoreBackendInterface::IndexKeys&gt;&amp; indexKeys, Vector&lt;OwnPtr&lt;IndexWriter&gt; &gt;* indexWriters, String* errorMessage, bool&amp; completed)

Add WARN_UNUSED_RETURN

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:329
&gt; +        bool noLevelDBErrors = indexWriter-&gt;verifyIndexKeys(*objectStore-&gt;backingStore(),

I&apos;d avoid using the &quot;leveldb&quot; name here. um... backingStoreSuccess ?

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:330
&gt; +            transaction-&gt;backingStoreTransaction(), objectStore-&gt;databaseId(),

Just remove wrapping?

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:368
&gt; +    bool completed = false;

Maybe rename to consistencySuccess ? Or something that&apos;s more clearly the inverse of constraintError ?

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:371
&gt; +        transaction-&gt;abort(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error in makeIndexWriters&quot;));

I wouldn&apos;t name the internal method explicitly here, just as it&apos;s one more thing to keep in sync. Maybe &quot;Backing store error updating index keys.&quot; ?

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:448
&gt; +    bool completed = false;

Rename to constraintError?

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:449
&gt; +    bool noLevelDBErrors = makeIndexWriters(transaction, objectStore.get(), key, keyWasGenerated, *indexIds, *indexKeys, &amp;indexWriters, &amp;errorMessage, completed);

Ditto re: &quot;leveldb&quot;

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:451
&gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error in makeIndexWriters.&quot;));

Same as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783258</commentid>
    <comment_count>5</comment_count>
      <attachid>177606</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 19:20:37 -0800</bug_when>
    <thetext>Comment on attachment 177606
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:252
&gt;&gt; +        int64_t databaseId, int64_t objectStoreId, int64_t indexId, bool&amp; canAddKeys,
&gt; 
&gt; Just remove wrapping?

check-webkit-style complained about the number of spaces. Do you know how to appease it?

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:253
&gt;&gt; +        const IDBKey* primaryKey = 0, String* errorMessage = 0)
&gt; 
&gt; Add WARN_UNUSED_RETURN

Done

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:283
&gt;&gt; +        const IDBKey* indexKey, const IDBKey* primaryKey, bool&amp; allowed) const
&gt; 
&gt; Add WARN_UNUSED_RETURN

Done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:306
&gt;&gt; +static bool makeIndexWriters(PassRefPtr&lt;IDBTransactionBackendImpl&gt; transaction, IDBObjectStoreBackendImpl* objectStore, PassRefPtr&lt;IDBKey&gt; primaryKey, bool keyWasGenerated, const Vector&lt;int64_t&gt;&amp; indexIds, const Vector&lt;IDBObjectStoreBackendInterface::IndexKeys&gt;&amp; indexKeys, Vector&lt;OwnPtr&lt;IndexWriter&gt; &gt;* indexWriters, String* errorMessage, bool&amp; completed)
&gt; 
&gt; Add WARN_UNUSED_RETURN

Done. Apparently it needs to go before the function here, maybe because of the static?

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:329
&gt;&gt; +        bool noLevelDBErrors = indexWriter-&gt;verifyIndexKeys(*objectStore-&gt;backingStore(),
&gt; 
&gt; I&apos;d avoid using the &quot;leveldb&quot; name here. um... backingStoreSuccess ?

Better, changed.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:368
&gt;&gt; +    bool completed = false;
&gt; 
&gt; Maybe rename to consistencySuccess ? Or something that&apos;s more clearly the inverse of constraintError ?

I went with obeysConstraints

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:371
&gt;&gt; +        transaction-&gt;abort(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error in makeIndexWriters&quot;));
&gt; 
&gt; I wouldn&apos;t name the internal method explicitly here, just as it&apos;s one more thing to keep in sync. Maybe &quot;Backing store error updating index keys.&quot; ?

Done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:448
&gt;&gt; +    bool completed = false;
&gt; 
&gt; Rename to constraintError?

went with obeysConstraints

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:449
&gt;&gt; +    bool noLevelDBErrors = makeIndexWriters(transaction, objectStore.get(), key, keyWasGenerated, *indexIds, *indexKeys, &amp;indexWriters, &amp;errorMessage, completed);
&gt; 
&gt; Ditto re: &quot;leveldb&quot;

done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:451
&gt;&gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error in makeIndexWriters.&quot;));
&gt; 
&gt; Same as above.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783260</commentid>
    <comment_count>6</comment_count>
      <attachid>177651</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 19:22:04 -0800</bug_when>
    <thetext>Created attachment 177651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783907</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 10:56:31 -0800</bug_when>
    <thetext>Josh, I&apos;m assuming the lack of lgtm means you want to review this again before I send it off to Tony. (Is that a generally accurate interpretation?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783916</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 11:04:46 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Josh, I&apos;m assuming the lack of lgtm means you want to review this again before I send it off to Tony. (Is that a generally accurate interpretation?)

Generally yeah but I just forgot. LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783917</commentid>
    <comment_count>9</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 11:05:44 -0800</bug_when>
    <thetext>Tony, could you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784018</commentid>
    <comment_count>10</comment_count>
      <attachid>177651</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 12:51:06 -0800</bug_when>
    <thetext>Comment on attachment 177651
Patch

Rejecting attachment 177651 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
set 108 lines).
Hunk #2 succeeded at 387 (offset 108 lines).
Hunk #3 succeeded at 411 (offset 108 lines).
Hunk #4 succeeded at 433 (offset 108 lines).
Hunk #5 succeeded at 473 (offset 108 lines).
Hunk #6 FAILED at 445.
1 out of 6 hunks FAILED -- saving rejects to file Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Tony Chang&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/15173025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784202</commentid>
    <comment_count>11</comment_count>
      <attachid>177849</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 15:41:58 -0800</bug_when>
    <thetext>Created attachment 177849
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784230</commentid>
    <comment_count>12</comment_count>
      <attachid>177849</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 16:09:50 -0800</bug_when>
    <thetext>Comment on attachment 177849
Patch for landing

Clearing flags on attachment: 177849

Committed r136775: &lt;http://trac.webkit.org/changeset/136775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784231</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 16:09:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177395</attachid>
            <date>2012-12-03 19:18:02 -0800</date>
            <delta_ts>2012-12-04 16:52:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103960-20121203191528.patch</filename>
            <type>text/plain</type>
            <size>8024</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTVkN2U3ZDRmMzg2ODRk
ZDIzZDFiZGMwM2FjYzY2M2FlN2NhZTljYS4uY2QxNzA1ZDAwZjMyNTU2NGJjZGJiNzBhMWIxYzJj
NDc0MTk4ZDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTAzICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgMworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBwcm9w
YWdhdGVzIGxldmVsZGIgZXJyb3JzIGVuY291bnRlcmVkIHdoZW4gY3JlYXRpbmcgaW5kZXhlcwor
ICAgICAgICBvbiBhbiBvYmplY3Qgc3RvcmUgd2l0aCBleGlzdGluZyBkYXRhIG9yIHdoZW4gYWRk
aW5nIGRhdGEgdG8gYW4KKyAgICAgICAgb2JqZWN0c3RvcmUgdGhhdCBoYXMgaW5kZXhlcy4KKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlSW5kZXhXcml0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4
S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmpl
Y3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OnBlcmZvcm0pOgorCiAyMDEyLTExLTMwICBEYXZpZCBH
cm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFByb3Bh
Z2F0ZSBtb3JlIGxldmVsZGIgZXJyb3JzIHRvIElEQkluZGV4IGFuZCBJREJPYmplY3RTdG9yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA5ZjYxMWNiMDFiZDkzNDU0OGM4M2JkMTZj
OTZiOTBlNGRiODdmMDNhLi40Y2RjYTM0MWNhOTNkYjE0ZTFhZjQ3ZTc4ZmRlMDg0Njk5YmVhZDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMjQ5LDE4ICsyNDksMjIgQEAgcHVi
bGljOgogICAgIHsgfQogCiAgICAgYm9vbCB2ZXJpZnlJbmRleEtleXMoSURCQmFja2luZ1N0b3Jl
JiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSURCS2V5KiBwcmltYXJ5S2V5ID0gMCwgU3RyaW5nKiBlcnJvck1lc3NhZ2UgPSAwKQor
ICAgICAgICBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBib29sJiBjYW5BZGRLZXlzLAorICAgICAgICBjb25zdCBJREJLZXkqIHByaW1h
cnlLZXkgPSAwLCBTdHJpbmcqIGVycm9yTWVzc2FnZSA9IDApCiAgICAgeworICAgICAgICBjYW5B
ZGRLZXlzID0gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmRleEtl
eXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghYWRkaW5nS2V5QWxsb3dlZChiYWNr
aW5nU3RvcmUsIHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtX2luZGV4S2V5cylbaV0uZ2V0
KCksIHByaW1hcnlLZXkpKSB7CisgICAgICAgICAgICBib29sIG9rID0gYWRkaW5nS2V5QWxsb3dl
ZChiYWNraW5nU3RvcmUsIHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCAobV9pbmRleEtleXMpW2ldLmdldCgpLCBwcmltYXJ5S2V5LCBjYW5BZGRLZXlzKTsK
KyAgICAgICAgICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKCFjYW5BZGRLZXlzKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yTWVz
c2FnZSkKICAgICAgICAgICAgICAgICAgICAgKmVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0
KCJVbmFibGUgdG8gYWRkIGtleSB0byBpbmRleCAnJXMnOiBhdCBsZWFzdCBvbmUga2V5IGRvZXMg
bm90IHNhdGlzZnkgdGhlIHVuaXF1ZW5lc3MgcmVxdWlyZW1lbnRzLiIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4TWV0YWRhdGEubmFt
ZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAg
Y2FuQWRkS2V5cyA9IHRydWU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjc1
LDIyICsyNzksMjMgQEAgcHVibGljOgogcHJpdmF0ZToKIAogICAgIGJvb2wgYWRkaW5nS2V5QWxs
b3dlZChJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElEQktleSogaW5kZXhLZXksIGNvbnN0IElEQktl
eSogcHJpbWFyeUtleSkgY29uc3QKKyAgICAgICAgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwKKyAgICAgICAgY29uc3QgSURCS2V5KiBp
bmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5LCBib29sJiBhbGxvd2VkKSBjb25zdAog
ICAgIHsKLSAgICAgICAgaWYgKCFtX2luZGV4TWV0YWRhdGEudW5pcXVlKQorICAgICAgICBhbGxv
d2VkID0gZmFsc2U7CisgICAgICAgIGlmICghbV9pbmRleE1ldGFkYXRhLnVuaXF1ZSkgeworICAg
ICAgICAgICAgYWxsb3dlZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQogCiAgICAgICAgIFJlZlB0cjxJREJLZXk+IGZvdW5kUHJpbWFyeUtleTsKICAgICAgICAg
Ym9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICBib29sIG9rID0gYmFja2luZ1N0b3JlLmtleUV4
aXN0c0luSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4
SWQsICppbmRleEtleSwgZm91bmRQcmltYXJ5S2V5LCBmb3VuZCk7Ci0gICAgICAgIC8vIEZJWE1F
OiBQcm9wYWdhdGUgdGhpcyBlcnJvciB1cCB0byBzY3JpcHQuCi0gICAgICAgIEFTU0VSVF9VTlVT
RUQob2ssIG9rKTsKLSAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBpZiAocHJpbWFyeUtleSAmJiBmb3VuZFByaW1hcnlLZXktPmlzRXF1YWwocHJp
bWFyeUtleSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAoIWZvdW5kIHx8IChwcmltYXJ5S2V5ICYmIGZvdW5kUHJpbWFyeUtleS0+aXNFcXVhbChwcmlt
YXJ5S2V5KSkpCisgICAgICAgICAgICBhbGxvd2VkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCiAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSBtX2luZGV4TWV0YWRhdGE7
CkBAIC0yOTgsOSArMzAzLDEwIEBAIHByaXZhdGU6CiB9OwogfQogCi1zdGF0aWMgYm9vbCBtYWtl
SW5kZXhXcml0ZXJzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNh
Y3Rpb24sIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlLCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSwgYm9vbCBrZXlXYXNHZW5lcmF0ZWQsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U6OkluZGV4S2V5cz4mIGluZGV4S2V5cywgVmVjdG9yPE93blB0cjxJbmRleFdyaXRlcj4g
PiogaW5kZXhXcml0ZXJzLCBTdHJpbmcqIGVycm9yTWVzc2FnZSkKK3N0YXRpYyBib29sIG1ha2VJ
bmRleFdyaXRlcnMoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2Fj
dGlvbiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5LCBib29sIGtleVdhc0dlbmVyYXRlZCwgY29uc3QgVmVjdG9yPGlu
dDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZTo6SW5kZXhLZXlzPiYgaW5kZXhLZXlzLCBWZWN0b3I8T3duUHRyPEluZGV4V3JpdGVyPiA+
KiBpbmRleFdyaXRlcnMsIFN0cmluZyogZXJyb3JNZXNzYWdlLCBib29sJiBjb21wbGV0ZWQpCiB7
CiAgICAgQVNTRVJUKGluZGV4SWRzLnNpemUoKSA9PSBpbmRleEtleXMuc2l6ZSgpKTsKKyAgICBj
b21wbGV0ZWQgPSBmYWxzZTsKIAogICAgIEhhc2hNYXA8aW50NjRfdCwgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+IGluZGV4S2V5TWFwOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW5kZXhJZHMuc2l6ZSgpOyArK2kpCkBAIC0zMTksMTcgKzMyNSwxOSBAQCBz
dGF0aWMgYm9vbCBtYWtlSW5kZXhXcml0ZXJzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24sCiAgICAgICAgIH0KIAogICAgICAgICBPd25QdHI8SW5kZXhX
cml0ZXI+IGluZGV4V3JpdGVyKGFkb3B0UHRyKG5ldyBJbmRleFdyaXRlcihpbmRleC0+bWV0YWRh
dGEoKSwga2V5cykpKTsKLSAgICAgICAgaWYgKCFpbmRleFdyaXRlci0+dmVyaWZ5SW5kZXhLZXlz
KCpvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLT5k
YXRhYmFzZUlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
YmplY3RTdG9yZS0+aWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4LT5pZCgpLCBwcmltYXJ5S2V5LmdldCgpLCBlcnJvck1lc3NhZ2UpKSB7CisgICAg
ICAgIGJvb2wgY2FuQWRkS2V5cyA9IGZhbHNlOworICAgICAgICBib29sIG5vTGV2ZWxEQkVycm9y
cyA9IGluZGV4V3JpdGVyLT52ZXJpZnlJbmRleEtleXMoKm9iamVjdFN0b3JlLT5iYWNraW5nU3Rv
cmUoKSwKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLAorICAgICAgICAgICAgb2JqZWN0U3RvcmUtPmlk
KCksIGluZGV4LT5pZCgpLCBjYW5BZGRLZXlzLCBwcmltYXJ5S2V5LmdldCgpLCBlcnJvck1lc3Nh
Z2UpOworICAgICAgICBpZiAoIW5vTGV2ZWxEQkVycm9ycykKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWNhbkFkZEtleXMpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpbmRleFdyaXRlcnMtPmFwcGVuZChpbmRleFdyaXRlci5y
ZWxlYXNlKCkpOwogICAgIH0KIAorICAgIGNvbXBsZXRlZCA9IHRydWU7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTM1Nyw3ICszNjUsMTMgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGMKIAog
ICAgIFZlY3RvcjxPd25QdHI8SW5kZXhXcml0ZXI+ID4gaW5kZXhXcml0ZXJzOwogICAgIFN0cmlu
ZyBlcnJvck1lc3NhZ2U7Ci0gICAgaWYgKCFtYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9uLCB0
aGlzLCBwcmltYXJ5S2V5LCBmYWxzZSwgaW5kZXhJZHMsIGluZGV4S2V5cywgJmluZGV4V3JpdGVy
cywgJmVycm9yTWVzc2FnZSkpIHsKKyAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNlOworICAgIGJv
b2wgbm9MZXZlbERCRXJyb3JzID0gbWFrZUluZGV4V3JpdGVycyh0cmFuc2FjdGlvbiwgdGhpcywg
cHJpbWFyeUtleSwgZmFsc2UsIGluZGV4SWRzLCBpbmRleEtleXMsICZpbmRleFdyaXRlcnMsICZl
cnJvck1lc3NhZ2UsIGNvbXBsZXRlZCk7CisgICAgaWYgKCFub0xldmVsREJFcnJvcnMpIHsKKyAg
ICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gbWFrZUluZGV4
V3JpdGVycyIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWNvbXBsZXRlZCkg
ewogICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBkZWFsIHdpdGggZXJyb3JNZXNzYWdlIGhlcmUu
IG1ha2VJbmRleFdyaXRlcnMgb25seSBmYWlscyBvbiB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgZXJy
b3JzLgogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsICJEdXBsaWNhdGUgaW5kZXgg
a2V5cyBleGlzdCBpbiB0aGUgb2JqZWN0IHN0b3JlLiIpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NDMxLDcgKzQ0NSwxMyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0
b3JlU3RvcmFnZU9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdQogCiAgICAgVmVjdG9yPE93
blB0cjxJbmRleFdyaXRlcj4gPiBpbmRleFdyaXRlcnM7CiAgICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZTsKLSAgICBpZiAoIW1ha2VJbmRleFdyaXRlcnModHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlLmdl
dCgpLCBrZXksIGtleVdhc0dlbmVyYXRlZCwgKmluZGV4SWRzLCAqaW5kZXhLZXlzLCAmaW5kZXhX
cml0ZXJzLCAmZXJyb3JNZXNzYWdlKSkgeworICAgIGJvb2wgY29tcGxldGVkID0gZmFsc2U7Cisg
ICAgYm9vbCBub0xldmVsREJFcnJvcnMgPSBtYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9uLCBv
YmplY3RTdG9yZS5nZXQoKSwga2V5LCBrZXlXYXNHZW5lcmF0ZWQsICppbmRleElkcywgKmluZGV4
S2V5cywgJmluZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSwgY29tcGxldGVkKTsKKyAgICBpZiAo
IW5vTGV2ZWxEQkVycm9ycykgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRl
cm5hbCBlcnJvciBpbiBtYWtlSW5kZXhXcml0ZXJzLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoIWNvbXBsZXRlZCkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJy
b3IsIGVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177606</attachid>
            <date>2012-12-04 16:52:46 -0800</date>
            <delta_ts>2012-12-04 19:22:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103960-20121204165012.patch</filename>
            <type>text/plain</type>
            <size>8027</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ1ZjMyMmExZTlkYWU2
NTEwM2JmYzEzOWVkN2ZmMTdkMWQxM2UzZC4uMTUxYTc0YjI5ZmNlMTg1MzM1MTFkOTE5MjFmZjRk
OTM0MmFkZGFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTAzICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgMworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhbnNhY3Rpb25zIGFy
ZSBhYm9ydGVkIHdoZW4gdGhlcmUgYXJlIGxldmVsZGIgcHJvYmxlbXMgY3JlYXRpbmcKKyAgICAg
ICAgaW5kZXhlcyBvbiBhbiBvYmplY3Qgc3RvcmUgd2l0aCBleGlzdGluZyBkYXRhIG9yIHdoZW4g
YWRkaW5nIGRhdGEgdG8gYW4KKyAgICAgICAgb2JqZWN0c3RvcmUgdGhhdCBoYXMgaW5kZXhlcy4K
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlSW5kZXhXcml0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldElu
ZGV4S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpP
YmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OnBlcmZvcm0pOgorCiAyMDEyLTEyLTA0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFBy
b3BhZ2F0ZSBtb3JlIGxldmVsZGIgZXJyb3JzIHRvIElEQkluZGV4IGFuZCBJREJPYmplY3RTdG9y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA5ZjYxMWNiMDFiZDkzNDU0OGM4M2Jk
MTZjOTZiOTBlNGRiODdmMDNhLi40Y2RjYTM0MWNhOTNkYjE0ZTFhZjQ3ZTc4ZmRlMDg0Njk5YmVh
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMjQ5LDE4ICsyNDksMjIgQEAg
cHVibGljOgogICAgIHsgfQogCiAgICAgYm9vbCB2ZXJpZnlJbmRleEtleXMoSURCQmFja2luZ1N0
b3JlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5ID0gMCwgU3RyaW5nKiBlcnJvck1lc3NhZ2UgPSAw
KQorICAgICAgICBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBib29sJiBjYW5BZGRLZXlzLAorICAgICAgICBjb25zdCBJREJLZXkqIHBy
aW1hcnlLZXkgPSAwLCBTdHJpbmcqIGVycm9yTWVzc2FnZSA9IDApCiAgICAgeworICAgICAgICBj
YW5BZGRLZXlzID0gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmRl
eEtleXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghYWRkaW5nS2V5QWxsb3dlZChi
YWNraW5nU3RvcmUsIHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtX2luZGV4S2V5cylbaV0u
Z2V0KCksIHByaW1hcnlLZXkpKSB7CisgICAgICAgICAgICBib29sIG9rID0gYWRkaW5nS2V5QWxs
b3dlZChiYWNraW5nU3RvcmUsIHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCAobV9pbmRleEtleXMpW2ldLmdldCgpLCBwcmltYXJ5S2V5LCBjYW5BZGRLZXlz
KTsKKyAgICAgICAgICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgaWYgKCFjYW5BZGRLZXlzKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9y
TWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICAgKmVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9y
bWF0KCJVbmFibGUgdG8gYWRkIGtleSB0byBpbmRleCAnJXMnOiBhdCBsZWFzdCBvbmUga2V5IGRv
ZXMgbm90IHNhdGlzZnkgdGhlIHVuaXF1ZW5lc3MgcmVxdWlyZW1lbnRzLiIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4TWV0YWRhdGEu
bmFtZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAg
ICAgY2FuQWRkS2V5cyA9IHRydWU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
Mjc1LDIyICsyNzksMjMgQEAgcHVibGljOgogcHJpdmF0ZToKIAogICAgIGJvb2wgYWRkaW5nS2V5
QWxsb3dlZChJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElEQktleSogaW5kZXhLZXksIGNvbnN0IElE
QktleSogcHJpbWFyeUtleSkgY29uc3QKKyAgICAgICAgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwKKyAgICAgICAgY29uc3QgSURCS2V5
KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5LCBib29sJiBhbGxvd2VkKSBjb25z
dAogICAgIHsKLSAgICAgICAgaWYgKCFtX2luZGV4TWV0YWRhdGEudW5pcXVlKQorICAgICAgICBh
bGxvd2VkID0gZmFsc2U7CisgICAgICAgIGlmICghbV9pbmRleE1ldGFkYXRhLnVuaXF1ZSkgewor
ICAgICAgICAgICAgYWxsb3dlZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxJREJLZXk+IGZvdW5kUHJpbWFyeUtleTsKICAgICAg
ICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICBib29sIG9rID0gYmFja2luZ1N0b3JlLmtl
eUV4aXN0c0luSW5kZXgodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsICppbmRleEtleSwgZm91bmRQcmltYXJ5S2V5LCBmb3VuZCk7Ci0gICAgICAgIC8vIEZJ
WE1FOiBQcm9wYWdhdGUgdGhpcyBlcnJvciB1cCB0byBzY3JpcHQuCi0gICAgICAgIEFTU0VSVF9V
TlVTRUQob2ssIG9rKTsKLSAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBpZiAocHJpbWFyeUtleSAmJiBmb3VuZFByaW1hcnlLZXktPmlzRXF1YWwo
cHJpbWFyeUtleSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoIWZvdW5kIHx8IChwcmltYXJ5S2V5ICYmIGZvdW5kUHJpbWFyeUtleS0+aXNFcXVhbChw
cmltYXJ5S2V5KSkpCisgICAgICAgICAgICBhbGxvd2VkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSBtX2luZGV4TWV0YWRh
dGE7CkBAIC0yOTgsOSArMzAzLDEwIEBAIHByaXZhdGU6CiB9OwogfQogCi1zdGF0aWMgYm9vbCBt
YWtlSW5kZXhXcml0ZXJzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJh
bnNhY3Rpb24sIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlLCBQYXNzUmVm
UHRyPElEQktleT4gcHJpbWFyeUtleSwgYm9vbCBrZXlXYXNHZW5lcmF0ZWQsIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U6OkluZGV4S2V5cz4mIGluZGV4S2V5cywgVmVjdG9yPE93blB0cjxJbmRleFdyaXRl
cj4gPiogaW5kZXhXcml0ZXJzLCBTdHJpbmcqIGVycm9yTWVzc2FnZSkKK3N0YXRpYyBib29sIG1h
a2VJbmRleFdyaXRlcnMoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmUsIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5LCBib29sIGtleVdhc0dlbmVyYXRlZCwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZTo6SW5kZXhLZXlzPiYgaW5kZXhLZXlzLCBWZWN0b3I8T3duUHRyPEluZGV4V3JpdGVy
PiA+KiBpbmRleFdyaXRlcnMsIFN0cmluZyogZXJyb3JNZXNzYWdlLCBib29sJiBjb21wbGV0ZWQp
CiB7CiAgICAgQVNTRVJUKGluZGV4SWRzLnNpemUoKSA9PSBpbmRleEtleXMuc2l6ZSgpKTsKKyAg
ICBjb21wbGV0ZWQgPSBmYWxzZTsKIAogICAgIEhhc2hNYXA8aW50NjRfdCwgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+IGluZGV4S2V5TWFwOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5kZXhJZHMuc2l6ZSgpOyArK2kpCkBAIC0zMTksMTcgKzMyNSwxOSBA
QCBzdGF0aWMgYm9vbCBtYWtlSW5kZXhXcml0ZXJzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24sCiAgICAgICAgIH0KIAogICAgICAgICBPd25QdHI8SW5k
ZXhXcml0ZXI+IGluZGV4V3JpdGVyKGFkb3B0UHRyKG5ldyBJbmRleFdyaXRlcihpbmRleC0+bWV0
YWRhdGEoKSwga2V5cykpKTsKLSAgICAgICAgaWYgKCFpbmRleFdyaXRlci0+dmVyaWZ5SW5kZXhL
ZXlzKCpvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3Jl
LT5kYXRhYmFzZUlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYmplY3RTdG9yZS0+aWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4LT5pZCgpLCBwcmltYXJ5S2V5LmdldCgpLCBlcnJvck1lc3NhZ2UpKSB7Cisg
ICAgICAgIGJvb2wgY2FuQWRkS2V5cyA9IGZhbHNlOworICAgICAgICBib29sIG5vTGV2ZWxEQkVy
cm9ycyA9IGluZGV4V3JpdGVyLT52ZXJpZnlJbmRleEtleXMoKm9iamVjdFN0b3JlLT5iYWNraW5n
U3RvcmUoKSwKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLAorICAgICAgICAgICAgb2JqZWN0U3RvcmUt
PmlkKCksIGluZGV4LT5pZCgpLCBjYW5BZGRLZXlzLCBwcmltYXJ5S2V5LmdldCgpLCBlcnJvck1l
c3NhZ2UpOworICAgICAgICBpZiAoIW5vTGV2ZWxEQkVycm9ycykKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWNhbkFkZEtleXMpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBpbmRleFdyaXRlcnMtPmFwcGVuZChpbmRleFdyaXRl
ci5yZWxlYXNlKCkpOwogICAgIH0KIAorICAgIGNvbXBsZXRlZCA9IHRydWU7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTM1Nyw3ICszNjUsMTMgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGMK
IAogICAgIFZlY3RvcjxPd25QdHI8SW5kZXhXcml0ZXI+ID4gaW5kZXhXcml0ZXJzOwogICAgIFN0
cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgaWYgKCFtYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9u
LCB0aGlzLCBwcmltYXJ5S2V5LCBmYWxzZSwgaW5kZXhJZHMsIGluZGV4S2V5cywgJmluZGV4V3Jp
dGVycywgJmVycm9yTWVzc2FnZSkpIHsKKyAgICBib29sIGNvbXBsZXRlZCA9IGZhbHNlOworICAg
IGJvb2wgbm9MZXZlbERCRXJyb3JzID0gbWFrZUluZGV4V3JpdGVycyh0cmFuc2FjdGlvbiwgdGhp
cywgcHJpbWFyeUtleSwgZmFsc2UsIGluZGV4SWRzLCBpbmRleEtleXMsICZpbmRleFdyaXRlcnMs
ICZlcnJvck1lc3NhZ2UsIGNvbXBsZXRlZCk7CisgICAgaWYgKCFub0xldmVsREJFcnJvcnMpIHsK
KyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gbWFrZUlu
ZGV4V3JpdGVycyIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWNvbXBsZXRl
ZCkgewogICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBkZWFsIHdpdGggZXJyb3JNZXNzYWdlIGhl
cmUuIG1ha2VJbmRleFdyaXRlcnMgb25seSBmYWlscyBvbiB1bmlxdWVuZXNzIGNvbnN0cmFpbnQg
ZXJyb3JzLgogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsICJEdXBsaWNhdGUgaW5k
ZXgga2V5cyBleGlzdCBpbiB0aGUgb2JqZWN0IHN0b3JlLiIpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNDMxLDcgKzQ0NSwxMyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVj
dFN0b3JlU3RvcmFnZU9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdQogCiAgICAgVmVjdG9y
PE93blB0cjxJbmRleFdyaXRlcj4gPiBpbmRleFdyaXRlcnM7CiAgICAgU3RyaW5nIGVycm9yTWVz
c2FnZTsKLSAgICBpZiAoIW1ha2VJbmRleFdyaXRlcnModHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
LmdldCgpLCBrZXksIGtleVdhc0dlbmVyYXRlZCwgKmluZGV4SWRzLCAqaW5kZXhLZXlzLCAmaW5k
ZXhXcml0ZXJzLCAmZXJyb3JNZXNzYWdlKSkgeworICAgIGJvb2wgY29tcGxldGVkID0gZmFsc2U7
CisgICAgYm9vbCBub0xldmVsREJFcnJvcnMgPSBtYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9u
LCBvYmplY3RTdG9yZS5nZXQoKSwga2V5LCBrZXlXYXNHZW5lcmF0ZWQsICppbmRleElkcywgKmlu
ZGV4S2V5cywgJmluZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSwgY29tcGxldGVkKTsKKyAgICBp
ZiAoIW5vTGV2ZWxEQkVycm9ycykgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJ
bnRlcm5hbCBlcnJvciBpbiBtYWtlSW5kZXhXcml0ZXJzLiIpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoIWNvbXBsZXRlZCkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50
RXJyb3IsIGVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177651</attachid>
            <date>2012-12-04 19:22:04 -0800</date>
            <delta_ts>2012-12-05 15:41:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103960-20121204191930.patch</filename>
            <type>text/plain</type>
            <size>8193</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ1ZjMyMmExZTlkYWU2
NTEwM2JmYzEzOWVkN2ZmMTdkMWQxM2UzZC4uMTUxYTc0YjI5ZmNlMTg1MzM1MTFkOTE5MjFmZjRk
OTM0MmFkZGFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTAzICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgMworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhbnNhY3Rpb25zIGFy
ZSBhYm9ydGVkIHdoZW4gdGhlcmUgYXJlIGxldmVsZGIgcHJvYmxlbXMgY3JlYXRpbmcKKyAgICAg
ICAgaW5kZXhlcyBvbiBhbiBvYmplY3Qgc3RvcmUgd2l0aCBleGlzdGluZyBkYXRhIG9yIHdoZW4g
YWRkaW5nIGRhdGEgdG8gYW4KKyAgICAgICAgb2JqZWN0c3RvcmUgdGhhdCBoYXMgaW5kZXhlcy4K
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlSW5kZXhXcml0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldElu
ZGV4S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpP
YmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OnBlcmZvcm0pOgorCiAyMDEyLTEyLTA0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFBy
b3BhZ2F0ZSBtb3JlIGxldmVsZGIgZXJyb3JzIHRvIElEQkluZGV4IGFuZCBJREJPYmplY3RTdG9y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA5ZjYxMWNiMDFiZDkzNDU0OGM4M2Jk
MTZjOTZiOTBlNGRiODdmMDNhLi5mNmY0MTYyZjdmYjAzYzYwNTFhYzFmNjViMDY3NzYzMTI2MTRl
YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMjQ5LDE4ICsyNDksMjIgQEAg
cHVibGljOgogICAgIHsgfQogCiAgICAgYm9vbCB2ZXJpZnlJbmRleEtleXMoSURCQmFja2luZ1N0
b3JlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5ID0gMCwgU3RyaW5nKiBlcnJvck1lc3NhZ2UgPSAw
KQorICAgICAgICBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBib29sJiBjYW5BZGRLZXlzLAorICAgICAgICBjb25zdCBJREJLZXkqIHBy
aW1hcnlLZXkgPSAwLCBTdHJpbmcqIGVycm9yTWVzc2FnZSA9IDApIFdBUk5fVU5VU0VEX1JFVFVS
TgogICAgIHsKKyAgICAgICAgY2FuQWRkS2V5cyA9IGZhbHNlOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1faW5kZXhLZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
IWFkZGluZ0tleUFsbG93ZWQoYmFja2luZ1N0b3JlLCB0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobV9pbmRleEtleXMpW2ldLmdldCgpLCBwcmltYXJ5S2V5KSkgeworICAgICAgICAgICAgYm9v
bCBvayA9IGFkZGluZ0tleUFsbG93ZWQoYmFja2luZ1N0b3JlLCB0cmFuc2FjdGlvbiwgZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKG1faW5kZXhLZXlzKVtpXS5nZXQoKSwgcHJp
bWFyeUtleSwgY2FuQWRkS2V5cyk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghY2FuQWRkS2V5cykgewogICAgICAg
ICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgICplcnJvck1l
c3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5hYmxlIHRvIGFkZCBrZXkgdG8gaW5kZXggJyVzJzog
YXQgbGVhc3Qgb25lIGtleSBkb2VzIG5vdCBzYXRpc2Z5IHRoZSB1bmlxdWVuZXNzIHJlcXVpcmVt
ZW50cy4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmRleE1ldGFkYXRhLm5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CisgICAgICAgIGNhbkFkZEtleXMgPSB0cnVlOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKQEAgLTI3NSwyMiArMjc5LDIzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAK
ICAgICBib29sIGFkZGluZ0tleUFsbG93ZWQoSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUs
IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJREJLZXkq
IGluZGV4S2V5LCBjb25zdCBJREJLZXkqIHByaW1hcnlLZXkpIGNvbnN0CisgICAgICAgIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsCisg
ICAgICAgIGNvbnN0IElEQktleSogaW5kZXhLZXksIGNvbnN0IElEQktleSogcHJpbWFyeUtleSwg
Ym9vbCYgYWxsb3dlZCkgY29uc3QgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgewotICAgICAgICBp
ZiAoIW1faW5kZXhNZXRhZGF0YS51bmlxdWUpCisgICAgICAgIGFsbG93ZWQgPSBmYWxzZTsKKyAg
ICAgICAgaWYgKCFtX2luZGV4TWV0YWRhdGEudW5pcXVlKSB7CisgICAgICAgICAgICBhbGxvd2Vk
ID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAKICAgICAgICAg
UmVmUHRyPElEQktleT4gZm91bmRQcmltYXJ5S2V5OwogICAgICAgICBib29sIGZvdW5kID0gZmFs
c2U7CiAgICAgICAgIGJvb2wgb2sgPSBiYWNraW5nU3RvcmUua2V5RXhpc3RzSW5JbmRleCh0cmFu
c2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKmluZGV4S2V5LCBm
b3VuZFByaW1hcnlLZXksIGZvdW5kKTsKLSAgICAgICAgLy8gRklYTUU6IFByb3BhZ2F0ZSB0aGlz
IGVycm9yIHVwIHRvIHNjcmlwdC4KLSAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAg
ICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChw
cmltYXJ5S2V5ICYmIGZvdW5kUHJpbWFyeUtleS0+aXNFcXVhbChwcmltYXJ5S2V5KSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgh
b2spCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZm91bmQgfHwgKHBy
aW1hcnlLZXkgJiYgZm91bmRQcmltYXJ5S2V5LT5pc0VxdWFsKHByaW1hcnlLZXkpKSkKKyAgICAg
ICAgICAgIGFsbG93ZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAg
ICBjb25zdCBJREJJbmRleE1ldGFkYXRhIG1faW5kZXhNZXRhZGF0YTsKQEAgLTI5OCw5ICszMDMs
MTAgQEAgcHJpdmF0ZToKIH07CiB9CiAKLXN0YXRpYyBib29sIG1ha2VJbmRleFdyaXRlcnMoUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiwgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5LCBib29sIGtleVdhc0dlbmVyYXRlZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElk
cywgY29uc3QgVmVjdG9yPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlz
PiYgaW5kZXhLZXlzLCBWZWN0b3I8T3duUHRyPEluZGV4V3JpdGVyPiA+KiBpbmRleFdyaXRlcnMs
IFN0cmluZyogZXJyb3JNZXNzYWdlKQorV0FSTl9VTlVTRURfUkVUVVJOIHN0YXRpYyBib29sIG1h
a2VJbmRleFdyaXRlcnMoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmUsIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5LCBib29sIGtleVdhc0dlbmVyYXRlZCwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZTo6SW5kZXhLZXlzPiYgaW5kZXhLZXlzLCBWZWN0b3I8T3duUHRyPEluZGV4V3JpdGVy
PiA+KiBpbmRleFdyaXRlcnMsIFN0cmluZyogZXJyb3JNZXNzYWdlLCBib29sJiBjb21wbGV0ZWQp
CiB7CiAgICAgQVNTRVJUKGluZGV4SWRzLnNpemUoKSA9PSBpbmRleEtleXMuc2l6ZSgpKTsKKyAg
ICBjb21wbGV0ZWQgPSBmYWxzZTsKIAogICAgIEhhc2hNYXA8aW50NjRfdCwgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+IGluZGV4S2V5TWFwOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5kZXhJZHMuc2l6ZSgpOyArK2kpCkBAIC0zMTksMTcgKzMyNSwxOSBA
QCBzdGF0aWMgYm9vbCBtYWtlSW5kZXhXcml0ZXJzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24sCiAgICAgICAgIH0KIAogICAgICAgICBPd25QdHI8SW5k
ZXhXcml0ZXI+IGluZGV4V3JpdGVyKGFkb3B0UHRyKG5ldyBJbmRleFdyaXRlcihpbmRleC0+bWV0
YWRhdGEoKSwga2V5cykpKTsKLSAgICAgICAgaWYgKCFpbmRleFdyaXRlci0+dmVyaWZ5SW5kZXhL
ZXlzKCpvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3Jl
LT5kYXRhYmFzZUlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYmplY3RTdG9yZS0+aWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4LT5pZCgpLCBwcmltYXJ5S2V5LmdldCgpLCBlcnJvck1lc3NhZ2UpKSB7Cisg
ICAgICAgIGJvb2wgY2FuQWRkS2V5cyA9IGZhbHNlOworICAgICAgICBib29sIGJhY2tpbmdTdG9y
ZVN1Y2Nlc3MgPSBpbmRleFdyaXRlci0+dmVyaWZ5SW5kZXhLZXlzKCpvYmplY3RTdG9yZS0+YmFj
a2luZ1N0b3JlKCksCisgICAgICAgICAgICB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwKKyAgICAgICAgICAgIG9iamVjdFN0
b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgY2FuQWRkS2V5cywgcHJpbWFyeUtleS5nZXQoKSwgZXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgaWYgKCFiYWNraW5nU3RvcmVTdWNjZXNzKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGlmICghY2FuQWRkS2V5cykKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGluZGV4V3JpdGVycy0+YXBwZW5kKGlu
ZGV4V3JpdGVyLnJlbGVhc2UoKSk7CiAgICAgfQogCisgICAgY29tcGxldGVkID0gdHJ1ZTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzU3LDcgKzM2NSwxMyBAQCB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFy
eUtleSwgYwogCiAgICAgVmVjdG9yPE93blB0cjxJbmRleFdyaXRlcj4gPiBpbmRleFdyaXRlcnM7
CiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBpZiAoIW1ha2VJbmRleFdyaXRlcnModHJh
bnNhY3Rpb24sIHRoaXMsIHByaW1hcnlLZXksIGZhbHNlLCBpbmRleElkcywgaW5kZXhLZXlzLCAm
aW5kZXhXcml0ZXJzLCAmZXJyb3JNZXNzYWdlKSkgeworICAgIGJvb2wgb2JleXNDb25zdHJhaW50
cyA9IGZhbHNlOworICAgIGJvb2wgYmFja2luZ1N0b3JlU3VjY2VzcyA9IG1ha2VJbmRleFdyaXRl
cnModHJhbnNhY3Rpb24sIHRoaXMsIHByaW1hcnlLZXksIGZhbHNlLCBpbmRleElkcywgaW5kZXhL
ZXlzLCAmaW5kZXhXcml0ZXJzLCAmZXJyb3JNZXNzYWdlLCBvYmV5c0NvbnN0cmFpbnRzKTsKKyAg
ICBpZiAoIWJhY2tpbmdTdG9yZVN1Y2Nlc3MpIHsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCAiSW50ZXJuYWwgZXJyb3I6IGJhY2tpbmcgc3RvcmUgZXJyb3IgdXBkYXRpbmcgaW5kZXgg
a2V5cy4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFvYmV5c0NvbnN0cmFp
bnRzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGRlYWwgd2l0aCBlcnJvck1lc3NhZ2Ug
aGVyZS4gbWFrZUluZGV4V3JpdGVycyBvbmx5IGZhaWxzIG9uIHVuaXF1ZW5lc3MgY29uc3RyYWlu
dCBlcnJvcnMuCiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgIkR1cGxpY2F0ZSBp
bmRleCBrZXlzIGV4aXN0IGluIHRoZSBvYmplY3Qgc3RvcmUuIikpOwogICAgICAgICByZXR1cm47
CkBAIC00MzEsNyArNDQ1LDEzIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2Jq
ZWN0U3RvcmVTdG9yYWdlT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1CiAKICAgICBWZWN0
b3I8T3duUHRyPEluZGV4V3JpdGVyPiA+IGluZGV4V3JpdGVyczsKICAgICBTdHJpbmcgZXJyb3JN
ZXNzYWdlOwotICAgIGlmICghbWFrZUluZGV4V3JpdGVycyh0cmFuc2FjdGlvbiwgb2JqZWN0U3Rv
cmUuZ2V0KCksIGtleSwga2V5V2FzR2VuZXJhdGVkLCAqaW5kZXhJZHMsICppbmRleEtleXMsICZp
bmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2UpKSB7CisgICAgYm9vbCBvYmV5c0NvbnN0cmFpbnRz
ID0gZmFsc2U7CisgICAgYm9vbCBiYWNraW5nU3RvcmVTdWNjZXNzID0gbWFrZUluZGV4V3JpdGVy
cyh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmUuZ2V0KCksIGtleSwga2V5V2FzR2VuZXJhdGVkLCAq
aW5kZXhJZHMsICppbmRleEtleXMsICZpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2UsIG9iZXlz
Q29uc3RyYWludHMpOworICAgIGlmICghYmFja2luZ1N0b3JlU3VjY2VzcykgeworICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvcjogYmFja2luZyBzdG9yZSBlcnJv
ciB1cGRhdGluZyBpbmRleCBrZXlzLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoIW9iZXlzQ29uc3RyYWludHMpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9y
LCBlcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177849</attachid>
            <date>2012-12-05 15:41:58 -0800</date>
            <delta_ts>2012-12-05 16:09:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-103960-20121205153923.patch</filename>
            <type>text/plain</type>
            <size>8197</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJhMjQzY2I1N2U5Y2Vk
ZDcwOTUzY2Q3OTY5NmRhOWMzMmZjMWE4NS4uNzQ0OGFjZjIxNGMzYzVlZDkxOTIzNWFiMjJlZmJm
MzA5MWU3ZDc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTA1ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgMworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBUcmFuc2FjdGlvbnMgYXJlIGFi
b3J0ZWQgd2hlbiB0aGVyZSBhcmUgbGV2ZWxkYiBwcm9ibGVtcyBjcmVhdGluZworICAgICAgICBp
bmRleGVzIG9uIGFuIG9iamVjdCBzdG9yZSB3aXRoIGV4aXN0aW5nIGRhdGEgb3Igd2hlbiBhZGRp
bmcgZGF0YSB0byBhbgorICAgICAgICBvYmplY3RzdG9yZSB0aGF0IGhhcyBpbmRleGVzLgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VJbmRleFdyaXRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhL
ZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVj
dFN0b3JlU3RvcmFnZU9wZXJhdGlvbjo6cGVyZm9ybSk6CisKIDIwMTItMTItMDUgIEFsZWMgRmxl
dHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogU3R1YiBv
dXQgdHJhbnNhY3Rpb24tYmFja2VuZCBtZXRob2RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CmluZGV4IDJlMTBkMTQ4ZWMyNDZhNGIwZDk1MDM3ODNmOWFmMDI5MDk5NzlkZTEuLjJhZGE1MjUz
OWQ2MDZjYTZiZWU1MThhNjMxMzc3MDk5ZTY3YWViN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwCkBAIC0zNTcsMTggKzM1NywyMiBAQCBwdWJsaWM6CiAgICAgeyB9CiAKICAgICBib29s
IHZlcmlmeUluZGV4S2V5cyhJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJREJLZXkqIHByaW1hcnlLZXkg
PSAwLCBTdHJpbmcqIGVycm9yTWVzc2FnZSA9IDApCisgICAgICAgIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGJvb2wmIGNhbkFkZEtl
eXMsCisgICAgICAgIGNvbnN0IElEQktleSogcHJpbWFyeUtleSA9IDAsIFN0cmluZyogZXJyb3JN
ZXNzYWdlID0gMCkgV0FSTl9VTlVTRURfUkVUVVJOCiAgICAgeworICAgICAgICBjYW5BZGRLZXlz
ID0gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmRleEtleXMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghYWRkaW5nS2V5QWxsb3dlZChiYWNraW5nU3Rv
cmUsIHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtX2luZGV4S2V5cylbaV0uZ2V0KCksIHBy
aW1hcnlLZXkpKSB7CisgICAgICAgICAgICBib29sIG9rID0gYWRkaW5nS2V5QWxsb3dlZChiYWNr
aW5nU3RvcmUsIHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElk
LCAobV9pbmRleEtleXMpW2ldLmdldCgpLCBwcmltYXJ5S2V5LCBjYW5BZGRLZXlzKTsKKyAgICAg
ICAgICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgaWYgKCFjYW5BZGRLZXlzKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkK
ICAgICAgICAgICAgICAgICAgICAgKmVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmFi
bGUgdG8gYWRkIGtleSB0byBpbmRleCAnJXMnOiBhdCBsZWFzdCBvbmUga2V5IGRvZXMgbm90IHNh
dGlzZnkgdGhlIHVuaXF1ZW5lc3MgcmVxdWlyZW1lbnRzLiIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4TWV0YWRhdGEubmFtZS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgY2FuQWRk
S2V5cyA9IHRydWU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzgzLDIyICsz
ODcsMjMgQEAgcHVibGljOgogcHJpdmF0ZToKIAogICAgIGJvb2wgYWRkaW5nS2V5QWxsb3dlZChJ
REJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IElEQktleSogaW5kZXhLZXksIGNvbnN0IElEQktleSogcHJp
bWFyeUtleSkgY29uc3QKKyAgICAgICAgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwKKyAgICAgICAgY29uc3QgSURCS2V5KiBpbmRleEtl
eSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5LCBib29sJiBhbGxvd2VkKSBjb25zdCBXQVJOX1VO
VVNFRF9SRVRVUk4KICAgICB7Ci0gICAgICAgIGlmICghbV9pbmRleE1ldGFkYXRhLnVuaXF1ZSkK
KyAgICAgICAgYWxsb3dlZCA9IGZhbHNlOworICAgICAgICBpZiAoIW1faW5kZXhNZXRhZGF0YS51
bmlxdWUpIHsKKyAgICAgICAgICAgIGFsbG93ZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8SURCS2V5PiBmb3VuZFByaW1hcnlL
ZXk7CiAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgYm9vbCBvayA9IGJhY2tp
bmdTdG9yZS5rZXlFeGlzdHNJbkluZGV4KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBpbmRleElkLCAqaW5kZXhLZXksIGZvdW5kUHJpbWFyeUtleSwgZm91bmQpOwotICAg
ICAgICAvLyBGSVhNRTogUHJvcGFnYXRlIHRoaXMgZXJyb3IgdXAgdG8gc2NyaXB0LgotICAgICAg
ICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0gICAgICAgIGlmICghZm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKHByaW1hcnlLZXkgJiYgZm91bmRQcmltYXJ5S2V5
LT5pc0VxdWFsKHByaW1hcnlLZXkpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKCFmb3VuZCB8fCAocHJpbWFyeUtleSAmJiBmb3VuZFByaW1hcnlLZXkt
PmlzRXF1YWwocHJpbWFyeUtleSkpKQorICAgICAgICAgICAgYWxsb3dlZCA9IHRydWU7CisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEgbV9p
bmRleE1ldGFkYXRhOwpAQCAtNDA2LDkgKzQxMSwxMCBAQCBwcml2YXRlOgogfTsKIH0KIAotc3Rh
dGljIGJvb2wgbWFrZUluZGV4V3JpdGVycyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw+IHRyYW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9y
ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGJvb2wga2V5V2FzR2VuZXJhdGVkLCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+JiBpbmRleEtleXMsIFZlY3RvcjxPd25QdHI8
SW5kZXhXcml0ZXI+ID4qIGluZGV4V3JpdGVycywgU3RyaW5nKiBlcnJvck1lc3NhZ2UpCitXQVJO
X1VOVVNFRF9SRVRVUk4gc3RhdGljIGJvb2wgbWFrZUluZGV4V3JpdGVycyhQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGJvb2wg
a2V5V2FzR2VuZXJhdGVkLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBW
ZWN0b3I8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXM+JiBpbmRleEtl
eXMsIFZlY3RvcjxPd25QdHI8SW5kZXhXcml0ZXI+ID4qIGluZGV4V3JpdGVycywgU3RyaW5nKiBl
cnJvck1lc3NhZ2UsIGJvb2wmIGNvbXBsZXRlZCkKIHsKICAgICBBU1NFUlQoaW5kZXhJZHMuc2l6
ZSgpID09IGluZGV4S2V5cy5zaXplKCkpOworICAgIGNvbXBsZXRlZCA9IGZhbHNlOwogCiAgICAg
SGFzaE1hcDxpbnQ2NF90LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5
cz4gaW5kZXhLZXlNYXA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleElkcy5zaXpl
KCk7ICsraSkKQEAgLTQyNywxNyArNDMzLDE5IEBAIHN0YXRpYyBib29sIG1ha2VJbmRleFdyaXRl
cnMoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiwKICAg
ICAgICAgfQogCiAgICAgICAgIE93blB0cjxJbmRleFdyaXRlcj4gaW5kZXhXcml0ZXIoYWRvcHRQ
dHIobmV3IEluZGV4V3JpdGVyKGluZGV4LT5tZXRhZGF0YSgpLCBrZXlzKSkpOwotICAgICAgICBp
ZiAoIWluZGV4V3JpdGVyLT52ZXJpZnlJbmRleEtleXMoKm9iamVjdFN0b3JlLT5iYWNraW5nU3Rv
cmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLT5pZCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgtPmlkKCksIHByaW1hcnlL
ZXkuZ2V0KCksIGVycm9yTWVzc2FnZSkpIHsKKyAgICAgICAgYm9vbCBjYW5BZGRLZXlzID0gZmFs
c2U7CisgICAgICAgIGJvb2wgYmFja2luZ1N0b3JlU3VjY2VzcyA9IGluZGV4V3JpdGVyLT52ZXJp
ZnlJbmRleEtleXMoKm9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKSwKKyAgICAgICAgICAgIHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJh
c2VJZCgpLAorICAgICAgICAgICAgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5pZCgpLCBjYW5B
ZGRLZXlzLCBwcmltYXJ5S2V5LmdldCgpLCBlcnJvck1lc3NhZ2UpOworICAgICAgICBpZiAoIWJh
Y2tpbmdTdG9yZVN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKCFjYW5BZGRLZXlzKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAgICAgaW5kZXhXcml0ZXJzLT5hcHBlbmQoaW5kZXhXcml0ZXIucmVsZWFzZSgpKTsKICAgICB9
CiAKKyAgICBjb21wbGV0ZWQgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NjUs
NyArNDczLDEzIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlz
KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjCiAKICAgICBWZWN0b3I8T3duUHRy
PEluZGV4V3JpdGVyPiA+IGluZGV4V3JpdGVyczsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwot
ICAgIGlmICghbWFrZUluZGV4V3JpdGVycyh0cmFuc2FjdGlvbiwgdGhpcywgcHJpbWFyeUtleSwg
ZmFsc2UsIGluZGV4SWRzLCBpbmRleEtleXMsICZpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2Up
KSB7CisgICAgYm9vbCBvYmV5c0NvbnN0cmFpbnRzID0gZmFsc2U7CisgICAgYm9vbCBiYWNraW5n
U3RvcmVTdWNjZXNzID0gbWFrZUluZGV4V3JpdGVycyh0cmFuc2FjdGlvbiwgdGhpcywgcHJpbWFy
eUtleSwgZmFsc2UsIGluZGV4SWRzLCBpbmRleEtleXMsICZpbmRleFdyaXRlcnMsICZlcnJvck1l
c3NhZ2UsIG9iZXlzQ29uc3RyYWludHMpOworICAgIGlmICghYmFja2luZ1N0b3JlU3VjY2Vzcykg
eworICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvcjogYmFja2lu
ZyBzdG9yZSBlcnJvciB1cGRhdGluZyBpbmRleCBrZXlzLiIpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoIW9iZXlzQ29uc3RyYWludHMpIHsKICAgICAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gZGVhbCB3aXRoIGVycm9yTWVzc2FnZSBoZXJlLiBtYWtlSW5kZXhXcml0ZXJzIG9ubHkg
ZmFpbHMgb24gdW5pcXVlbmVzcyBjb25zdHJhaW50IGVycm9ycy4KICAgICAgICAgdHJhbnNhY3Rp
b24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
Q29uc3RyYWludEVycm9yLCAiRHVwbGljYXRlIGluZGV4IGtleXMgZXhpc3QgaW4gdGhlIG9iamVj
dCBzdG9yZS4iKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTUzMyw3ICs1NDcsMTMgQEAgdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OnBl
cmZvcm0oSURCVHJhbnNhY3QKIAogICAgIFZlY3RvcjxPd25QdHI8SW5kZXhXcml0ZXI+ID4gaW5k
ZXhXcml0ZXJzOwogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgaWYgKCFtYWtlSW5kZXhX
cml0ZXJzKHRyYW5zYWN0aW9uLCBtX29iamVjdFN0b3JlLmdldCgpLCBtX2tleSwga2V5V2FzR2Vu
ZXJhdGVkLCAqbV9wb3BJbmRleElkcywgKm1fcG9wSW5kZXhLZXlzLCAmaW5kZXhXcml0ZXJzLCAm
ZXJyb3JNZXNzYWdlKSkgeworICAgIGJvb2wgb2JleXNDb25zdHJhaW50cyA9IGZhbHNlOworICAg
IGJvb2wgYmFja2luZ1N0b3JlU3VjY2VzcyA9IG1ha2VJbmRleFdyaXRlcnModHJhbnNhY3Rpb24s
IG1fb2JqZWN0U3RvcmUuZ2V0KCksIG1fa2V5LCBrZXlXYXNHZW5lcmF0ZWQsICptX3BvcEluZGV4
SWRzLCAqbV9wb3BJbmRleEtleXMsICZpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2UsIG9iZXlz
Q29uc3RyYWludHMpOworICAgIGlmICghYmFja2luZ1N0b3JlU3VjY2VzcykgeworICAgICAgICBt
X2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yOiBiYWNraW5nIHN0b3JlIGVy
cm9yIHVwZGF0aW5nIGluZGV4IGtleXMuIikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmICghb2JleXNDb25zdHJhaW50cykgewogICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRF
cnJvciwgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>