<?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>152201</bug_id>
          
          <creation_ts>2015-12-11 16:17:28 -0800</creation_ts>
          <short_desc>Modern IDB: storage/indexeddb/index-duplicate-keypaths.html fails</short_desc>
          <delta_ts>2015-12-12 14:07:00 -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>WebCore Misc.</component>
          <version>Safari 9</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>
          
          <blocked>149117</blocked>
    
    <blocked>150882</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148599</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-11 16:17:28 -0800</bug_when>
    <thetext>Modern IDB: storage/indexeddb/index-duplicate-keypaths.html fails</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148614</commentid>
    <comment_count>1</comment_count>
      <attachid>267203</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-11 17:03:24 -0800</bug_when>
    <thetext>Created attachment 267203
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148663</commentid>
    <comment_count>2</comment_count>
      <attachid>267203</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-11 22:25:40 -0800</bug_when>
    <thetext>Comment on attachment 267203
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:366
&gt; +    if (newKeyNumber &lt; objectStore-&gt;currentKeyGeneratorValue())
&gt; +        return { };
&gt; +
&gt; +    uint64_t newKeyInteger(newKeyNumber);
&gt; +    if (newKeyInteger &lt;= newKeyNumber)
&gt; +        ++newKeyInteger;
&gt; +
&gt; +    ASSERT(newKeyInteger &gt; newKeyNumber);

I think newKeyInteger will always be &lt;= newKeyNumber if newKeyNumber is &gt;= currentKeyGeneratorValue, which is a uint64_t,  which can never be negative.

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:370
&gt; +    return IDBError();

I think if you use return { }; before you should use it here, too.  Also elsewhere in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148678</commentid>
    <comment_count>3</comment_count>
      <attachid>267203</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-11 23:47:29 -0800</bug_when>
    <thetext>Comment on attachment 267203
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:349
&gt; +IDBError MemoryIDBBackingStore::maybeUpdateKeyGeneratorNumber(const IDBResourceIdentifier&amp; transactionIdentifier, uint64_t objectStoreIdentifier, double newKeyNumber)

This could also return void.  That would be different than all the other IDBBackingStore methods, but this can&apos;t generate an error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148736</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-12 14:00:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 267203 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267203&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:366
&gt; &gt; +    if (newKeyNumber &lt; objectStore-&gt;currentKeyGeneratorValue())
&gt; &gt; +        return { };
&gt; &gt; +
&gt; &gt; +    uint64_t newKeyInteger(newKeyNumber);
&gt; &gt; +    if (newKeyInteger &lt;= newKeyNumber)
&gt; &gt; +        ++newKeyInteger;
&gt; &gt; +
&gt; &gt; +    ASSERT(newKeyInteger &gt; newKeyNumber);
&gt; 
&gt; I think newKeyInteger will always be &lt;= newKeyNumber if newKeyNumber is &gt;=
&gt; currentKeyGeneratorValue, which is a uint64_t,  which can never be negative.

I agree. So does the ASSERT!

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:370
&gt; &gt; +    return IDBError();
&gt; 
&gt; I think if you use return { }; before you should use it here, too.  Also
&gt; elsewhere in this file.

Yup in this new code, you&apos;re right.

Not going to go change the rest of the file right now.

(In reply to comment #3)
&gt; Comment on attachment 267203 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267203&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:349
&gt; &gt; +IDBError MemoryIDBBackingStore::maybeUpdateKeyGeneratorNumber(const IDBResourceIdentifier&amp; transactionIdentifier, uint64_t objectStoreIdentifier, double newKeyNumber)
&gt; 
&gt; This could also return void.  That would be different than all the other
&gt; IDBBackingStore methods, but this can&apos;t generate an error.

This can generate an error in the upcoming SQLite backend, so no need to make it be void now just to change it again later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148737</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-12 14:03:55 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/194010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148738</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-12 14:07:00 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; Comment on attachment 267203 [details]
&gt; &gt; Patch v1
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=267203&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:366
&gt; &gt; &gt; +    if (newKeyNumber &lt; objectStore-&gt;currentKeyGeneratorValue())
&gt; &gt; &gt; +        return { };
&gt; &gt; &gt; +
&gt; &gt; &gt; +    uint64_t newKeyInteger(newKeyNumber);
&gt; &gt; &gt; +    if (newKeyInteger &lt;= newKeyNumber)
&gt; &gt; &gt; +        ++newKeyInteger;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    ASSERT(newKeyInteger &gt; newKeyNumber);
&gt; &gt; 
&gt; &gt; I think newKeyInteger will always be &lt;= newKeyNumber if newKeyNumber is &gt;=
&gt; &gt; currentKeyGeneratorValue, which is a uint64_t,  which can never be negative.
&gt; 
&gt; I agree. So does the ASSERT!
&gt; 
Wait, I completely misread your comment. Your comment is the opposite of the ASSERT and opposite of the truth.]

