<?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>210736</bug_id>
          
          <creation_ts>2020-04-20 00:06:48 -0700</creation_ts>
          <short_desc>REGRESSION (r253987): StringImpl::adopt(Vector&amp;&amp;) copies only half of the characters in the Vector when copying across malloc zones</short_desc>
          <delta_ts>2020-04-20 12:11:13 -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>Web Template Framework</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1643375</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-20 00:06:48 -0700</bug_when>
    <thetext>StringImpl::adopt truncates the string by copying only half of the argument Vector

r253987 (Bug 186422) added the following line:

&gt; memcpy(stringImplBuffer.get(), vectorBuffer.get(), size);

But it should be the following for UChar string.

&gt; memcpy(stringImplBuffer.get(), vectorBuffer.get(), size * sizeof(CharacterType));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643377</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-20 00:09:27 -0700</bug_when>
    <thetext>Or,

&gt; return StringImpl::create(vector.data(), size);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643475</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 09:33:54 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #0)
&gt; StringImpl::adopt truncates the string by copying only half of the argument
&gt; Vector
&gt; 
&gt; r253987 (Bug 186422) added the following line:
&gt; 
&gt; &gt; memcpy(stringImplBuffer.get(), vectorBuffer.get(), size);
&gt; 
&gt; But it should be the following for UChar string.
&gt; 
&gt; &gt; memcpy(stringImplBuffer.get(), vectorBuffer.get(), size * sizeof(CharacterType));

StringImpl::copyCharacters(stringImplBuffer.get(), vectorBuffer.get(), size);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643476</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 09:34:23 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; StringImpl::copyCharacters(stringImplBuffer.get(), vectorBuffer.get(), size);

Since the code is inside StringImpl:

    copyCharacters(stringImplBuffer.get(), vectorBuffer.get(), size);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643477</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 09:35:40 -0700</bug_when>
    <thetext>Should use copyCharacters instead of memcpy both in StringImpl::adopt and in StringImpl::replace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643478</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 09:37:18 -0700</bug_when>
    <thetext>And in StringImpl::StringImpl.

    copyCharacters(const_cast&lt;LChar*&gt;(m_data8), characters.get(), length);

Let&apos;s just not use memcpy, which ignores the types of the pointers, except in copyCharacters, which respects the types of the pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643479</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 09:37:37 -0700</bug_when>
    <thetext>Hard part about this is adding an appropriate test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643481</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-20 09:41:02 -0700</bug_when>
    <thetext>Oops, nice catch!
I think this is hard to test without manual one, because this code is used when malloc_zone breakdown debugging feature is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643485</commentid>
    <comment_count>8</comment_count>
      <attachid>396980</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 09:48:35 -0700</bug_when>
    <thetext>Created attachment 396980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643486</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 09:48:59 -0700</bug_when>
    <thetext>I did not add a test. Maybe someone else wants to pick up my patch and add a test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643490</commentid>
    <comment_count>10</comment_count>
      <attachid>396982</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 09:53:44 -0700</bug_when>
    <thetext>Created attachment 396982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643493</commentid>
    <comment_count>11</comment_count>
      <attachid>396983</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 10:04:15 -0700</bug_when>
    <thetext>Created attachment 396983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643494</commentid>
    <comment_count>12</comment_count>
      <attachid>396983</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 10:05:26 -0700</bug_when>
    <thetext>Comment on attachment 396983
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.h:1044
&gt; +        return create(vector.data(), vector.size());

Could have this do vector.clear() after creating the StringImpl, but I don’t think that’s necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643505</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 10:27:03 -0700</bug_when>
    <thetext>Yusuke, as further cleanup maybe we could change the StringImpl(MallocPtr) constructor to not be a template, and only work with StringImplMalloc. Make it a caller responsibility to check. Is there any other caller?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643508</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-20 10:29:54 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; Yusuke, as further cleanup maybe we could change the StringImpl(MallocPtr)
&gt; constructor to not be a template, and only work with StringImplMalloc. Make
&gt; it a caller responsibility to check. Is there any other caller?

