<?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>115660</bug_id>
          
          <creation_ts>2013-05-06 10:45:50 -0700</creation_ts>
          <short_desc>Write storage changes to disk</short_desc>
          <delta_ts>2013-05-06 11:09:20 -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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>885115</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-06 10:45:50 -0700</bug_when>
    <thetext>Write storage changes to disk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885116</commentid>
    <comment_count>1</comment_count>
      <attachid>200721</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-06 10:47:59 -0700</bug_when>
    <thetext>Created attachment 200721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885123</commentid>
    <comment_count>2</comment_count>
      <attachid>200721</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-06 11:02:24 -0700</bug_when>
    <thetext>Comment on attachment 200721
Patch

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

r=me

&gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:40
&gt; +static const double databaseUpdateInterval = 1.0;

I&apos;d call this &apos;databaseUpdateIntervalInSeconds&apos;

&gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:217
&gt; +        for (size_t i = 0; i &lt; maximumItemsToUpdate; ++i) {

&apos;i&apos; should be &apos;int&apos; here to match maximumItemsToUpdate and HashMap::size().

&gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:248
&gt; +    for (HashMap&lt;String, String&gt;::const_iterator it = changedItems.begin(), end = changedItems.end(); it != end; ++it) {

auto?

&gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:252
&gt; +        statement.bindText(1, it-&gt;key);

Missing error handling. Is this intentional?

&gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:256
&gt; +            statement.bindBlob(2, it-&gt;value);

Missing error handling. Is this intentional?

&gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:264
&gt; +        statement.reset();

Missing error handling. Is this intentional?

&gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.h:78
&gt; +    HashMap&lt;String, String&gt; m_changedItems;
&gt; +    bool m_didScheduleDatabaseUpdate;

The order of these members makes me twitch.

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:160
&gt; +    if (m_localStorageDatabase)
&gt; +        m_localStorageDatabase-&gt;setItem(key, value);

Should we still be dispatching events if !m_localStorageDatabase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885128</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-06 11:07:54 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:248
&gt; &gt; +    for (HashMap&lt;String, String&gt;::const_iterator it = changedItems.begin(), end = changedItems.end(); it != end; ++it) {
&gt; 
&gt; auto?

Yes.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:252
&gt; &gt; +        statement.bindText(1, it-&gt;key);
&gt; 
&gt; Missing error handling. Is this intentional?

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:256
&gt; &gt; +            statement.bindBlob(2, it-&gt;value);
&gt; 
&gt; Missing error handling. Is this intentional?

The various bind functions will only fail if the column index is out of range or if malloc fails - I don’t think we need to care about those conditions.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Storage/LocalStorageDatabase.cpp:264
&gt; &gt; +        statement.reset();
&gt; 
&gt; Missing error handling. Is this intentional?

Reset will only return an error if the previous step returned an error.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:160
&gt; &gt; +    if (m_localStorageDatabase)
&gt; &gt; +        m_localStorageDatabase-&gt;setItem(key, value);
&gt; 
&gt; Should we still be dispatching events if !m_localStorageDatabase?

Yup. (For session storage).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885131</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-06 11:09:20 -0700</bug_when>
    <thetext>Committed r149615: &lt;http://trac.webkit.org/changeset/149615&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200721</attachid>
            <date>2013-05-06 10:47:59 -0700</date>
            <delta_ts>2013-05-06 11:02:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115660-20130506104706.patch</filename>
            <type>text/plain</type>
            <size>10764</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZhODE5MjU5YjMwMzIy
YmE1Njk2N2JjNjEwMWIwNDRlOWExY2NlZi4uMzk3ODJmY2E1MmUxMmE5YmYzMmFjMmRkODEwNjkx
YmE2NjYzYjU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA1LTA2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgV3JpdGUgc3RvcmFn
ZSBjaGFuZ2VzIHRvIGRpc2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEV4cG9ydCBzeW1ib2xzIG5lZWRlZCBieSBXZWJLaXQyLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisKIDIwMTMtMDUtMDYgIFbDrWN0b3IgTWFudWVsIErDoXF1ZXogTGVh
bCAgPHZqYXF1ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbdGV4bWFwXSBkcmF3IGNvbnRlbnQg
aWYgZ3JhcGhpY3MgbGF5ZXIgZGlzcGxheXMgYSB2aWRlbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGVhZmZkM2Nl
N2FmM2YxMWVmZjJiNmJmOTc5MGY5ZDQyMDA4NzBkZjIuLjRmZmNhYzcyMzE3OGYyZDA4NjliZjc1
NjkwZmFjMmEyZjdkYjY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMy0wNS0w
NiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFdyaXRl
IHN0b3JhZ2UgY2hhbmdlcyB0byBkaXNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTU2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OkxvY2FsU3RvcmFn
ZURhdGFiYXNlKToKKyAgICAgICAgSW5pdGlhbGl6ZSBuZXcgbWVtYmVyIHZhcmlhYmxlcy4KKwor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6dHJ5VG9PcGVuRGF0YWJhc2Up
OgorICAgICAgICBEaXNhYmxlIGRhdGFiYXNlIHRocmVhZGluZyBjaGVja3MuCisKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OmltcG9ydEl0ZW1zKToKKyAgICAgICAgT25s
eSBpbXBvcnQgdGhlIGl0ZW1zIG9uY2UuCisKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdl
RGF0YWJhc2U6OnNldEl0ZW0pOgorICAgICAgICBDYWxsIGl0ZW1EaWRDaGFuZ2UuCisKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Oml0ZW1EaWRDaGFuZ2UpOgorICAgICAg
ICBSZWNvcmQgdGhlIGNoYW5nZSBhbmQgc2NoZWR1bGUgYSBkYXRhYmFzZSB1cGRhdGUuCisKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRh
dGUpOgorICAgICAgICBVc2UgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkgdG8gc2NoZWR1
bGUgYSBkYXRiYXNlIHVwZGF0ZS4KKworICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRh
YmFzZTo6dXBkYXRlRGF0YWJhc2UpOgorICAgICAgICBXcml0ZSBjaGFuZ2VzIHRvIGRpc2suIElm
IHRoZXJlIGFyZSBtb3JlIHRoYW4gMTAwIHBlbmRpbmcgaXRlbXMsIG9ubHkgd3JpdGUgdGhlIGZp
cnN0IDEwMCBhbmQgdGhlbiBzY2hlZHVsZQorICAgICAgICBhbm90aGVyIGRhdGFiYXNlIHVwZGF0
ZSBmb3IgdGhlIHJlbWFpbmluZyBpdGVtcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlLmg6CisgICAgICAgIEFkZCBuZXcgbWVtYmVyIHZhcmlhYmxl
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpzZXRJdGVtKToKKyAg
ICAgICAgQ2FsbCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2V0SXRlbS4KKwogMjAxMy0wNS0wNiAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFr
ZSB0aGUgV2ViQmF0dGVyeU1hbmFnZXJQcm94eSBhIHN1cHBsZW1lbnQgdG8gdGhlIFdlYkNvbnRl
eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZjYyNjVhMjIxZjg3YmQxOWU4ZmZmNDE3ZjhiMGY1
ZjUxMjY5NTI4My4uYWE2ODY3NTY1YzM3NzRjYmJmMzZhMTU2YTkzZGNiMmNiMzlhOTI1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KQEAgLTQ3MCw3ICs0NzAsMTAgQEAgX19aTjdXZWJDb3JlMTVTUUxp
dGVTdGF0ZW1lbnQxM2dldENvbHVtblRleHRFaQogX19aTjdXZWJDb3JlMTVTUUxpdGVTdGF0ZW1l
bnQyMWdldENvbHVtbkJsb2JBc1N0cmluZ0VpCiBfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVu
dDIyaXNDb2x1bW5EZWNsYXJlZEFzQmxvYkVpCiBfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVu
dDRzdGVwRXYKK19fWk43V2ViQ29yZTE1U1FMaXRlU3RhdGVtZW50NXJlc2V0RXYKIF9fWk43V2Vi
Q29yZTE1U1FMaXRlU3RhdGVtZW50N3ByZXBhcmVFdgorX19aTjdXZWJDb3JlMTVTUUxpdGVTdGF0
ZW1lbnQ4YmluZEJsb2JFaVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTVTUUxpdGVTdGF0
ZW1lbnQ4YmluZFRleHRFaVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTVTUUxpdGVTdGF0
ZW1lbnRDMUVSTlNfMTRTUUxpdGVEYXRhYmFzZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTE1U1FMaXRlU3RhdGVtZW50RDFFdgogX19aTjdXZWJDb3JlMTVTY3JvbGxBbGlnbm1lbnQxN2Fs
aWduQ2VudGVyQWx3YXlzRQpAQCAtMjI1Myw2ICsyMjU2LDcgQEAgX3drU2V0TGF5ZXJDb250ZW50
c1NjYWxlCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKE5ERUJVRykKK19fWk43V2ViQ29yZTE0U1FM
aXRlRGF0YWJhc2UyMmRpc2FibGVUaHJlYWRpbmdDaGVja3NFdgogX19aTks3V2ViQ29yZTdFbGVt
ZW50MjZmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZEVSS05TXzEzUXVhbGlmaWVkTmFtZUUKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggZjI3ZjE2YTgzOGM2NTU2ZTVmNjUwMjA0MTNl
MTk5MTQ3MTQ3OGVlZC4uOTM0MGQ2MzRiNzdlNjYxZGI5Yzk1YTI5ODk0NTBkMmJlYTc1M2NkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMzcsNiArMzcsMTAgQEAKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdCBkb3VibGUgZGF0YWJhc2VVcGRhdGVJbnRlcnZhbCA9
IDEuMDsKKworc3RhdGljIGNvbnN0IGludCBtYXhpbXVtSXRlbXNUb1VwZGF0ZSA9IDEwMDsKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhc3NSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2U+IExv
Y2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUZpbGVuYW1l
LCBQYXNzUmVmUHRyPFdvcmtRdWV1ZT4gcXVldWUpCkBAIC00OCw2ICs1Miw4IEBAIExvY2FsU3Rv
cmFnZURhdGFiYXNlOjpMb2NhbFN0b3JhZ2VEYXRhYmFzZShjb25zdCBTdHJpbmcmIGRhdGFiYXNl
RmlsZW5hbWUsIFBhc3NSCiAgICAgOiBtX2RhdGFiYXNlRmlsZW5hbWUoZGF0YWJhc2VGaWxlbmFt
ZSkKICAgICAsIG1fcXVldWUocXVldWUpCiAgICAgLCBtX2ZhaWxlZFRvT3BlbkRhdGFiYXNlKGZh
bHNlKQorICAgICwgbV9kaWRJbXBvcnRJdGVtcyhmYWxzZSkKKyAgICAsIG1fZGlkU2NoZWR1bGVE
YXRhYmFzZVVwZGF0ZShmYWxzZSkKIHsKIH0KIApAQCAtODMsNiArODksMTAgQEAgYm9vbCBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZTo6dHJ5VG9PcGVuRGF0YWJhc2UoRGF0YWJhc2VPcGVuaW5nU3RyYXRl
Z3kgb3BlbmluZ1N0cmEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIFNp
bmNlIGEgV29ya1F1ZXVlIGlzbid0IGJvdW5kIHRvIGEgc3BlY2lmaWMgdGhyZWFkLCB3ZSBoYXZl
IHRvIGRpc2FibGUgdGhyZWFkaW5nIGNoZWNrcworICAgIC8vIGV2ZW4gdGhvdWdoIHdlIG5ldmVy
IGFjY2VzcyB0aGUgZGF0YWJhc2UgZnJvbSBkaWZmZXJlbnQgdGhyZWFkcyBzaW11bHRhbmVvdXNs
eS4KKyAgICBtX2RhdGFiYXNlLmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKKwogICAgIGlmICgh
bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkpIHsKICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIG1p
Z3JhdGUgdGhlIGl0ZW0gdGFibGUuIEluIG9yZGVyIHRvIGF2b2lkIHRyeWluZyB0byBtaWdyYXRl
IHRoZSB0YWJsZSBvdmVyIGFuZCBvdmVyLAogICAgICAgICAvLyBqdXN0IGRlbGV0ZSBpdCBhbmQg
c3RhcnQgZnJvbSBzY3JhdGNoLgpAQCAtMTM4LDkgKzE0OCwxNiBAQCBib29sIExvY2FsU3RvcmFn
ZURhdGFiYXNlOjptaWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKQogCiB2b2lkIExvY2FsU3RvcmFn
ZURhdGFiYXNlOjppbXBvcnRJdGVtcyhTdG9yYWdlTWFwJiBzdG9yYWdlTWFwKQogeworICAgIGlm
IChtX2RpZEltcG9ydEl0ZW1zKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBGSVhNRTogSWYg
aXQgY2FuJ3QgaW1wb3J0LCB0aGVuIHRoZSBkZWZhdWx0IFdlYktpdCBiZWhhdmlvciBzaG91bGQg
YmUgdGhhdCBvZiBwcml2YXRlIGJyb3dzaW5nLAogICAgIC8vIG5vdCBzaWxlbnRseSBpZ25vcmlu
ZyBpdC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODk0CiAKKyAg
ICAvLyBXZSBzZXQgdGhpcyB0byB0cnVlIGV2ZW4gaWYgd2UgZG9uJ3QgZW5kIHVwIGltcG9ydGlu
ZyBhbnkgaXRlbXMgZHVlIHRvIGZhaWx1cmUgYmVjYXVzZQorICAgIC8vIHRoZXJlJ3MgcmVhbGx5
IG5vIGdvb2Qgd2F5IHRvIHJlY292ZXIgb3RoZXIgdGhhbiBub3QgaW1wb3J0aW5nIGFueXRoaW5n
LgorICAgIG1fZGlkSW1wb3J0SXRlbXMgPSB0cnVlOworCiAgICAgb3BlbkRhdGFiYXNlKFNraXBJ
Zk5vbkV4aXN0ZW50KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE2Nyw0ICsxODQsODcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6aW1w
b3J0SXRlbXMoU3RvcmFnZU1hcCYgc3RvcmFnZU1hcCkKICAgICBzdG9yYWdlTWFwLmltcG9ydEl0
ZW1zKGl0ZW1zKTsKIH0KIAordm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2V0SXRlbShjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpdGVtRGlkQ2hhbmdl
KGtleSwgdmFsdWUpOworfQorCit2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjppdGVtRGlkQ2hh
bmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1fY2hh
bmdlZEl0ZW1zLnNldChrZXksIHZhbHVlKTsKKyAgICBzY2hlZHVsZURhdGFiYXNlVXBkYXRlKCk7
Cit9CisKK3ZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRhdGUo
KQoreworICAgIGlmIChtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZGlkU2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSA9IHRydWU7CisgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2hBZnRlckRlbGF5KGJpbmQoJkxvY2FsU3RvcmFnZURhdGFiYXNlOjp1cGRhdGVE
YXRhYmFzZSwgdGhpcyksIGRhdGFiYXNlVXBkYXRlSW50ZXJ2YWwpOworfQorCit2b2lkIExvY2Fs
U3RvcmFnZURhdGFiYXNlOjp1cGRhdGVEYXRhYmFzZSgpCit7CisgICAgQVNTRVJUKG1fZGlkU2No
ZWR1bGVEYXRhYmFzZVVwZGF0ZSk7CisKKyAgICBtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUg
PSBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBIYW5kbGUgY2xlYXJpbmcuCisKKyAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiBjaGFuZ2VkSXRlbXM7CisgICAgaWYgKG1fY2hhbmdlZEl0ZW1zLnNp
emUoKSA+IG1heGltdW1JdGVtc1RvVXBkYXRlKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbWF4aW11bUl0ZW1zVG9VcGRhdGU7ICsraSkgeworICAgICAgICAgICAgYXV0byBpdCA9
IG1fY2hhbmdlZEl0ZW1zLmJlZ2luKCk7CisgICAgICAgICAgICBjaGFuZ2VkSXRlbXMuYWRkKGl0
LT5rZXksIGl0LT52YWx1ZSk7CisKKyAgICAgICAgICAgIG1fY2hhbmdlZEl0ZW1zLnJlbW92ZShp
dCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXNjaGVkdWxlIHRoZSB1cGRhdGUgZm9yIHRo
ZSByZW1haW5pbmcgaXRlbXMuCisgICAgICAgIHNjaGVkdWxlRGF0YWJhc2VVcGRhdGUoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICAvLyBUaGVyZSBhcmUgZmV3IGVub3VnaCBjaGFuZ2VkIGl0ZW1z
IHRoYXQgd2UgY2FuIGp1c3QgYWx3YXlzIHdyaXRlIGFsbCBvZiB0aGVtLgorICAgICAgICBtX2No
YW5nZWRJdGVtcy5zd2FwKGNoYW5nZWRJdGVtcyk7CisgICAgfQorCisgICAgQVNTRVJUKGNoYW5n
ZWRJdGVtcy5zaXplKCkgPD0gbWF4aW11bUl0ZW1zVG9VcGRhdGUpOworCisgICAgU1FMaXRlU3Rh
dGVtZW50IGluc2VydFN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gSXRlbVRhYmxl
IFZBTFVFUyAoPywgPykiKTsKKyAgICBpZiAoaW5zZXJ0U3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxSZXN1bHRPaykgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIGluc2Vy
dCBzdGF0ZW1lbnQgLSBjYW5ub3Qgd3JpdGUgdG8gbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU1FMaXRlU3RhdGVtZW50IGRlbGV0ZVN0YXRl
bWVudChtX2RhdGFiYXNlLCAiREVMRVRFIEZST00gSXRlbVRhYmxlIFdIRVJFIGtleT0/Iik7Cisg
ICAgaWYgKGRlbGV0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcHJlcGFyZSBkZWxldGUgc3RhdGVtZW50IC0gY2Fubm90
IHdyaXRlIHRvIGxvY2FsIHN0b3JhZ2UgZGF0YWJhc2UiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKG1fZGF0YWJhc2UpOworICAg
IHRyYW5zYWN0aW9uLmJlZ2luKCk7CisKKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNoYW5nZWRJdGVtcy5iZWdpbigpLCBlbmQgPSBjaGFuZ2Vk
SXRlbXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAvLyBBIG51bGwgdmFsdWUg
bWVhbnMgdGhhdCB0aGUga2V5L3ZhbHVlIHBhaXIgc2hvdWxkIGJlIGRlbGV0ZWQuCisgICAgICAg
IFNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50ID0gaXQtPnZhbHVlLmlzTnVsbCgpID8gZGVsZXRl
U3RhdGVtZW50IDogaW5zZXJ0U3RhdGVtZW50OworCisgICAgICAgIHN0YXRlbWVudC5iaW5kVGV4
dCgxLCBpdC0+a2V5KTsKKworICAgICAgICAvLyBJZiB3ZSdyZSBpbnNlcnRpbmcgYSBrZXkvdmFs
dWUgcGFpciwgYmluZCB0aGUgdmFsdWUgYXMgd2VsbC4KKyAgICAgICAgaWYgKCFpdC0+dmFsdWUu
aXNOdWxsKCkpCisgICAgICAgICAgICBzdGF0ZW1lbnQuYmluZEJsb2IoMiwgaXQtPnZhbHVlKTsK
KworICAgICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKKyAgICAgICAgaWYgKHJl
c3VsdCAhPSBTUUxSZXN1bHREb25lKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byB1cGRhdGUgaXRlbSBpbiB0aGUgbG9jYWwgc3RvcmFnZSBkYXRhYmFzZSAtICVpIiwgcmVzdWx0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGVtZW50LnJl
c2V0KCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmgKaW5kZXggYmNlNDI0MWExNDJhOWI4MzI5YWQ1MDYy
NTM1ZmUxYmVjNDlmNWNiYy4uM2M0MThjYzYzOWFhMGI5NjY3ZTlkZDA5OTZmYmYyZGJmNjNjMWJk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZURhdGFiYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KIApAQCAtNDcsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgLy8g
V2lsbCBibG9jayB1bnRpbCB0aGUgaW1wb3J0IGlzIGNvbXBsZXRlLgogICAgIHZvaWQgaW1wb3J0
SXRlbXMoV2ViQ29yZTo6U3RvcmFnZU1hcCYpOwogCisgICAgdm9pZCBzZXRJdGVtKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBMb2NhbFN0
b3JhZ2VEYXRhYmFzZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRmlsZW5hbWUsIFBhc3NSZWZQdHI8
V29ya1F1ZXVlPik7CiAKQEAgLTU5LDEzICs2MiwyMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBt
aWdyYXRlSXRlbVRhYmxlSWZOZWVkZWQoKTsKIAotICAgIHZvaWQgcGVyZm9ybUltcG9ydCgpOwor
ICAgIHZvaWQgaXRlbURpZENoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CisKKyAgICB2b2lkIHNjaGVkdWxlRGF0YWJhc2VVcGRhdGUoKTsKKyAgICB2b2lkIHVw
ZGF0ZURhdGFiYXNlKCk7CiAKICAgICBTdHJpbmcgbV9kYXRhYmFzZUZpbGVuYW1lOwogICAgIFJl
ZlB0cjxXb3JrUXVldWU+IG1fcXVldWU7CiAKICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSBt
X2RhdGFiYXNlOwogICAgIGJvb2wgbV9mYWlsZWRUb09wZW5EYXRhYmFzZTsKKyAgICBib29sIG1f
ZGlkSW1wb3J0SXRlbXM7CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX2NoYW5nZWRJ
dGVtczsKKyAgICBib29sIG1fZGlkU2NoZWR1bGVEYXRhYmFzZVVwZGF0ZTsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3Bw
CmluZGV4IDBhODBlYWQyYTRjNzlkOWY0MzE1NmE5YjhkZjFhN2NhZjAyZjRhMmYuLmNhYTJhZGFh
ZjUwYmRjYzNlMjQxNTkyN2I1ZTNjMzBmOTBlN2EzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTE1Myw4ICsxNTMs
MTMgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0oQ29yZUlQQzo6
Q29ubmVjdGlvbiogc291cmNlQ29ubmVjdGlvbiwKICAgICBpZiAobmV3U3RvcmFnZU1hcCkKICAg
ICAgICAgbV9zdG9yYWdlTWFwID0gbmV3U3RvcmFnZU1hcC5yZWxlYXNlKCk7CiAKLSAgICBpZiAo
IXF1b3RhRXhjZXB0aW9uKQotICAgICAgICBkaXNwYXRjaEV2ZW50cyhzb3VyY2VDb25uZWN0aW9u
LCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIG9sZFZhbHVlLCB2YWx1ZSwgdXJsU3RyaW5nKTsK
KyAgICBpZiAocXVvdGFFeGNlcHRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlKQorICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlLT5zZXRJ
dGVtKGtleSwgdmFsdWUpOworCisgICAgZGlzcGF0Y2hFdmVudHMoc291cmNlQ29ubmVjdGlvbiwg
c291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUsIHVybFN0cmluZyk7CiB9
CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKENvcmVJUEM6
OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVh
SUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
</data>
<flag name="review"
          id="222075"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>