newKeyInteger (a uint64) will always be greater-than-or-equal-to newKeyNumber (a double)

That&apos;s what the spec calls for and what the code here does.

The value of newKeyNumber vs currentKeyGeneratorValue is irrelevant on these lines, because the method already bails earlier on if the newKeyNumber is already less than currentKeyGeneratorValue</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267203</attachid>
            <date>2015-12-11 17:03:24 -0800</date>
            <delta_ts>2015-12-11 22:25:40 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10469</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2Y2MwNGM1Li5hMmEzYTU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIwMTUtMTIt
MTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1vZGVybiBJ
REI6IHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWR1cGxpY2F0ZS1rZXlwYXRocy5odG1sIGZhaWxz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjAx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisKKzIwMTUtMTItMTEgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIE1vZGVybiBJREI6IHN0b3JhZ2UvaW5k
ZXhlZGRiL29wdGlvbmFsLWFyZ3VtZW50cy5odG1sIGZhaWxzLgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMTk0CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkZDM0ZTMzLi44NmJjYjFhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC05
NCw3ICs5NCw2IEBAIHN0b3JhZ2UvaW5kZXhlZGRiL3VuYmxvY2tlZC12ZXJzaW9uLWNoYW5nZXMu
aHRtbCBbIFNraXAgXQogIyBJREIgdGVzdHMgd2l0aCB0ZXh0IGZhaWx1cmVzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogc3RvcmFn
ZS9pbmRleGVkZGIvZGF0YWJhc2UtZGVsZXRlcGVuZGluZy1mbGFnLmh0bWwgWyBGYWlsdXJlIF0K
IHN0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2JqZWN0Lmh0bWwgWyBG
YWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWR1cGxpY2F0ZS1rZXlwYXRocy5odG1s
IFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWdhdGVkLW9uLWRlbGV0
ZS5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4taW4t
dXBncmFkZW5lZWRlZC5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJz
aW9uLXBlbmRpbmctdmVyc2lvbi1jaGFuZ2VzLWRlc2NlbmRpbmcuaHRtbCBbIEZhaWx1cmUgXQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGQ1ZmQ5YmUuLmYyNDViOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzOCBA
QAogMjAxNS0xMi0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAg
ICAgTW9kZXJuIElEQjogc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtZHVwbGljYXRlLWtleXBhdGhz
Lmh0bWwgZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTIyMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgKEF0IGxlYXN0IG9uZSBmYWlsaW5nIHRlc3Qgbm93IHBhc3Nlcyku
CisgICAgICAgIAorICAgICAgICBUaGUgc3BlYyBzdGF0ZXMgdGhhdCBpZiBhbiBvYmplY3Qgc3Rv
cmUgdXNlcyBhIGtleSBnZW5lcmF0b3IsIGFuZCB0aGVuIGEgcmVjb3JkIGlzIHN0b3JlZCB3aG9z
ZQorICAgICAgICBrZXkgd2FzIGFuIGV4cGxpY2l0bHkgc2V0IG51bWJlciwgdGhlbiB0aGUga2V5
IGdlbmVyYXRvciB2YWx1ZSBzaG91bGQgYmUgYnVtcGVkIHRvIHRoZSBuZXh0CisgICAgICAgIGlu
dGVnZXIgaGlnaGVyIHRoYW4gdGhlIGV4cGxpY2l0IG51bWJlci4KKyAgICAgICAgCisgICAgICAg
IFdlIGRpZG4ndCBkbyB0aGF0LgorICAgICAgICAKKyAgICAgICAgTm93IHdlIGRvLgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmg6IEFkZCBhbiAiT3ZlcndyaXRlRm9y
Q3Vyc29yIiBvcHRpb24gZm9yIG92ZXJ3cml0ZSBtb2RlLgorICAgICAgICAKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OnB1dEZvckN1cnNvclVwZGF0ZSk6
IFVzZSB0aGUgIk92ZXJ3cml0ZUZvckN1cnNvciIgbW9kZS4KKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6IEFkZCBt
YXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JO
dW1iZXIpOiBJZiB0aGUgbnVtYmVyIHZhbHVlCisgICAgICAgICAgZnJvbSB0aGUgcHJvdmlkZWQg
a2V5IHNob3VsZCBidW1wIHRoZSBrZXkgZ2VuZXJhdG9yIHZhbHVlLCBkbyBzbyBub3cuCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZv
cm1QdXRPckFkZCk6IEFmdGVyIHN1Y2Nlc3NmdWxseSBhZGRpbmcgdGhlIG5ldyByZWNvcmQsCisg
ICAgICAgICAgcG9zc2libHkgYnVtcCB0aGUga2V5IGdlbmVyYXRvciB2YWx1ZS4KKworMjAxNS0x
Mi0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW9kZXJu
IElEQjogc3RvcmFnZS9pbmRleGVkZGIvb3B0aW9uYWwtYXJndW1lbnRzLmh0bWwgZmFpbHMuCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxOTQKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaAppbmRleCBhNWU1
MzhjLi4zNWFhZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JbmRleGVkREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRl
eGVkREIuaApAQCAtNzksNiArNzksNyBAQCBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsKIAogZW51
bSBjbGFzcyBPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgewogICAgIE92ZXJ3cml0ZSwKKyAgICBP
dmVyd3JpdGVGb3JDdXJzb3IsCiAgICAgTm9PdmVyd3JpdGUsCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RT
dG9yZUltcGwuY3BwCmluZGV4IDJmMGMxMDUuLjlhMTJlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9y
ZUltcGwuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpwdXQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmEKIAog
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXRGb3JDdXJzb3JVcGRhdGUoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEpTQzo6SlNWYWx1ZSBrZXks
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7Ci0gICAgcmV0dXJuIHB1dE9yQWRkKHN0
YXRlLCB2YWx1ZSwgc2NyaXB0VmFsdWVUb0lEQktleShzdGF0ZSwga2V5KSwgSW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZSwgSW5saW5lS2V5Q2hlY2s6OkRvTm90
UGVyZm9ybSwgZWMpOworICAgIHJldHVybiBwdXRPckFkZChzdGF0ZSwgdmFsdWUsIHNjcmlwdFZh
bHVlVG9JREJLZXkoc3RhdGUsIGtleSksIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlOjpPdmVyd3JpdGVGb3JDdXJzb3IsIElubGluZUtleUNoZWNrOjpEb05vdFBlcmZvcm0sIGVj
KTsKIH0KIAogUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXRPckFkZChKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPElEQktleT4ga2V5
LCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBJbmxp
bmVLZXlDaGVjayBpbmxpbmVLZXlDaGVjaywgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJCYWNraW5nU3RvcmUuaAppbmRleCAyZThkN2JlLi42ODUwNmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9y
ZS5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldElu
ZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYs
IElEQkdldFJlc3VsdCYgb3V0VmFsdWUpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldENv
dW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgdWludDY0X3QmIG91dENvdW50KSA9IDA7CiAgICAgdmly
dHVhbCBJREJFcnJvciBnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCYga2V5TnVtYmVyKSA9IDA7CisgICAgdmlydHVhbCBJREJFcnJvciBtYXliZVVw
ZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBkb3VibGUg
bmV3S2V5TnVtYmVyKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJD
dXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKICAgICB2aXJ0dWFsIElE
QkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRp
ZmllciwgY29uc3QgSURCS2V5RGF0YSYsIHVpbnQzMl90IGNvdW50LCBJREJHZXRSZXN1bHQmIG91
dFJlc3VsdCkgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
YTVkMjgwZC4uNWM3NzBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTM0Niw2ICszNDYsMzAgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZW5lcmF0
ZUtleU51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICByZXR1cm4gSURC
RXJyb3IoKTsKIH0KIAorSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0
ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBkb3VibGUgbmV3
S2V5TnVtYmVyKQoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6
Om1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyIik7CisgICAgQVNTRVJUKG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1f
dHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOworICAgIEFTU0VS
VF9VTlVTRUQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNh
Y3Rpb25JZGVudGlmaWVyKS0+aXNXcml0aW5nKCkpOworCisgICAgTWVtb3J5T2JqZWN0U3RvcmUq
IG9iamVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuZ2V0KG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0U3RvcmUpOworCisgICAgaWYg
KG5ld0tleU51bWJlciA8IG9iamVjdFN0b3JlLT5jdXJyZW50S2V5R2VuZXJhdG9yVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHVpbnQ2NF90IG5ld0tleUludGVnZXIobmV3S2V5
TnVtYmVyKTsKKyAgICBpZiAobmV3S2V5SW50ZWdlciA8PSBuZXdLZXlOdW1iZXIpCisgICAgICAg
ICsrbmV3S2V5SW50ZWdlcjsKKworICAgIEFTU0VSVChuZXdLZXlJbnRlZ2VyID4gbmV3S2V5TnVt
YmVyKTsKKworICAgIG9iamVjdFN0b3JlLT5zZXRLZXlHZW5lcmF0b3JWYWx1ZShuZXdLZXlJbnRl
Z2VyKTsKKworICAgIHJldHVybiBJREJFcnJvcigpOworfQorCiBJREJFcnJvciBNZW1vcnlJREJC
YWNraW5nU3RvcmU6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8sIElEQkdldFJlc3Vs
dCYgb3V0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SURCQmFja2luZ1N0b3Jl
OjpvcGVuQ3Vyc29yIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5kZXggMGVjNTc0
My4uMzAwZGQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAtNjQsNiArNjQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRJbmRleFJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6
SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJREJHZXRSZXN1bHQmIG91
dFZhbHVlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldENvdW50KGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiwgdWludDY0X3QmIG91dENvdW50KSBvdmVycmlkZSBmaW5hbDsKICAg
ICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
SURCRXJyb3IgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgZG91YmxlIG5ld0tleU51bWJlcikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVh
bCBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRS
ZXN1bHQpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgaXRlcmF0ZUN1cnNv
cihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJLZXlE
YXRhJiwgdWludDMyX3QgY291bnQsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBvdmVycmlkZSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggZTc1NmU3NS4uNGFjOGRkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC01OTksNiArNTk5LDEzIEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbnN0IElEQlJlCiAgICAgfQogCiAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRk
UmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2Vk
S2V5LCBpbmplY3RlZFJlY29yZFZhbHVlLmRhdGEoKSA/IGluamVjdGVkUmVjb3JkVmFsdWUgOiBv
cmlnaW5hbFJlY29yZFZhbHVlKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAg
IG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50
aWZpZXIsIGVycm9yLCB1c2VkS2V5KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAob3ZlcndyaXRlTW9kZSAhPSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTo6
T3ZlcndyaXRlRm9yQ3Vyc29yICYmIG9iamVjdFN0b3JlSW5mby0+YXV0b0luY3JlbWVudCgpICYm
IGtleURhdGEudHlwZSgpID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyKQorICAgICAgICBl
cnJvciA9IG1fYmFja2luZ1N0b3JlLT5tYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcih0cmFu
c2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5RGF0YS5udW1iZXIo
KSk7CiAKICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1QdXRPckFkZCwgY2Fs
bGJhY2tJZGVudGlmaWVyLCBlcnJvciwgdXNlZEtleSkpOwogfQo=
</data>
<flag name="review"
          id="292263"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="292264"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>