Hmm, no it seems that it can be called with StringBufferMalloc, so I guess we&apos;ll leave it alone for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643555</commentid>
    <comment_count>15</comment_count>
      <attachid>396983</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-20 11:48:51 -0700</bug_when>
    <thetext>Comment on attachment 396983
Patch

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

r=me

&gt;&gt; Source/WTF/wtf/text/StringImpl.h:1044
&gt;&gt; +        return create(vector.data(), vector.size());
&gt; 
&gt; Could have this do vector.clear() after creating the StringImpl, but I don’t think that’s necessary.

Yeah, I think either is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643562</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-20 12:10:03 -0700</bug_when>
    <thetext>Committed r260383: &lt;https://trac.webkit.org/changeset/260383&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396983.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643564</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-20 12:11:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/62069530&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396980</attachid>
            <date>2020-04-20 09:48:35 -0700</date>
            <delta_ts>2020-04-20 09:50:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210736-20200420094834.patch</filename>
            <type>text/plain</type>
            <size>4044</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBiZTIxZDI3ODhjOTg3YzNlNjJmMzJl
MmRlMzUyMjgxZDBhMjBiMDQuLjE3NGZkMDFmMDNlMmY4NDI1YjNkNWY0NTBlMTBhMzdmYTdhMzFk
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMjAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNTM5ODcpOiBTdHJpbmdJbXBsOjph
ZG9wdChWZWN0b3ImJikgY29waWVzIG9ubHkgaGFsZiBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUg
VmVjdG9yIHdoZW4gY29weWluZyBhY3Jvc3MgbWFsbG9jIHpvbmVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA3MzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXBsYWNlKTogVXNlIGNvcHlDaGFyYWN0ZXJz
IGluc3RlYWQgb2YgbWVtY3B5LgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6U3RyaW5nSW1wbCk6IFVzZSBjb3B5Q2hhcmFjdGVycyBp
bnN0ZWFkIG9mIG1lbWNweS4KKyAgICAgICAgQWxzbyBkcm9wIEMtc3R5bGUgY2FzdCB0byBjYXN0
IGF3YXkgY29uc3QuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmFkb3B0KTogQ29ycmVjdCBz
aXplIG9mIGFyZ3VtZW50IHRvIFN0cmluZ0ltcGxNYWxsb2M6Om1hbGxvYy4KKyAgICAgICAgVXNl
IGNvcHlDaGFyYWN0ZXJzIGluc3RlYWQgb2YgbWVtY3B5LgorCiAyMDIwLTA0LTE5ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV0tTY3JpcHRNZXNzYWdl
SGFuZGxlciBBUEkgdGhhdCBhc3luY2hyb25vdXNseSByZXNwb25kcyB3aXRoIGEgcHJvbWlzZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ZmI1NjE0MjAwZDQzNzBmYzlkY2M4
NTI5MmVjZmFkNmI5OGYwZDEuLjg2MjhmMWEzZGIwMmExNjFkOWUxNGNkY2M3MmE1MzkzNzBlZGMx
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTMwMiw3ICsxMzAyLDcgQEAg
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hhciBy
ZXBsYWNlbWVudCkKICAgICBVQ2hhciogZGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVV
bmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YSk7CiAKLSAgICBtZW1j
cHkoZGF0YSwgbV9kYXRhMTYsIGkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICBjb3B5Q2hhcmFjdGVy
cyhkYXRhLCBtX2RhdGExNiwgaSk7CiAgICAgZm9yICh1bnNpZ25lZCBqID0gaTsgaiAhPSBtX2xl
bmd0aDsgKytqKSB7CiAgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IG1fZGF0YTE2W2pdOwogICAg
ICAgICBpZiAoY2hhcmFjdGVyID09IHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5k
ZXggZDE0ZmZhNWIxNGVkYjk4ZGU2YzM0MTk5YmZjYzU1ZWE2MDk1MDM0Ni4uYzU3ODY5NTI2MjAz
NzAxZDQwOTc1MWFhM2Q3NWM3OTIyNjdlNTE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
QEAgLTg5NSw4ICs4OTUsOSBAQCBpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChNYWxsb2NQ
dHI8TENoYXIsIE1hbGxvYz4gY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZwogICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19zYW1lPE1hbGxvYywgU3RyaW5nSW1wbE1hbGxvYz46OnZhbHVlKQogICAg
ICAgICBtX2RhdGE4ID0gY2hhcmFjdGVycy5sZWFrUHRyKCk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IG1fZGF0YTggPSBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KFN0cmluZ0ltcGxNYWxsb2M6Om1h
bGxvYyhsZW5ndGgpKTsKLSAgICAgICAgbWVtY3B5KCh2b2lkKiltX2RhdGE4LCBjaGFyYWN0ZXJz
LmdldCgpLCBsZW5ndGgpOworICAgICAgICBhdXRvIGRhdGE4ID0gc3RhdGljX2Nhc3Q8TENoYXIq
PihTdHJpbmdJbXBsTWFsbG9jOjptYWxsb2MobGVuZ3RoKSkKKyAgICAgICAgY29weUNoYXJhY3Rl
cnMoZGF0YTgsIGNoYXJhY3RlcnMuZ2V0KCksIGxlbmd0aCk7CisgICAgICAgIG1fZGF0YTggPSBk
YXRhODsKICAgICB9CiAKICAgICBBU1NFUlQobV9kYXRhOCk7CkBAIC05MzAsOCArOTMxLDkgQEAg
aW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoTWFsbG9jUHRyPFVDaGFyLCBNYWxsb2M+IGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmcKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxN
YWxsb2MsIFN0cmluZ0ltcGxNYWxsb2M+Ojp2YWx1ZSkKICAgICAgICAgbV9kYXRhMTYgPSBjaGFy
YWN0ZXJzLmxlYWtQdHIoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV9kYXRhMTYgPSBzdGF0aWNf
Y2FzdDxjb25zdCBVQ2hhcio+KFN0cmluZ0ltcGxNYWxsb2M6Om1hbGxvYyhsZW5ndGggKiBzaXpl
b2YoVUNoYXIpKSk7Ci0gICAgICAgIG1lbWNweSgodm9pZCopbV9kYXRhMTYsIGNoYXJhY3RlcnMu
Z2V0KCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBhdXRvIGRhdGExNiA9IHN0
YXRpY19jYXN0PFVDaGFyKj4oU3RyaW5nSW1wbE1hbGxvYzo6bWFsbG9jKGxlbmd0aCAqIHNpemVv
ZihVQ2hhcikpKQorICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhMTYsIGNoYXJhY3RlcnMuZ2V0
KCksIGxlbmd0aCk7CisgICAgICAgIG1fZGF0YTE2ID0gZGF0YTE2OwogICAgIH0KIAogICAgIEFT
U0VSVChtX2RhdGExNik7CkBAIC0xMDM5LDEwICsxMDQxLDkgQEAgaW5saW5lIFJlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjphZG9wdChWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNp
dHksIE8KICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8TWFsbG9jLCBTdHJpbmdJ
bXBsTWFsbG9jPjo6dmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJp
bmdJbXBsKHZlY3Rvci5yZWxlYXNlQnVmZmVyKCksIHNpemUpKTsKICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGNvcHkgYmV0d2VlbiBtYWxsb2Mgem9uZXMuCi0gICAg
ICAgICAgICBhdXRvIHZlY3RvckJ1ZmZlciA9IHZlY3Rvci5yZWxlYXNlQnVmZmVyKCk7Ci0gICAg
ICAgICAgICBhdXRvIHN0cmluZ0ltcGxCdWZmZXIgPSBNYWxsb2NQdHI8Q2hhcmFjdGVyVHlwZSwg
U3RyaW5nSW1wbE1hbGxvYz46Om1hbGxvYyhzaXplKTsKLSAgICAgICAgICAgIG1lbWNweShzdHJp
bmdJbXBsQnVmZmVyLmdldCgpLCB2ZWN0b3JCdWZmZXIuZ2V0KCksIHNpemUpOworICAgICAgICAg
ICAgLy8gQ29weSBiZXR3ZWVuIG1hbGxvYyB6b25lcy4KKyAgICAgICAgICAgIGF1dG8gc3RyaW5n
SW1wbEJ1ZmZlciA9IE1hbGxvY1B0cjxDaGFyYWN0ZXJUeXBlLCBTdHJpbmdJbXBsTWFsbG9jPjo6
bWFsbG9jKHNpemUgKiBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpOworICAgICAgICAgICAgY29weUNo
YXJhY3RlcnMoc3RyaW5nSW1wbEJ1ZmZlci5nZXQoKSwgdmVjdG9yLnJlbGVhc2VCdWZmZXIoKS5n
ZXQoKSwgc2l6ZSk7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBs
KFdURk1vdmUoc3RyaW5nSW1wbEJ1ZmZlciksIHNpemUpKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396982</attachid>
            <date>2020-04-20 09:53:44 -0700</date>
            <delta_ts>2020-04-20 10:04:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210736-20200420095342.patch</filename>
            <type>text/plain</type>
            <size>4160</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBiZTIxZDI3ODhjOTg3YzNlNjJmMzJl
