<?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>60623</bug_id>
          
          <creation_ts>2011-05-11 06:34:13 -0700</creation_ts>
          <short_desc>IndexedDB: Fix integer comparison bug in LevelDB coding routines</short_desc>
          <delta_ts>2011-05-13 06:30:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>andreip</cc>
    
    <cc>dgrogan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401936</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-11 06:34:13 -0700</bug_when>
    <thetext>IndexedDB: Fix integer comparison bug in LevelDB coding routines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401939</commentid>
    <comment_count>1</comment_count>
      <attachid>93114</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-11 06:39:00 -0700</bug_when>
    <thetext>Created attachment 93114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402162</commentid>
    <comment_count>2</comment_count>
      <attachid>93114</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-05-11 12:28:40 -0700</bug_when>
    <thetext>Comment on attachment 93114
Patch

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

&gt; Source/WebCore/storage/IDBLevelDBCoding.cpp:-663
&gt; -        return m_databaseId - other.m_databaseId;

What bad things were happening with these subtractions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402772</commentid>
    <comment_count>3</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-12 03:33:26 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 93114 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93114&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/IDBLevelDBCoding.cpp:-663
&gt; &gt; -        return m_databaseId - other.m_databaseId;
&gt; 
&gt; What bad things were happening with these subtractions?

The subtractions work fine, the trouble is when the result is truncated from int64_t to int.

In the case that Greg found, one number was 1 and the other INT64_MAX. The difference is some large negative number, but after truncation it came out as &quot;2&quot;, a.k.a. fail. This caused us to fail to read back object store meta-data from a database.

Not sure why I ever thought that code would work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403495</commentid>
    <comment_count>4</comment_count>
      <attachid>93114</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-05-13 05:47:00 -0700</bug_when>
    <thetext>Comment on attachment 93114
Patch

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

&gt; Source/WebCore/storage/IDBLevelDBCoding.cpp:202
&gt; +static int compareInts(int64_t a, int64_t b)

Does this end up getting inlined still? How perf-sensitive are the callers?

&gt; Source/WebCore/storage/IDBLevelDBCoding.cpp:-1049
&gt; -    ret.append(encodeByte(kSchemaVersionTypeByte));

This looks like a stray diff. If it is intentional, please explain in the ChangeLog.

&gt; Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp:38
&gt; +// FIXME: We shouldn&apos;t need to rely on these macros.

This is also in IDBLevelDBCoding.cpp and IDBLevelDBBackingStore.cpp. Would be nice to consolidate at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403505</commentid>
    <comment_count>5</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-13 06:25:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 93114 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93114&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/IDBLevelDBCoding.cpp:202
&gt; &gt; +static int compareInts(int64_t a, int64_t b)
&gt; 
&gt; Does this end up getting inlined still? How perf-sensitive are the callers?
Yes, it gets inlined and I think the asm looks decent.

&gt; 
&gt; &gt; Source/WebCore/storage/IDBLevelDBCoding.cpp:-1049
&gt; &gt; -    ret.append(encodeByte(kSchemaVersionTypeByte));
&gt; 
&gt; This looks like a stray diff. If it is intentional, please explain in the ChangeLog.
Will do. The unit test uncovered this; that line shouldn&apos;t have been there.

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp:38
&gt; &gt; +// FIXME: We shouldn&apos;t need to rely on these macros.
&gt; 
&gt; This is also in IDBLevelDBCoding.cpp and IDBLevelDBBackingStore.cpp. Would be nice to consolidate at some point.
I know, it&apos;s definitely on my list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403507</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-13 06:30:22 -0700</bug_when>
    <thetext>Committed r86425: &lt;http://trac.webkit.org/changeset/86425&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93114</attachid>
            <date>2011-05-11 06:39:00 -0700</date>
            <delta_ts>2011-05-13 05:47:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60623-20110511143858.patch</filename>
            <type>text/plain</type>
            <size>11020</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYwODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYTExOGI2MDlmMmYxOGI1