MmRlMzUyMjgxZDBhMjBiMDQuLjA2MGQ2MjQ0ZTkzMjA4NDY4YzE0OTQyMTczYTY1ZTlmNGQzMzM5
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDQtMjAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNTM5ODcpOiBTdHJpbmdJbXBsOjph
ZG9wdChWZWN0b3ImJikgY29waWVzIG9ubHkgaGFsZiBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUg
VmVjdG9yIHdoZW4gY29weWluZyBhY3Jvc3MgbWFsbG9jIHpvbmVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA3MzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXBsYWNlKTogVXNlIGNvcHlDaGFyYWN0ZXJz
IGluc3RlYWQgb2YgbWVtY3B5LgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6U3RyaW5nSW1wbCk6IFVzZSBjb3B5Q2hhcmFjdGVycyBp
bnN0ZWFkIG9mIG1lbWNweS4KKyAgICAgICAgQWxzbyBkcm9wIEMtc3R5bGUgY2FzdCB0byBjYXN0
IGF3YXkgY29uc3QuCisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmFkb3B0KTogQ29ycmVjdCBz
aXplIG9mIGFyZ3VtZW50IHRvIFN0cmluZ0ltcGxNYWxsb2M6Om1hbGxvYy4KKyAgICAgICAgVXNl
IGNvcHlDaGFyYWN0ZXJzIGluc3RlYWQgb2YgbWVtY3B5LiBBbHNvIGRvbid0IHJlbGVhc2UgdGhl
IGJ1ZmZlciBmcm9tIGEKKyAgICAgICAgdmVjdG9yIGp1c3QgdG8gY29weSBjaGFyYWN0ZXJzIGZy
b20gaXQsIHdoZW4gY29weWluZyBhY3Jvc3Mgem9uZXMuCisKIDIwMjAtMDQtMTkgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyIEFQSSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggZDVmYjU2MTQyMDBkNDM3MGZjOWRjYzg1
MjkyZWNmYWQ2Yjk4ZjBkMS4uODYyOGYxYTNkYjAyYTE2MWQ5ZTE0Y2RjYzcyYTUzOTM3MGVkYzE0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMzAyLDcgKzEzMDIsNyBAQCBS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJl
cGxhY2VtZW50KQogICAgIFVDaGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVu
aW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBkYXRhKTsKIAotICAgIG1lbWNw
eShkYXRhLCBtX2RhdGExNiwgaSAqIHNpemVvZihVQ2hhcikpOworICAgIGNvcHlDaGFyYWN0ZXJz
KGRhdGEsIG1fZGF0YTE2LCBpKTsKICAgICBmb3IgKHVuc2lnbmVkIGogPSBpOyBqICE9IG1fbGVu
Z3RoOyArK2opIHsKICAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gbV9kYXRhMTZbal07CiAgICAg
ICAgIGlmIChjaGFyYWN0ZXIgPT0gdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRl
eCBkMTRmZmE1YjE0ZWRiOThkZTZjMzQxOTliZmNjNTVlYTYwOTUwMzQ2Li42ZjMxYTIxOWRkZjU5
N2VmMWIyZDY0N2NmZmFiZmRlZWFhMWI2NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApA
QCAtODk1LDggKzg5NSw5IEBAIGlubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKE1hbGxvY1B0
cjxMQ2hhciwgTWFsbG9jPiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5nCiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX3NhbWU8TWFsbG9jLCBTdHJpbmdJbXBsTWFsbG9jPjo6dmFsdWUpCiAgICAg
ICAgIG1fZGF0YTggPSBjaGFyYWN0ZXJzLmxlYWtQdHIoKTsKICAgICBlbHNlIHsKLSAgICAgICAg
bV9kYXRhOCA9IHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4oU3RyaW5nSW1wbE1hbGxvYzo6bWFs
bG9jKGxlbmd0aCkpOwotICAgICAgICBtZW1jcHkoKHZvaWQqKW1fZGF0YTgsIGNoYXJhY3RlcnMu
Z2V0KCksIGxlbmd0aCk7CisgICAgICAgIGF1dG8gZGF0YTggPSBzdGF0aWNfY2FzdDxMQ2hhcio+
KFN0cmluZ0ltcGxNYWxsb2M6Om1hbGxvYyhsZW5ndGggKiBzaXplb2YoTENoYXIpKSk7CisgICAg
ICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGE4LCBjaGFyYWN0ZXJzLmdldCgpLCBsZW5ndGgpOworICAg
ICAgICBtX2RhdGE4ID0gZGF0YTg7CiAgICAgfQogCiAgICAgQVNTRVJUKG1fZGF0YTgpOwpAQCAt
OTMwLDggKzkzMSw5IEBAIGlubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKE1hbGxvY1B0cjxV
Q2hhciwgTWFsbG9jPiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5nCiAgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX3NhbWU8TWFsbG9jLCBTdHJpbmdJbXBsTWFsbG9jPjo6dmFsdWUpCiAgICAgICAg
IG1fZGF0YTE2ID0gY2hhcmFjdGVycy5sZWFrUHRyKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1f
ZGF0YTE2ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihTdHJpbmdJbXBsTWFsbG9jOjptYWxs
b2MobGVuZ3RoICogc2l6ZW9mKFVDaGFyKSkpOwotICAgICAgICBtZW1jcHkoKHZvaWQqKW1fZGF0
YTE2LCBjaGFyYWN0ZXJzLmdldCgpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAg
YXV0byBkYXRhMTYgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KFN0cmluZ0ltcGxNYWxsb2M6Om1hbGxv
YyhsZW5ndGggKiBzaXplb2YoVUNoYXIpKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEx
NiwgY2hhcmFjdGVycy5nZXQoKSwgbGVuZ3RoKTsKKyAgICAgICAgbV9kYXRhMTYgPSBkYXRhMTY7
CiAgICAgfQogCiAgICAgQVNTRVJUKG1fZGF0YTE2KTsKQEAgLTEwMzksMTAgKzEwNDEsOSBAQCBp
bmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmFkb3B0KFZlY3RvcjxDaGFyYWN0ZXJU
eXBlLCBpbmxpbmVDYXBhY2l0eSwgTwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2Ft
ZTxNYWxsb2MsIFN0cmluZ0ltcGxNYWxsb2M+Ojp2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwodmVjdG9yLnJlbGVhc2VCdWZmZXIoKSwgc2l6ZSkpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gY29weSBiZXR3ZWVuIG1h
bGxvYyB6b25lcy4KLSAgICAgICAgICAgIGF1dG8gdmVjdG9yQnVmZmVyID0gdmVjdG9yLnJlbGVh
c2VCdWZmZXIoKTsKLSAgICAgICAgICAgIGF1dG8gc3RyaW5nSW1wbEJ1ZmZlciA9IE1hbGxvY1B0
cjxDaGFyYWN0ZXJUeXBlLCBTdHJpbmdJbXBsTWFsbG9jPjo6bWFsbG9jKHNpemUpOwotICAgICAg
ICAgICAgbWVtY3B5KHN0cmluZ0ltcGxCdWZmZXIuZ2V0KCksIHZlY3RvckJ1ZmZlci5nZXQoKSwg
c2l6ZSk7CisgICAgICAgICAgICAvLyBDb3B5IGJldHdlZW4gbWFsbG9jIHpvbmVzLgorICAgICAg
ICAgICAgYXV0byBzdHJpbmdJbXBsQnVmZmVyID0gTWFsbG9jUHRyPENoYXJhY3RlclR5cGUsIFN0
cmluZ0ltcGxNYWxsb2M+OjptYWxsb2Moc2l6ZSAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7Cisg
ICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhzdHJpbmdJbXBsQnVmZmVyLmdldCgpLCB2ZWN0b3Iu
ZGF0YSgpLCBzaXplKTsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0lt
cGwoV1RGTW92ZShzdHJpbmdJbXBsQnVmZmVyKSwgc2l6ZSkpOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396983</attachid>
            <date>2020-04-20 10:04:15 -0700</date>
            <delta_ts>2020-04-20 12:10:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210736-20200420100413.patch</filename>
            <type>text/plain</type>
            <size>6037</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBiZTIxZDI3ODhjOTg3YzNlNjJmMzJl