ZmViNDI5OGEyZTk0YzhhOTJiOTEwMjFjLi4xYmMwYmU2ZjIwYmJmNDM2NjQ3ZjM0YzhiZjFjYjVm
YzNlNTIwNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDUtMTEgIEhhbnMg
V2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IEZpeCBpbnRlZ2VyIGNvbXBhcmlzb24g
YnVnIGluIExldmVsREIgY29kaW5nIHJvdXRpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDYyMworCisgICAgICAgIEZpeCB0aGUgY29kZSBmb3Ig
Y29tcGFyaW5nIHR3byBpbnQ2NF90IHZhcmlhYmxlcy4KKworICAgICAgICBWZXJ5IGhhcmQgdG8g
Y292ZXIgd2l0aCBsYXlvdXQgdGVzdHM7IGNvdmVyZWQgYnkgdW5pdCB0ZXN0LgorCisgICAgICAg
ICogc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkxl
dmVsREJDb2Rpbmc6OmNvbXBhcmVJbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJD
b2Rpbmc6OktleVByZWZpeDo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
Q29kaW5nOjpEYXRhYmFzZUZyZWVMaXN0S2V5Ojpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmNvbXBhcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhNZXRhRGF0YUtleTo6Y29tcGFy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpPYmplY3RTdG9yZUZyZWVM
aXN0S2V5Ojpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Oklu
ZGV4RnJlZUxpc3RLZXk6OmNvbXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNv
ZGluZzo6T2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6OkluZGV4TmFtZXNLZXk6OmNvbXBhcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5Ojpjb21wYXJlKToKKwogMjAxMS0wNS0w
OSAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJMZXZlbERCQ29kaW5nLmNwcAppbmRleCBlZTAyYWMwNzBlOGMwM2RjNTkxZTk2ZTUzOGFhMTIw
ZjA4MGM1Mzk2Li5mNzcyMWYyZmZmZmMyZDEyZmRjY2QxYzJlYWMyNjE5MzgzMjU1Y2RlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTE5OSw2ICsx
OTksMTkgQEAgaW50NjRfdCBkZWNvZGVJbnQoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIq
IGVuZCkKICAgICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGNvbXBhcmVJbnRzKGludDY0
X3QgYSwgaW50NjRfdCBiKQoreworICAgIEFTU0VSVChhID49IDApOworICAgIEFTU0VSVChiID49
IDApOworCisgICAgaW50NjRfdCBkaWZmID0gYSAtIGI7CisgICAgaWYgKGRpZmYgPCAwKQorICAg
ICAgICByZXR1cm4gLTE7CisgICAgaWYgKGRpZmYgPiAwKQorICAgICAgICByZXR1cm4gMTsKKyAg
ICByZXR1cm4gMDsKK30KKwogVmVjdG9yPGNoYXI+IGVuY29kZVZhckludChpbnQ2NF90IG4pCiB7
CiAgICAgVmVjdG9yPGNoYXI+IHJldDsgLy8gRklYTUU6IFNpemUgdGhpcyBhdCBjcmVhdGlvbi4K
QEAgLTY2MCwxMSArNjczLDExIEBAIGludCBLZXlQcmVmaXg6OmNvbXBhcmUoY29uc3QgS2V5UHJl
Zml4JiBvdGhlcikgY29uc3QKICAgICBBU1NFUlQobV9pbmRleElkICE9IGtJbnZhbGlkSWQpOwog
CiAgICAgaWYgKG1fZGF0YWJhc2VJZCAhPSBvdGhlci5tX2RhdGFiYXNlSWQpCi0gICAgICAgIHJl
dHVybiBtX2RhdGFiYXNlSWQgLSBvdGhlci5tX2RhdGFiYXNlSWQ7CisgICAgICAgIHJldHVybiBj
b21wYXJlSW50cyhtX2RhdGFiYXNlSWQsIG90aGVyLm1fZGF0YWJhc2VJZCk7CiAgICAgaWYgKG1f
b2JqZWN0U3RvcmVJZCAhPSBvdGhlci5tX29iamVjdFN0b3JlSWQpCi0gICAgICAgIHJldHVybiBt
X29iamVjdFN0b3JlSWQgLSBvdGhlci5tX29iamVjdFN0b3JlSWQ7CisgICAgICAgIHJldHVybiBj
b21wYXJlSW50cyhtX29iamVjdFN0b3JlSWQsIG90aGVyLm1fb2JqZWN0U3RvcmVJZCk7CiAgICAg
aWYgKG1faW5kZXhJZCAhPSBvdGhlci5tX2luZGV4SWQpCi0gICAgICAgIHJldHVybiBtX2luZGV4
SWQgLSBvdGhlci5tX2luZGV4SWQ7CisgICAgICAgIHJldHVybiBjb21wYXJlSW50cyhtX2luZGV4
SWQsIG90aGVyLm1faW5kZXhJZCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTc0Niw3ICs3NTks
NyBAQCBpbnQ2NF90IERhdGFiYXNlRnJlZUxpc3RLZXk6OmRhdGFiYXNlSWQoKSBjb25zdAogaW50
IERhdGFiYXNlRnJlZUxpc3RLZXk6OmNvbXBhcmUoY29uc3QgRGF0YWJhc2VGcmVlTGlzdEtleSYg
b3RoZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJZCA+PSAwKTsKLSAgICByZXR1
cm4gbV9kYXRhYmFzZUlkIC0gb3RoZXIubV9kYXRhYmFzZUlkOworICAgIHJldHVybiBjb21wYXJl
SW50cyhtX2RhdGFiYXNlSWQsIG90aGVyLm1fZGF0YWJhc2VJZCk7CiB9CiAKIGNvbnN0IGNoYXIq
IERhdGFiYXNlTmFtZUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBs
aW1pdCwgRGF0YWJhc2VOYW1lS2V5KiByZXN1bHQpCkBAIC04NTAsOCArODYzLDggQEAgaW50IE9i
amVjdFN0b3JlTWV0YURhdGFLZXk6OmNvbXBhcmUoY29uc3QgT2JqZWN0U3RvcmVNZXRhRGF0YUtl
eSYgb3RoZXIpCiB7CiAgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVJZCA+PSAwKTsKICAgICBBU1NF
UlQobV9tZXRhRGF0YVR5cGUgPj0gMCk7Ci0gICAgaWYgKGludCB4ID0gbV9vYmplY3RTdG9yZUlk
IC0gb3RoZXIubV9vYmplY3RTdG9yZUlkKQotICAgICAgICByZXR1cm4geDsgLy8gRklYTUU6IElz
IHRoaXMgY2FzdCBzYWZlPyBJLmUuLCB3aWxsIGl0IHByZXNlcnZlIHRoZSBzaWduPworICAgIGlm
IChpbnQgeCA9IGNvbXBhcmVJbnRzKG1fb2JqZWN0U3RvcmVJZCwgb3RoZXIubV9vYmplY3RTdG9y
ZUlkKSkKKyAgICAgICAgcmV0dXJuIHg7CiAgICAgcmV0dXJuIG1fbWV0YURhdGFUeXBlIC0gb3Ro
ZXIubV9tZXRhRGF0YVR5cGU7CiB9CiAKQEAgLTkwNSw5ICs5MTgsOSBAQCBpbnQgSW5kZXhNZXRh
RGF0YUtleTo6Y29tcGFyZShjb25zdCBJbmRleE1ldGFEYXRhS2V5JiBvdGhlcikKICAgICBBU1NF
UlQobV9vYmplY3RTdG9yZUlkID49IDApOwogICAgIEFTU0VSVChtX2luZGV4SWQgPj0gMCk7CiAK
LSAgICBpZiAoaW50IHggPSBtX29iamVjdFN0b3JlSWQgLSBvdGhlci5tX29iamVjdFN0b3JlSWQp
CisgICAgaWYgKGludCB4ID0gY29tcGFyZUludHMobV9vYmplY3RTdG9yZUlkLCBvdGhlci5tX29i
amVjdFN0b3JlSWQpKQogICAgICAgICByZXR1cm4geDsKLSAgICBpZiAoaW50IHggPSBtX2luZGV4
SWQgLSBvdGhlci5tX2luZGV4SWQpCisgICAgaWYgKGludCB4ID0gY29tcGFyZUludHMobV9pbmRl
eElkLCBvdGhlci5tX2luZGV4SWQpKQogICAgICAgICByZXR1cm4geDsKICAgICByZXR1cm4gbV9t
ZXRhRGF0YVR5cGUgLSBvdGhlci5tX21ldGFEYXRhVHlwZTsKIH0KQEAgLTk2Miw3ICs5NzUsNyBA
QCBpbnQgT2JqZWN0U3RvcmVGcmVlTGlzdEtleTo6Y29tcGFyZShjb25zdCBPYmplY3RTdG9yZUZy
ZWVMaXN0S2V5JiBvdGhlcikKICAgICAvLyBidXQgdGhhdCBjb21wYXJpc29uIHdpbGwgaGF2ZSBi
ZWVuIG1hZGUgZWFybGllci4KICAgICAvLyBXZSBzaG91bGQgcHJvYmFibHkgbWFrZSB0aGlzIG1v
cmUgY2xlYXIsIHRob3VnaC4uLgogICAgIEFTU0VSVChtX29iamVjdFN0b3JlSWQgPj0gMCk7Ci0g
ICAgcmV0dXJuIG1fb2JqZWN0U3RvcmVJZCAtIG90aGVyLm1fb2JqZWN0U3RvcmVJZDsKKyAgICBy
ZXR1cm4gY29tcGFyZUludHMobV9vYmplY3RTdG9yZUlkLCBvdGhlci5tX29iamVjdFN0b3JlSWQp
OwogfQogCiBJbmRleEZyZWVMaXN0S2V5OjpJbmRleEZyZWVMaXN0S2V5KCkKQEAgLTEwMDYsOSAr
MTAxOSw5IEBAIGludCBJbmRleEZyZWVMaXN0S2V5Ojpjb21wYXJlKGNvbnN0IEluZGV4RnJlZUxp
c3RLZXkmIG90aGVyKQogewogICAgIEFTU0VSVChtX29iamVjdFN0b3JlSWQgPj0gMCk7CiAgICAg
QVNTRVJUKG1faW5kZXhJZCA+PSAwKTsKLSAgICBpZiAoaW50IHggPSBtX29iamVjdFN0b3JlSWQg
LSBvdGhlci5tX29iamVjdFN0b3JlSWQpCisgICAgaWYgKGludCB4ID0gY29tcGFyZUludHMobV9v
YmplY3RTdG9yZUlkLCBvdGhlci5tX29iamVjdFN0b3JlSWQpKQogICAgICAgICByZXR1cm4geDsK
LSAgICByZXR1cm4gbV9pbmRleElkIC0gb3RoZXIubV9pbmRleElkOworICAgIHJldHVybiBjb21w
YXJlSW50cyhtX2luZGV4SWQsIG90aGVyLm1faW5kZXhJZCk7CiB9CiAKIGludDY0X3QgSW5kZXhG
cmVlTGlzdEtleTo6b2JqZWN0U3RvcmVJZCgpIGNvbnN0CkBAIC0xMDQ2LDcgKzEwNTksNiBAQCBW
ZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBvYmplYwogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJ
ZCwgMCwgMCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZUJ5dGUoa1NjaGVtYVZlcnNpb25UeXBlQnl0ZSkpOwogICAgIHJldC5h
cHBlbmQoZW5jb2RlQnl0ZShrT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlKSk7CiAgICAgcmV0LmFw
cGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVjdFN0b3JlTmFtZSkpOwogICAgIHJldHVy
biByZXQ7CkBAIC0xMDk4LDcgKzExMTAsNyBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhOYW1lc0tleTo6
ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjbwogaW50
IEluZGV4TmFtZXNLZXk6OmNvbXBhcmUoY29uc3QgSW5kZXhOYW1lc0tleSYgb3RoZXIpCiB7CiAg
ICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVJZCA+PSAwKTsKLSAgICBpZiAoaW50IHggPSBtX29iamVj
dFN0b3JlSWQgLSBvdGhlci5tX29iamVjdFN0b3JlSWQpCisgICAgaWYgKGludCB4ID0gY29tcGFy
ZUludHMobV9vYmplY3RTdG9yZUlkLCBvdGhlci5tX29iamVjdFN0b3JlSWQpKQogICAgICAgICBy
ZXR1cm4geDsKICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShtX2luZGV4TmFtZSwgb3RoZXIu
bV9pbmRleE5hbWUpOwogfQpAQCAtMTI0NCw3ICsxMjU2LDcgQEAgaW50IEluZGV4RGF0YUtleTo6
Y29tcGFyZShjb25zdCBJbmRleERhdGFLZXkmIG90aGVyLCBib29sIGlnbm9yZVNlcXVlbmNlTnVt
YmVyKQogICAgICAgICByZXR1cm4geDsKICAgICBpZiAoaWdub3JlU2VxdWVuY2VOdW1iZXIpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX3NlcXVlbmNlTnVtYmVyIC0gb3RoZXIubV9z
ZXF1ZW5jZU51bWJlcjsKKyAgICByZXR1cm4gY29tcGFyZUludHMobV9zZXF1ZW5jZU51bWJlciwg
b3RoZXIubV9zZXF1ZW5jZU51bWJlcik7CiB9CiAKIGludDY0X3QgSW5kZXhEYXRhS2V5OjpkYXRh
YmFzZUlkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNmExY2I3MDc4Nzlh
OWMxNmRkYjY3ZTAwOTFjZmQ3MjQyYjAzMmRhMy4uNjBiNmMxZmRjMDI2N2MwYTA4ZWNiMzJmYWQ5
YzI1OTVhMzM4NjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMS0wNS0xMSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQjogRml4
IGludGVnZXIgY29tcGFyaXNvbiBidWcgaW4gTGV2ZWxEQiBjb2Rpbmcgcm91dGluZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNjIzCisKKyAgICAg
ICAgVW5pdCB0ZXN0IGZvciBjb21wYXJpc29uIG9mIGVuY29kZWQga2V5cy4KKworICAgICAgICAq
IHRlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcDoKKyAgICAgICAgKElEQkxldmVsREJDb2Rp
bmc6OlRFU1QpOgorCiAyMDExLTA1LTA5ICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwCmluZGV4IDQwY2My
YzNlODJhYjBhNWQ3MDA1ZGIzZDkyYTBlMjc5NTIzM2UwMmIuLjhkMWI0MWJkODMxODQ5YzUzYjJl
MTU4NjY2NTUyZjY0YzYzM2EyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwCkBAIC0zMCw5ICszMCwxNSBAQAogI2lm
IEVOQUJMRShMRVZFTERCKQogCiAjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiTGV2ZWxE
QlNsaWNlLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKKyNpZm5kZWYgSU5UNjRfTUFYCisvLyBGSVhNRTogV2Ugc2hvdWxkbid0IG5lZWQgdG8g
cmVseSBvbiB0aGVzZSBtYWNyb3MuCisjZGVmaW5lIElOVDY0X01BWCAweDdmZmZmZmZmZmZmZmZm
ZmZMTAorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNl
IElEQkxldmVsREJDb2Rpbmc7CiAKQEAgLTIwNCw3ICsyMTAsNyBAQCBURVNUKElEQkxldmVsREJD
b2RpbmdUZXN0LCBEZWNvZGVTdHJpbmdXaXRoTGVuZ3RoKQogCiAgICAgY29uc3QgaW50IGtMb25n
U3RyaW5nTGVuID0gMTIzNDsKICAgICBVQ2hhciBsb25nU3RyaW5nW2tMb25nU3RyaW5nTGVuICsg
MV07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrTG9uZ1N0cmluZ0xlbjsgaSsrKQorICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwga0xvbmdTdHJpbmdMZW47ICsraSkKICAgICAgICAgbG9uZ1N0cmlu
Z1tpXSA9IGk7CiAgICAgbG9uZ1N0cmluZ1trTG9uZ1N0cmluZ0xlbl0gPSAwOwogCkBAIC0zMDIs
NyArMzA4LDcgQEAgVEVTVChJREJMZXZlbERCQ29kaW5nVGVzdCwgRXh0cmFjdEFuZENvbXBhcmVJ
REJLZXlzKQogICAgIGtleXMuYXBwZW5kKElEQktleTo6Y3JlYXRlU3RyaW5nKCJiIikpOwogICAg
IGtleXMuYXBwZW5kKElEQktleTo6Y3JlYXRlU3RyaW5nKCJiYWFhIikpOwogCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKSAtIDE7IGkrKykgeworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwga2V5cy5zaXplKCkgLSAxOyArK2kpIHsKICAgICAgICAgUmVmUHRyPElEQktl
eT4ga2V5QSA9IGtleXNbaV07CiAgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleUIgPSBrZXlzW2kg
KyAxXTsKIApAQCAtMzMzLDYgKzMzOSw2MSBAQCBURVNUKElEQkxldmVsREJDb2RpbmdUZXN0LCBF
eHRyYWN0QW5kQ29tcGFyZUlEQktleXMpCiAgICAgfQogfQogCitURVNUKElEQkxldmVsREJDb2Rp
bmdUZXN0LCBDb21wYXJpc29uVGVzdCkKK3sKKyAgICBWZWN0b3I8VmVjdG9yPGNoYXI+ID4ga2V5
czsKKyAgICBrZXlzLmFwcGVuZChTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKSk7CisgICAga2V5
cy5hcHBlbmQoTWF4RGF0YWJhc2VJZEtleTo6ZW5jb2RlKCkpOworICAgIGtleXMuYXBwZW5kKERh
dGFiYXNlRnJlZUxpc3RLZXk6OmVuY29kZSgwKSk7CisgICAga2V5cy5hcHBlbmQoRGF0YWJhc2VG
cmVlTGlzdEtleTo6ZW5jb2RlKElOVDY0X01BWCkpOworICAgIGtleXMuYXBwZW5kKERhdGFiYXNl
TmFtZUtleTo6ZW5jb2RlKCIiLCAiIikpOworICAgIGtleXMuYXBwZW5kKERhdGFiYXNlTmFtZUtl
eTo6ZW5jb2RlKCIiLCAiYSIpKTsKKyAgICBrZXlzLmFwcGVuZChEYXRhYmFzZU5hbWVLZXk6OmVu
Y29kZSgiYSIsICJhIikpOworICAgIGtleXMuYXBwZW5kKERhdGFiYXNlTWV0YURhdGFLZXk6OmVu
Y29kZSgxLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprT3JpZ2luTmFtZSkpOworICAgIGtleXMuYXBw
ZW5kKE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZSgxLCAxLCAwKSk7CisgICAga2V5cy5h
cHBlbmQoT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKDEsIElOVDY0X01BWCwgMCkpOwor
ICAgIGtleXMuYXBwZW5kKEluZGV4TWV0YURhdGFLZXk6OmVuY29kZSgxLCAxLCAzMCwgMCkpOwor
ICAgIGtleXMuYXBwZW5kKEluZGV4TWV0YURhdGFLZXk6OmVuY29kZSgxLCAxLCBJTlQ2NF9NQVgs
IDApKTsKKyAgICBrZXlzLmFwcGVuZChPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoMSwg
MSkpOworICAgIGtleXMuYXBwZW5kKE9iamVjdFN0b3JlRnJlZUxpc3RLZXk6OmVuY29kZSgxLCBJ
TlQ2NF9NQVgpKTsKKyAgICBrZXlzLmFwcGVuZChJbmRleEZyZWVMaXN0S2V5OjplbmNvZGUoMSwg
MSwgMzApKTsKKyAgICBrZXlzLmFwcGVuZChJbmRleEZyZWVMaXN0S2V5OjplbmNvZGUoMSwgMSwg
SU5UNjRfTUFYKSk7CisgICAga2V5cy5hcHBlbmQoSW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlKDEs
IElOVDY0X01BWCwgMzApKTsKKyAgICBrZXlzLmFwcGVuZChJbmRleEZyZWVMaXN0S2V5OjplbmNv
ZGUoMSwgSU5UNjRfTUFYLCBJTlQ2NF9NQVgpKTsKKyAgICBrZXlzLmFwcGVuZChPYmplY3RTdG9y
ZU5hbWVzS2V5OjplbmNvZGUoMSwgIiIpKTsKKyAgICBrZXlzLmFwcGVuZChPYmplY3RTdG9yZU5h
bWVzS2V5OjplbmNvZGUoMSwgImEiKSk7CisgICAga2V5cy5hcHBlbmQoSW5kZXhOYW1lc0tleTo6
ZW5jb2RlKDEsIDEsICIiKSk7CisgICAga2V5cy5hcHBlbmQoSW5kZXhOYW1lc0tleTo6ZW5jb2Rl
KDEsIDEsICJhIikpOworICAgIGtleXMuYXBwZW5kKEluZGV4TmFtZXNLZXk6OmVuY29kZSgxLCBJ
TlQ2NF9NQVgsICJhIikpOworICAgIGtleXMuYXBwZW5kKE9iamVjdFN0b3JlRGF0YUtleTo6ZW5j
b2RlKDEsIDEsIG1pbklEQktleSgpKSk7CisgICAga2V5cy5hcHBlbmQoT2JqZWN0U3RvcmVEYXRh
S2V5OjplbmNvZGUoMSwgMSwgbWF4SURCS2V5KCkpKTsKKyAgICBrZXlzLmFwcGVuZChFeGlzdHNF
bnRyeUtleTo6ZW5jb2RlKDEsIDEsIG1pbklEQktleSgpKSk7CisgICAga2V5cy5hcHBlbmQoRXhp
c3RzRW50cnlLZXk6OmVuY29kZSgxLCAxLCBtYXhJREJLZXkoKSkpOworICAgIGtleXMuYXBwZW5k
KEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDEsIDMwLCBtaW5JREJLZXkoKSwgMCkpOworICAgIGtl
eXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2RlKDEsIDEsIDMwLCBtaW5JREJLZXkoKSwgSU5U
NjRfTUFYKSk7CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNvZGUoMSwgMSwgMzAs
IG1heElEQktleSgpLCAwKSk7CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNvZGUo
MSwgMSwgMzAsIG1heElEQktleSgpLCBJTlQ2NF9NQVgpKTsKKyAgICBrZXlzLmFwcGVuZChJbmRl
eERhdGFLZXk6OmVuY29kZSgxLCAxLCAzMSwgbWluSURCS2V5KCksIDApKTsKKyAgICBrZXlzLmFw
cGVuZChJbmRleERhdGFLZXk6OmVuY29kZSgxLCAyLCAzMCwgbWluSURCS2V5KCksIDApKTsKKyAg
ICBrZXlzLmFwcGVuZChJbmRleERhdGFLZXk6OmVuY29kZU1heEtleSgxLCAyKSk7CisgICAga2V5
cy5hcHBlbmQoT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoMSwgSU5UNjRfTUFYLCBtaW5JREJL
ZXkoKSkpOworICAgIGtleXMuYXBwZW5kKEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoMSwgSU5UNjRf
TUFYLCBtYXhJREJLZXkoKSkpOworICAgIGtleXMuYXBwZW5kKEluZGV4RGF0YUtleTo6ZW5jb2Rl
TWF4S2V5KDEsIElOVDY0X01BWCkpOworICAgIGtleXMuYXBwZW5kKERhdGFiYXNlTWV0YURhdGFL
ZXk6OmVuY29kZShJTlQ2NF9NQVgsIERhdGFiYXNlTWV0YURhdGFLZXk6OmtPcmlnaW5OYW1lKSk7
CisgICAga2V5cy5hcHBlbmQoSW5kZXhEYXRhS2V5OjplbmNvZGVNYXhLZXkoSU5UNjRfTUFYLCBJ
TlQ2NF9NQVgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsr
aSkgeworICAgICAgICBjb25zdCBMZXZlbERCU2xpY2Uga2V5QShrZXlzW2ldKTsKKyAgICAgICAg
RVhQRUNUX0VRKGNvbXBhcmUoa2V5QSwga2V5QSksIDApOworCisgICAgICAgIGZvciAoc2l6ZV90
IGogPSBpICsgMTsgaiA8IGtleXMuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgIGNvbnN0IExl
dmVsREJTbGljZSBrZXlCKGtleXNbal0pOworICAgICAgICAgICAgRVhQRUNUX0xUKGNvbXBhcmUo
a2V5QSwga2V5QiksIDApOworICAgICAgICAgICAgRVhQRUNUX0dUKGNvbXBhcmUoa2V5Qiwga2V5
QSksIDApOworICAgICAgICB9CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKExFVkVMREIpCg==
</data>
<flag name="review"
          id="86219"
          type_id="1"
          status="+"
          setter="tonyg"
    />
    <flag name="commit-queue"
          id="86590"
          type_id="3"
          status="-"
          setter="tonyg"
    />
          </attachment>
      

    </bug>

</bugzilla>