MmRlMzUyMjgxZDBhMjBiMDQuLjMyODRkM2UyMzdhYzY4YTE3MzE3YjcyNjA5MjQ0Njc0MGViNmEz
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDQtMjAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNTM5ODcpOiBTdHJpbmdJbXBsOjph
ZG9wdChWZWN0b3ImJikgY29waWVzIG9ubHkgaGFsZiBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUg
VmVjdG9yIHdoZW4gY29weWluZyBhY3Jvc3MgbWFsbG9jIHpvbmVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA3MzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXBsYWNlKTogVXNlIGNvcHlDaGFyYWN0ZXJz
IGluc3RlYWQgb2YgbWVtY3B5LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBV
c2Ugc3RkOjppc19zYW1lX3YgaW5zdGVhZCBvZiBzdGQ6OmlzX3NhbWUuCisgICAgICAgIChXVEY6
OlN0cmluZ0ltcGw6OlN0cmluZ0ltcGwpOiBVc2UgY29weUNoYXJhY3RlcnMgaW5zdGVhZCBvZiBt
ZW1jcHkuCisgICAgICAgIEFsc28gZHJvcCBDLXN0eWxlIGNhc3QgdG8gY2FzdCBhd2F5IGNvbnN0
LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjphZG9wdCk6IERvbid0IGV2ZW4gdHJ5IHRvIGFk
b3B0IGFjcm9zcyBtYWxsb2Mgem9uZXMuCisKIDIwMjAtMDQtMTkgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyIEFQ
SSB0aGF0IGFzeW5jaHJvbm91c2x5IHJlc3BvbmRzIHdpdGggYSBwcm9taXNlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggZDVmYjU2MTQyMDBkNDM3MGZjOWRjYzg1MjkyZWNmYWQ2
Yjk4ZjBkMS4uODYyOGYxYTNkYjAyYTE2MWQ5ZTE0Y2RjYzcyYTUzOTM3MGVkYzE0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMzAyLDcgKzEzMDIsNyBAQCBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50
KQogICAgIFVDaGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6
ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBkYXRhKTsKIAotICAgIG1lbWNweShkYXRhLCBt
X2RhdGExNiwgaSAqIHNpemVvZihVQ2hhcikpOworICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1f
ZGF0YTE2LCBpKTsKICAgICBmb3IgKHVuc2lnbmVkIGogPSBpOyBqICE9IG1fbGVuZ3RoOyArK2op
IHsKICAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gbV9kYXRhMTZbal07CiAgICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBkMTRmZmE1
YjE0ZWRiOThkZTZjMzQxOTliZmNjNTVlYTYwOTUwMzQ2Li40OTg1ZDU0OTUyYjhkZjM4ZDE3OGUx
ZWU1YmJmYWQ0MjU3ZTk4MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtODkyLDEx
ICs4OTIsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTWFsbG9jPgogaW5saW5lIFN0cmluZ0ltcGw6
OlN0cmluZ0ltcGwoTWFsbG9jUHRyPExDaGFyLCBNYWxsb2M+IGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5n
dGgsIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4obnVsbHB0ciksIHNfaGFzaEZsYWc4Qml0QnVm
ZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyT3duZWQpCiB7Ci0gICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX3NhbWU8TWFsbG9jLCBTdHJpbmdJbXBsTWFsbG9jPjo6dmFsdWUpCisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX3NhbWVfdjxNYWxsb2MsIFN0cmluZ0ltcGxNYWxsb2M+KQogICAgICAg
ICBtX2RhdGE4ID0gY2hhcmFjdGVycy5sZWFrUHRyKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1f
ZGF0YTggPSBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KFN0cmluZ0ltcGxNYWxsb2M6Om1hbGxv
YyhsZW5ndGgpKTsKLSAgICAgICAgbWVtY3B5KCh2b2lkKiltX2RhdGE4LCBjaGFyYWN0ZXJzLmdl
dCgpLCBsZW5ndGgpOworICAgICAgICBhdXRvIGRhdGE4ID0gc3RhdGljX2Nhc3Q8TENoYXIqPihT
dHJpbmdJbXBsTWFsbG9jOjptYWxsb2MobGVuZ3RoICogc2l6ZW9mKExDaGFyKSkpOworICAgICAg
ICBjb3B5Q2hhcmFjdGVycyhkYXRhOCwgY2hhcmFjdGVycy5nZXQoKSwgbGVuZ3RoKTsKKyAgICAg
ICAgbV9kYXRhOCA9IGRhdGE4OwogICAgIH0KIAogICAgIEFTU0VSVChtX2RhdGE4KTsKQEAgLTky
NywxMSArOTI4LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIE1hbGxvYz4KIGlubGluZSBTdHJpbmdJ
bXBsOjpTdHJpbmdJbXBsKE1hbGxvY1B0cjxVQ2hhciwgTWFsbG9jPiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwg
bGVuZ3RoLCBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KG51bGxwdHIpLCBTdHJpbmdOb3JtYWwg
fCBCdWZmZXJPd25lZCkKIHsKLSAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxNYWxsb2Ms
IFN0cmluZ0ltcGxNYWxsb2M+Ojp2YWx1ZSkKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2Ft
ZV92PE1hbGxvYywgU3RyaW5nSW1wbE1hbGxvYz4pCiAgICAgICAgIG1fZGF0YTE2ID0gY2hhcmFj
dGVycy5sZWFrUHRyKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1fZGF0YTE2ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVUNoYXIqPihTdHJpbmdJbXBsTWFsbG9jOjptYWxsb2MobGVuZ3RoICogc2l6ZW9m
KFVDaGFyKSkpOwotICAgICAgICBtZW1jcHkoKHZvaWQqKW1fZGF0YTE2LCBjaGFyYWN0ZXJzLmdl
dCgpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgYXV0byBkYXRhMTYgPSBzdGF0
aWNfY2FzdDxVQ2hhcio+KFN0cmluZ0ltcGxNYWxsb2M6Om1hbGxvYyhsZW5ndGggKiBzaXplb2Yo
VUNoYXIpKSk7CisgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGExNiwgY2hhcmFjdGVycy5nZXQo
KSwgbGVuZ3RoKTsKKyAgICAgICAgbV9kYXRhMTYgPSBkYXRhMTY7CiAgICAgfQogCiAgICAgQVNT
RVJUKG1fZGF0YTE2KTsKQEAgLTEwMzEsMjIgKzEwMzMsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6dHIKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVu
YW1lIE1hbGxvYz4KIGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQoVmVj
dG9yPENoYXJhY3RlclR5cGUsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNh
cGFjaXR5LCBNYWxsb2M+JiYgdmVjdG9yKQogewotICAgIGlmIChzaXplX3Qgc2l6ZSA9IHZlY3Rv
ci5zaXplKCkpIHsKLSAgICAgICAgQVNTRVJUKHZlY3Rvci5kYXRhKCkpOwotICAgICAgICBpZiAo
c2l6ZSA+IE1heExlbmd0aCkKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PE1hbGxv
YywgU3RyaW5nSW1wbE1hbGxvYz4pIHsKKyAgICAgICAgYXV0byBsZW5ndGggPSB2ZWN0b3Iuc2l6
ZSgpOworICAgICAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAqZW1wdHkoKTsK
KyAgICAgICAgaWYgKGxlbmd0aCA+IE1heExlbmd0aCkKICAgICAgICAgICAgIENSQVNIKCk7Ci0K
LSAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8TWFsbG9jLCBTdHJpbmdJbXBsTWFs
bG9jPjo6dmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBs
KHZlY3Rvci5yZWxlYXNlQnVmZmVyKCksIHNpemUpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAvLyBXZSBoYXZlIHRvIGNvcHkgYmV0d2VlbiBtYWxsb2Mgem9uZXMuCi0gICAgICAgICAg
ICBhdXRvIHZlY3RvckJ1ZmZlciA9IHZlY3Rvci5yZWxlYXNlQnVmZmVyKCk7Ci0gICAgICAgICAg
ICBhdXRvIHN0cmluZ0ltcGxCdWZmZXIgPSBNYWxsb2NQdHI8Q2hhcmFjdGVyVHlwZSwgU3RyaW5n
SW1wbE1hbGxvYz46Om1hbGxvYyhzaXplKTsKLSAgICAgICAgICAgIG1lbWNweShzdHJpbmdJbXBs
QnVmZmVyLmdldCgpLCB2ZWN0b3JCdWZmZXIuZ2V0KCksIHNpemUpOwotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChXVEZNb3ZlKHN0cmluZ0ltcGxCdWZmZXIpLCBz
aXplKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuICplbXB0eSgpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBsKHZlY3Rvci5yZWxlYXNlQnVmZmVyKCksIGxl
bmd0aCkpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gY3JlYXRlKHZlY3Rvci5kYXRhKCks
IHZlY3Rvci5zaXplKCkpOwogfQogCiBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OmNvc3QoKSBj
b25zdApAQCAtMTEzNCw5ICsxMTI5LDkgQEAgaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6ZGVyZWYo
KQogdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgRGVzdGlu
YXRpb25DaGFyYWN0ZXJUeXBlPgogaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3Rl
cnMoRGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbiwgY29uc3QgU291cmNlQ2hh
cmFjdGVyVHlwZSogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQogewotICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lPFNvdXJjZUNoYXJhY3RlclR5cGUsIExDaGFyPjo6dmFsdWUg
fHwgc3RkOjppc19zYW1lPFNvdXJjZUNoYXJhY3RlclR5cGUsIFVDaGFyPjo6dmFsdWUpOwotICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPERlc3RpbmF0aW9uQ2hhcmFjdGVyVHlwZSwgTENo
YXI+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3NhbWU8RGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlLCBVQ2hh
cj46OnZhbHVlKTsKLSAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0
ZXJUeXBlLCBEZXN0aW5hdGlvbkNoYXJhY3RlclR5cGU+Ojp2YWx1ZSkgeworICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lX3Y8U291cmNlQ2hhcmFjdGVyVHlwZSwgTENoYXI+IHx8IHN0ZDo6
aXNfc2FtZV92PFNvdXJjZUNoYXJhY3RlclR5cGUsIFVDaGFyPik7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWVfdjxEZXN0aW5hdGlvbkNoYXJhY3RlclR5cGUsIExDaGFyPiB8fCBzdGQ6
OmlzX3NhbWVfdjxEZXN0aW5hdGlvbkNoYXJhY3RlclR5cGUsIFVDaGFyPik7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX3NhbWVfdjxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBEZXN0aW5hdGlvbkNo
YXJhY3RlclR5cGU+KSB7CiAgICAgICAgIGlmIChudW1DaGFyYWN0ZXJzID09IDEpIHsKICAgICAg
ICAgICAgICpkZXN0aW5hdGlvbiA9ICpzb3VyY2U7CiAgICAgICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>