<?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>210004</bug_id>
          
          <creation_ts>2020-04-04 09:20:48 -0700</creation_ts>
          <short_desc>Nullptr crash in CompositeEditCommand::splitTreeToNode when inserting image in anchor element that has uneditable parent</short_desc>
          <delta_ts>2020-04-06 23:29:31 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jack">shihchieh_lee</reporter>
          <assigned_to name="Jack">shihchieh_lee</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-feeder</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>product-security</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1637689</commentid>
    <comment_count>0</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-04 09:20:48 -0700</bug_when>
    <thetext>&lt;rdar://61206583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637690</commentid>
    <comment_count>1</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-04 09:21:46 -0700</bug_when>
    <thetext>    #0 0x15836d155 in WebCore::CompositeEditCommand::splitTreeToNode(WebCore::Node&amp;, WebCore::Node&amp;, bool) (Safari_ASAN_259384_90de49be478170ac8513448015dcb21abd3583ea.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x3512155)
    #1 0x158439bf5 in WebCore::ReplaceSelectionCommand::doApply() (Safari_ASAN_259384_90de49be478170ac8513448015dcb21abd3583ea.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x35debf5)
    #2 0x1583451d6 in WebCore::CompositeEditCommand::apply() (Safari_ASAN_259384_90de49be478170ac8513448015dcb21abd3583ea.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x34ea1d6)
    #3 0x158401dc1 in WebCore::executeInsertFragment(WebCore::Frame&amp;, WTF::Ref&lt;WebCore::DocumentFragment, WTF::DumbPtrTraits&lt;WebCore::DocumentFragment&gt; &gt;&amp;&amp;) (Safari_ASAN_259384_90de49be478170ac8513448015dcb21abd3583ea.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x35a6dc1)
    #4 0x1584020d2 in WebCore::executeInsertNode(WebCore::Frame&amp;, WTF::Ref&lt;WebCore::Node, WTF::DumbPtrTraits&lt;WebCore::Node&gt; &gt;&amp;&amp;) (Safari_ASAN_259384_90de49be478170ac8513448015dcb21abd3583ea.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x35a70d2)
    #5 0x1583fba54 in WebCore::executeInsertImage(WebCore::Frame&amp;, WebCore::Event*, WebCore::EditorCommandSource, WTF::String const&amp;) (Safari_ASAN_259384_90de49be478170ac8513448015dcb21abd3583ea.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x35a0a54)
    #6 0x158074f47 in WebCore::Document::execCommand(WTF::String const&amp;, bool, WTF::String const&amp;) (Safari_ASAN_259384_90de49be478170ac8513448015dcb21abd3583ea.app/Contents/Frameworks/WebCore.framework/Versions/A/WebCore:x86_64+0x3219f47)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637703</commentid>
    <comment_count>2</comment_count>
      <attachid>395455</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-04 10:13:22 -0700</bug_when>
    <thetext>Created attachment 395455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637704</commentid>
    <comment_count>3</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-04 10:19:45 -0700</bug_when>
    <thetext>(In reply to Jack from comment #2)
&gt; Created attachment 395455 [details]
&gt; Patch

When inserting image in anchor we try to push down the anchor element by first moving anchor&apos;s children to its parent. If anchor&apos;s parent is uneditable, the move fails and leaves the children dangling and parentless. Later the code crashes when function splitTreeToNode dereferences the parent of the dangling children.

RemoveNodePreservingChildren can fail and leave the children dangling if the parent of the node is uneditable. Added editability check for the to-be-removed node.

Also pushAnchorElementDown would fail silently and we cannot avoid anchor element in function positionAvoidingSpecialElementBoundary. Added check for same enclosing anchor and return empty Position to the caller.

Lastly in ReplaceSelectionCommand, added check for empty Position returned by positionAvoidingSpecialElementBoundary and terminate the command.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637785</commentid>
    <comment_count>4</comment_count>
      <attachid>395469</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-04 17:39:57 -0700</bug_when>
    <thetext>Created attachment 395469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638244</commentid>
    <comment_count>5</comment_count>
      <attachid>395469</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-06 12:37:46 -0700</bug_when>
    <thetext>Comment on attachment 395469
Patch

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

&gt; Source/WebCore/editing/CompositeEditCommand.cpp:1724
&gt; +                Element* newEnclosingAnchor = enclosingAnchorElement(original);
&gt; +                if (newEnclosingAnchor != enclosingAnchor)
&gt; +                    enclosingAnchor = newEnclosingAnchor;
&gt; +                else
&gt; +                    return { };

What is this change about? It should be explained in the change log as a per function comment.
I don&apos;t think this function is ever supposed to return null position like this.
See lines below where we set result to original if result is null.
r- because of this.

&gt; Source/WebCore/editing/RemoveNodePreservingChildrenCommand.cpp:44
&gt; +    ContainerNode* parent = m_node-&gt;parentNode();

Please use makeRefPtr and auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638265</commentid>
    <comment_count>6</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-06 13:09:17 -0700</bug_when>
    <thetext>
Thanks. I added a comment in the log but not under the function. Do you mean this is where it should go?

(WebCore::CompositeEditCommand::positionAvoidingSpecialElementBoundary):
       Also pushAnchorElementDown would fail silently and we cannot avoid anchor element in function positionAvoidingSpecialElementBoundary. Added check for same enclosing anchor and return empty Position to the caller.

(In reply to Ryosuke Niwa from comment #5)
&gt; Comment on attachment 395469 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395469&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/CompositeEditCommand.cpp:1724
&gt; &gt; +                Element* newEnclosingAnchor = enclosingAnchorElement(original);
&gt; &gt; +                if (newEnclosingAnchor != enclosingAnchor)
&gt; &gt; +                    enclosingAnchor = newEnclosingAnchor;
&gt; &gt; +                else
&gt; &gt; +                    return { };
&gt; 
&gt; What is this change about? It should be explained in the change log as a per
&gt; function comment.
&gt; I don&apos;t think this function is ever supposed to return null position like
&gt; this.
&gt; See lines below where we set result to original if result is null.
&gt; r- because of this.
&gt; 
&gt; &gt; Source/WebCore/editing/RemoveNodePreservingChildrenCommand.cpp:44
&gt; &gt; +    ContainerNode* parent = m_node-&gt;parentNode();
&gt; 
&gt; Please use makeRefPtr and auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638305</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-06 14:14:44 -0700</bug_when>
    <thetext>(In reply to Jack from comment #6)
&gt; Thanks. I added a comment in the log but not under the function. Do you mean
&gt; this is where it should go?
&gt; 
&gt; (WebCore::CompositeEditCommand::positionAvoidingSpecialElementBoundary):
&gt;        Also pushAnchorElementDown would fail silently and we cannot avoid
&gt; anchor element in function positionAvoidingSpecialElementBoundary. Added
&gt; check for same enclosing anchor and return empty Position to the caller.

Yes, although it should start after : in the first line.

Regardless, we shouldn&apos;t be returning null Position there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638312</commentid>
    <comment_count>8</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-06 14:24:01 -0700</bug_when>
    <thetext>Thanks. Yeah, I thought about that too and experimented with returning original position. The insertion command will continue and insert the image in anchor element without avoiding it. Therefore I thought if we return empty position, the caller can terminate the command earlier. 

Or is it okay just to let the image be inserted?

&gt; (In reply to Ryosuke Niwa from comment #5)
&gt; &gt; Comment on attachment 395469 [details]
&gt; &gt; Patch
&gt; &gt; I don&apos;t think this function is ever supposed to return null position like
&gt; &gt; this.
&gt; &gt; See lines below where we set result to original if result is null.
&gt; &gt; r- because of this.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/editing/RemoveNodePreservingChildrenCommand.cpp:44
&gt; &gt; &gt; +    ContainerNode* parent = m_node-&gt;parentNode();
&gt; &gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638318</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-06 14:31:04 -0700</bug_when>
    <thetext>(In reply to Jack from comment #8)
&gt; Thanks. Yeah, I thought about that too and experimented with returning
&gt; original position. The insertion command will continue and insert the image
&gt; in anchor element without avoiding it. Therefore I thought if we return
&gt; empty position, the caller can terminate the command earlier. 
&gt; 
&gt; Or is it okay just to let the image be inserted?

Yes. That&apos;s the exiting fallback path anyway for when the position becomes null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638320</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-06 14:31:28 -0700</bug_when>
    <thetext>There is no security implication here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638322</commentid>
    <comment_count>11</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-06 14:32:45 -0700</bug_when>
    <thetext>I see. Thanks!

(In reply to Ryosuke Niwa from comment #9)
&gt; (In reply to Jack from comment #8)
&gt; &gt; Thanks. Yeah, I thought about that too and experimented with returning
&gt; &gt; original position. The insertion command will continue and insert the image
&gt; &gt; in anchor element without avoiding it. Therefore I thought if we return
&gt; &gt; empty position, the caller can terminate the command earlier. 
&gt; &gt; 
&gt; &gt; Or is it okay just to let the image be inserted?
&gt; 
&gt; Yes. That&apos;s the exiting fallback path anyway for when the position becomes
&gt; null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638366</commentid>
    <comment_count>12</comment_count>
      <attachid>395629</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-06 16:33:15 -0700</bug_when>
    <thetext>Created attachment 395629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638466</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-06 23:29:30 -0700</bug_when>
    <thetext>Committed r259624: &lt;https://trac.webkit.org/changeset/259624&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395629.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395455</attachid>
            <date>2020-04-04 10:13:22 -0700</date>
            <delta_ts>2020-04-04 17:39:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210004-20200404101322.patch</filename>
            <type>text/plain</type>
            <size>7009</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYyMmQ0OTMyZTNhZjE3
ODliZmQ1M2RlM2UzZTQ5YjI4MzgzZmVlOS4uYTgyYjJhNTBjZTM4NTQ2ZTcxMzgyMmRlM2NjNGU1
NzA4N2NiY2ZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA0ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIE51bGxwdHIgY3Jhc2gg
aW4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNwbGl0VHJlZVRvTm9kZSB3aGVuIGluc2VydGluZyBp
bWFnZSBpbiBhbmNob3IgZWxlbWVudCB0aGF0IGhhcyB1bmVkaXRhYmxlIHBhcmVudC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDAwNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjEyMDY1ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbiBjYW4gZmFp
bCBhbmQgbGVhdmUgdGhlIGNoaWxkcmVuIGRhbmdsaW5nIGlmIHRoZSBwYXJlbnQgb2YgdGhlIG5v
ZGUKKyAgICAgICAgaXMgdW5lZGl0YWJsZS4gQWRkZWQgZWRpdGFiaWxpdHkgY2hlY2sgZm9yIHRo
ZSB0by1iZS1yZW1vdmVkIG5vZGUuCisKKyAgICAgICAgQWxzbyBwdXNoQW5jaG9yRWxlbWVudERv
d24gd291bGQgZmFpbCBzaWxlbnRseSBhbmQgd2UgY2Fubm90IGF2b2lkIGFuY2hvciBlbGVtZW50
IGluIGZ1bmN0aW9uCisgICAgICAgIHBvc2l0aW9uQXZvaWRpbmdTcGVjaWFsRWxlbWVudEJvdW5k
YXJ5LiBBZGRlZCBjaGVjayBmb3Igc2FtZSBlbmNsb3NpbmcgYW5jaG9yIGFuZCByZXR1cm4gZW1w
dHkKKyAgICAgICAgUG9zaXRpb24gdG8gdGhlIGNhbGxlci4KKworICAgICAgICBMYXN0bHkgaW4g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQsIGFkZGVkIGNoZWNrIGZvciBlbXB0eSBQb3NpdGlvbiBy
ZXR1cm5lZCBieQorICAgICAgICBwb3NpdGlvbkF2b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFy
eSBhbmQgdGVybWluYXRlIHRoZSBjb21tYW5kLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvaW5z
ZXJ0aW5nL2luc2VydC1pbWctYW5jaG9yLXVuZWRpdGFibGUtcGFyZW50Lmh0bWwKKworICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5n
L1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpkb0FwcGx5KToKKyAgICAg
ICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KToKKwogMjAyMC0wNC0wMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6
IG1fd3JhcHBlciBvbiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHktc3RhdGVzL2F1dG9wbGF5
Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKaW5kZXggNjNiZTkxZTkwNGM4OTM1ZGZmOTU2MTRjODcwYzkyNGFmMzRkYmE3OS4uOGYwZTRm
NzkzZTEyZGQ4ZjI3OTRhNjQwODhmYjgxYzhhNWJhNDUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE3MTcsNyArMTcxNywxMyBA
QCBQb3NpdGlvbiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxF
bGVtZW50Qm91bmRhcnkoY29uc3QgUG9zaQogICAgICAgICAgICAgLy8gYWxzbyBhdm9pZCBzdHJ1
Y3R1cmFsIGVsZW1lbnRzIGxpa2UgbGlzdHMgYW5kIGJsb2NrcyAoNTE0MjAxMikuCiAgICAgICAg
ICAgICBpZiAob3JpZ2luYWwuZGVwcmVjYXRlZE5vZGUoKSAhPSBlbmNsb3NpbmdBbmNob3IgJiYg
b3JpZ2luYWwuZGVwcmVjYXRlZE5vZGUoKS0+cGFyZW50Tm9kZSgpICE9IGVuY2xvc2luZ0FuY2hv
cikgewogICAgICAgICAgICAgICAgIHB1c2hBbmNob3JFbGVtZW50RG93bigqZW5jbG9zaW5nQW5j
aG9yKTsKLSAgICAgICAgICAgICAgICBlbmNsb3NpbmdBbmNob3IgPSBlbmNsb3NpbmdBbmNob3JF
bGVtZW50KG9yaWdpbmFsKTsKKyAgICAgICAgICAgICAgICBFbGVtZW50KiBuZXdFbmNsb3NpbmdB
bmNob3IgPSBlbmNsb3NpbmdBbmNob3JFbGVtZW50KG9yaWdpbmFsKTsKKyAgICAgICAgICAgICAg
ICBpZiAobmV3RW5jbG9zaW5nQW5jaG9yICE9IGVuY2xvc2luZ0FuY2hvcikKKyAgICAgICAgICAg
ICAgICAgICAgZW5jbG9zaW5nQW5jaG9yID0gbmV3RW5jbG9zaW5nQW5jaG9yOworICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoIWVuY2xvc2luZ0FuY2hvcikKICAgICAgICAgICAgICAg
ICByZXR1cm4gb3JpZ2luYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IDM0Yjll
Zjc3NzMyMWViODI1ZTllODNkMjViOTg5YjViY2Q0NzFmZWYuLmQwMGNiNjcyOTZlNDZmOWY1ZjM2
ZDQyNTI3MzFlMTMwZjQzMWE1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC00
MSw2ICs0MSwxMCBAQCBSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZDo6UmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQoUmVmPE5vZAogdm9pZCBSZW1vdmVOb2RlUHJl
c2VydmluZ0NoaWxkcmVuQ29tbWFuZDo6ZG9BcHBseSgpCiB7CiAgICAgVmVjdG9yPFJlZjxOb2Rl
Pj4gY2hpbGRyZW47CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9ub2RlLT5wYXJlbnRO
b2RlKCk7CisgICAgaWYgKCFwYXJlbnQgfHwgKG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlz
RWRpdGFibGUgPT0gRG9Ob3RBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSAmJiAhaXNFZGl0
YWJsZU5vZGUoKnBhcmVudCkpKQorICAgICAgICByZXR1cm47CisKICAgICBmb3IgKE5vZGUqIGNo
aWxkID0gbV9ub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKQogICAgICAgICBjaGlsZHJlbi5hcHBlbmQoKmNoaWxkKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBkODY2
ZTg1NTI4YjJiMWMwYTM1YTcyZmMzNTBhZmM4NzhkYzc4MGE3Li5mM2M4YTU5ODU1YzMwMmUyMTVh
ODk5ODhiNGI0Yjk0ODViNTZmZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTE3OCw2ICsxMTc4LDggQEAgdm9pZCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgCiAgICAgLy8gUGFzdGUgYXQg
c3RhcnQgb3IgZW5kIG9mIGxpbmsgZ29lcyBvdXRzaWRlIG9mIGxpbmsuCiAgICAgaW5zZXJ0aW9u
UG9zID0gcG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxFbGVtZW50Qm91bmRhcnkoaW5zZXJ0aW9uUG9z
KTsKKyAgICBpZiAoaW5zZXJ0aW9uUG9zLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgLy8gRklYTUU6IENhbiB0aGlzIHdhaXQgdW50aWwgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBo
YXMgYmVlbiBwZXJmb3JtZWQ/ICBUaGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUKICAgICAvLyBhbnkg
d29yayBwZXJmb3JtZWQgYWZ0ZXIgdGhpcyB0aGF0IHF1ZXJpZXMgb3IgdXNlcyB0aGUgdHlwaW5n
IHN0eWxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGRiMzZiODdkZTZkNTgzN2NmYzZhNDI2NmM1YzkxMmY0ZTQxZDJiM2Yu
LmIwZjYwYjQ2ZDE2MDVlNzEwMDkwNWYzNzk4Y2Y1MWY5YWZiOWUwYzMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMC0wNC0wNCAgSmFjayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4K
KworICAgICAgICBOdWxscHRyIGNyYXNoIGluIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzcGxpdFRy
ZWVUb05vZGUgd2hlbiBpbnNlcnRpbmcgaW1hZ2UgaW4gYW5jaG9yIGVsZW1lbnQgdGhhdCBoYXMg
dW5lZGl0YWJsZSBwYXJlbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTAwMDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMjA2NTgzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgcmVn
cmVzc2lvbiB0ZXN0IGZvciB0aGUgY3Jhc2guCisKKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGlu
Zy9pbnNlcnQtaW1nLWFuY2hvci11bmVkaXRhYmxlLXBhcmVudC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1pbWctYW5jaG9yLXVuZWRpdGFi
bGUtcGFyZW50Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTAxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogbV93cmFwcGVyIG9uIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeS1zdGF0ZXMvYXV0b3BsYXkuaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWltZy1hbmNob3ItdW5lZGl0
YWJsZS1wYXJlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcv
aW5zZXJ0LWltZy1hbmNob3ItdW5lZGl0YWJsZS1wYXJlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU0OWQ4MjBlNmRiN2E4OGYwYWY4YTc3ZTI5OGRkZTE3YjA5NGFlZmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtaW1nLWFuY2hvci11
bmVkaXRhYmxlLXBhcmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IGluc2Vy
dGluZyBpbWFnZSBpbiBhbmNob3IgZWxlbWVudCB0aGF0IGhhcyB1bmVkaXRhYmxlIHBhcmVudC4g
VGhlIHRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2Vzbid0IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRp
b24uCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0
LWltZy1hbmNob3ItdW5lZGl0YWJsZS1wYXJlbnQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL2luc2VydC1pbWctYW5jaG9yLXVuZWRpdGFibGUtcGFyZW50Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjg1ODA5MTcxN2VhNWI0OWFjYzY5ODU1OGViYWM4Mzg1NDFhNWMxZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1pbWctYW5jaG9y
LXVuZWRpdGFibGUtcGFyZW50Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGEgY29udGVudEVkaXRh
YmxlPXRydWUgaHJlZj0iIj48c3Bhbj5UZXN0IGluc2VydGluZyBpbWFnZSBpbiBhbmNob3IgZWxl
bWVudCB0aGF0IGhhcyB1bmVkaXRhYmxlIHBhcmVudC4gVGhlIHRlc3QgcGFzc2VzIGlmIFdlYktp
dCBkb2Vzbid0IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRpb24uPC9zcGFuPjxiciBpZD1CUj48L2Jy
PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmNvbGxhcHNlKEJSKTsKKyAgICAgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoInNlbGVjdEFsbCIsIGZhbHNlKTsKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoImZvbnROYW1lIiwgZmFsc2UsICJUaW1lcyBSb21hbiIpOworICAgICAgICBkb2N1bWVudC5n
ZXRTZWxlY3Rpb24oKS5jb2xsYXBzZVRvU3RhcnQoKTsKKyAgICAgICAgd2luZG93LmRvY3VtZW50
LmV4ZWNDb21tYW5kKCJpbnNlcnRJbWFnZSIsICIjZm9vIik7CisgICAgfQorPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395469</attachid>
            <date>2020-04-04 17:39:57 -0700</date>
            <delta_ts>2020-04-06 16:33:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210004-20200404173956.patch</filename>
            <type>text/plain</type>
            <size>6948</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYyMmQ0OTMyZTNhZjE3
ODliZmQ1M2RlM2UzZTQ5YjI4MzgzZmVlOS4uYTgyYjJhNTBjZTM4NTQ2ZTcxMzgyMmRlM2NjNGU1
NzA4N2NiY2ZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTA0ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIE51bGxwdHIgY3Jhc2gg
aW4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNwbGl0VHJlZVRvTm9kZSB3aGVuIGluc2VydGluZyBp
bWFnZSBpbiBhbmNob3IgZWxlbWVudCB0aGF0IGhhcyB1bmVkaXRhYmxlIHBhcmVudC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDAwNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjEyMDY1ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbiBjYW4gZmFp
bCBhbmQgbGVhdmUgdGhlIGNoaWxkcmVuIGRhbmdsaW5nIGlmIHRoZSBwYXJlbnQgb2YgdGhlIG5v
ZGUKKyAgICAgICAgaXMgdW5lZGl0YWJsZS4gQWRkZWQgZWRpdGFiaWxpdHkgY2hlY2sgZm9yIHRo
ZSB0by1iZS1yZW1vdmVkIG5vZGUuCisKKyAgICAgICAgQWxzbyBwdXNoQW5jaG9yRWxlbWVudERv
d24gd291bGQgZmFpbCBzaWxlbnRseSBhbmQgd2UgY2Fubm90IGF2b2lkIGFuY2hvciBlbGVtZW50
IGluIGZ1bmN0aW9uCisgICAgICAgIHBvc2l0aW9uQXZvaWRpbmdTcGVjaWFsRWxlbWVudEJvdW5k
YXJ5LiBBZGRlZCBjaGVjayBmb3Igc2FtZSBlbmNsb3NpbmcgYW5jaG9yIGFuZCByZXR1cm4gZW1w
dHkKKyAgICAgICAgUG9zaXRpb24gdG8gdGhlIGNhbGxlci4KKworICAgICAgICBMYXN0bHkgaW4g
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQsIGFkZGVkIGNoZWNrIGZvciBlbXB0eSBQb3NpdGlvbiBy
ZXR1cm5lZCBieQorICAgICAgICBwb3NpdGlvbkF2b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFy
eSBhbmQgdGVybWluYXRlIHRoZSBjb21tYW5kLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvaW5z
ZXJ0aW5nL2luc2VydC1pbWctYW5jaG9yLXVuZWRpdGFibGUtcGFyZW50Lmh0bWwKKworICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5n
L1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpkb0FwcGx5KToKKyAgICAg
ICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KToKKwogMjAyMC0wNC0wMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6
IG1fd3JhcHBlciBvbiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHktc3RhdGVzL2F1dG9wbGF5
Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKaW5kZXggNjNiZTkxZTkwNGM4OTM1ZGZmOTU2MTRjODcwYzkyNGFmMzRkYmE3OS4uYzU1ZjY4
YTkxODc4NTExYmZjYjhjMjliMmJmZjIzNDVlMDU2ZDNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE3MTcsNyArMTcxNywxMSBA
QCBQb3NpdGlvbiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxF
bGVtZW50Qm91bmRhcnkoY29uc3QgUG9zaQogICAgICAgICAgICAgLy8gYWxzbyBhdm9pZCBzdHJ1
Y3R1cmFsIGVsZW1lbnRzIGxpa2UgbGlzdHMgYW5kIGJsb2NrcyAoNTE0MjAxMikuCiAgICAgICAg
ICAgICBpZiAob3JpZ2luYWwuZGVwcmVjYXRlZE5vZGUoKSAhPSBlbmNsb3NpbmdBbmNob3IgJiYg
b3JpZ2luYWwuZGVwcmVjYXRlZE5vZGUoKS0+cGFyZW50Tm9kZSgpICE9IGVuY2xvc2luZ0FuY2hv
cikgewogICAgICAgICAgICAgICAgIHB1c2hBbmNob3JFbGVtZW50RG93bigqZW5jbG9zaW5nQW5j
aG9yKTsKLSAgICAgICAgICAgICAgICBlbmNsb3NpbmdBbmNob3IgPSBlbmNsb3NpbmdBbmNob3JF
bGVtZW50KG9yaWdpbmFsKTsKKyAgICAgICAgICAgICAgICBFbGVtZW50KiBuZXdFbmNsb3NpbmdB
bmNob3IgPSBlbmNsb3NpbmdBbmNob3JFbGVtZW50KG9yaWdpbmFsKTsKKyAgICAgICAgICAgICAg
ICBpZiAobmV3RW5jbG9zaW5nQW5jaG9yICE9IGVuY2xvc2luZ0FuY2hvcikKKyAgICAgICAgICAg
ICAgICAgICAgZW5jbG9zaW5nQW5jaG9yID0gbmV3RW5jbG9zaW5nQW5jaG9yOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICghZW5jbG9zaW5nQW5jaG9yKQogICAgICAgICAgICAgICAgIHJl
dHVybiBvcmlnaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKaW5kZXggMzRiOWVmNzc3
MzIxZWI4MjVlOWU4M2QyNWI5ODliNWJjZDQ3MWZlZi4uZDAwY2I2NzI5NmU0NmY5ZjVmMzZkNDI1
MjczMWUxMzBmNDMxYTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1v
dmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKQEAgLTQxLDYg
KzQxLDEwIEBAIFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpSZW1vdmVOb2Rl
UHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZChSZWY8Tm9kCiB2b2lkIFJlbW92ZU5vZGVQcmVzZXJ2
aW5nQ2hpbGRyZW5Db21tYW5kOjpkb0FwcGx5KCkKIHsKICAgICBWZWN0b3I8UmVmPE5vZGU+PiBj
aGlsZHJlbjsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX25vZGUtPnBhcmVudE5vZGUo
KTsKKyAgICBpZiAoIXBhcmVudCB8fCAobV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0
YWJsZSA9PSBEb05vdEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlICYmICFpc0VkaXRhYmxl
Tm9kZSgqcGFyZW50KSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoTm9kZSogY2hpbGQg
PSBtX25vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpCiAgICAgICAgIGNoaWxkcmVuLmFwcGVuZCgqY2hpbGQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGQ4NjZlODU1
MjhiMmIxYzBhMzVhNzJmYzM1MGFmYzg3OGRjNzgwYTcuLmYzYzhhNTk4NTVjMzAyZTIxNWE4OTk4
OGI0YjRiOTQ4NWI1NmZlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xMTc4LDYgKzExNzgsOCBAQCB2b2lkIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAKICAgICAvLyBQYXN0ZSBhdCBzdGFy
dCBvciBlbmQgb2YgbGluayBnb2VzIG91dHNpZGUgb2YgbGluay4KICAgICBpbnNlcnRpb25Qb3Mg
PSBwb3NpdGlvbkF2b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeShpbnNlcnRpb25Qb3MpOwor
ICAgIGlmIChpbnNlcnRpb25Qb3MuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKICAgICAKICAg
ICAvLyBGSVhNRTogQ2FuIHRoaXMgd2FpdCB1bnRpbCBhZnRlciB0aGUgb3BlcmF0aW9uIGhhcyBi
ZWVuIHBlcmZvcm1lZD8gIFRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZQogICAgIC8vIGFueSB3b3Jr
IHBlcmZvcm1lZCBhZnRlciB0aGlzIHRoYXQgcXVlcmllcyBvciB1c2VzIHRoZSB0eXBpbmcgc3R5
bGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZGIzNmI4N2RlNmQ1ODM3Y2ZjNmE0MjY2YzVjOTEyZjRlNDFkMmIzZi4uYjBm
NjBiNDZkMTYwNWU3MTAwOTA1ZjM3OThjZjUxZjlhZmI5ZTBjMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIwLTA0LTA0ICBKYWNrIExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisg
ICAgICAgIE51bGxwdHIgY3Jhc2ggaW4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNwbGl0VHJlZVRv
Tm9kZSB3aGVuIGluc2VydGluZyBpbWFnZSBpbiBhbmNob3IgZWxlbWVudCB0aGF0IGhhcyB1bmVk
aXRhYmxlIHBhcmVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMDAwNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjEyMDY1ODM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSByZWdyZXNz
aW9uIHRlc3QgZm9yIHRoZSBjcmFzaC4KKworICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL2lu
c2VydC1pbWctYW5jaG9yLXVuZWRpdGFibGUtcGFyZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWltZy1hbmNob3ItdW5lZGl0YWJsZS1w
YXJlbnQuaHRtbDogQWRkZWQuCisKIDIwMjAtMDQtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBtX3dyYXBwZXIgb24gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3JlYWR5LXN0YXRlcy9hdXRvcGxheS5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtaW1nLWFuY2hvci11bmVkaXRhYmxl
LXBhcmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNl
cnQtaW1nLWFuY2hvci11bmVkaXRhYmxlLXBhcmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTQ5ZDgyMGU2ZGI3YTg4ZjBhZjhhNzdlMjk4ZGRlMTdiMDk0YWVmZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1pbWctYW5jaG9yLXVuZWRp
dGFibGUtcGFyZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgaW5zZXJ0aW5n
IGltYWdlIGluIGFuY2hvciBlbGVtZW50IHRoYXQgaGFzIHVuZWRpdGFibGUgcGFyZW50LiBUaGUg
dGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0IGFuIGFzc2VydGlvbi4K
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtaW1n
LWFuY2hvci11bmVkaXRhYmxlLXBhcmVudC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNl
cnRpbmcvaW5zZXJ0LWltZy1hbmNob3ItdW5lZGl0YWJsZS1wYXJlbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yODU4MDkxNzE3ZWE1YjQ5YWNjNjk4NTU4ZWJhYzgzODU0MWE1YzFlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWltZy1hbmNob3ItdW5l
ZGl0YWJsZS1wYXJlbnQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8YSBjb250ZW50RWRpdGFibGU9
dHJ1ZSBocmVmPSIiPjxzcGFuPlRlc3QgaW5zZXJ0aW5nIGltYWdlIGluIGFuY2hvciBlbGVtZW50
IHRoYXQgaGFzIHVuZWRpdGFibGUgcGFyZW50LiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRv
ZXNuJ3QgY3Jhc2ggb3IgaGl0IGFuIGFzc2VydGlvbi48L3NwYW4+PGJyIGlkPUJSPjwvYnI+Cis8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisKKyAgICB3aW5kb3cub25sb2FkID0gKCkgPT4geworICAgICAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoQlIpOworICAgICAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgic2VsZWN0QWxsIiwgZmFsc2UpOworICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgi
Zm9udE5hbWUiLCBmYWxzZSwgIlRpbWVzIFJvbWFuIik7CisgICAgICAgIGRvY3VtZW50LmdldFNl
bGVjdGlvbigpLmNvbGxhcHNlVG9TdGFydCgpOworICAgICAgICB3aW5kb3cuZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoImluc2VydEltYWdlIiwgIiNmb28iKTsKKyAgICB9Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395629</attachid>
            <date>2020-04-06 16:33:15 -0700</date>
            <delta_ts>2020-04-06 23:29:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210004-20200406163314.patch</filename>
            <type>text/plain</type>
            <size>4483</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYyMmQ0OTMyZTNhZjE3
ODliZmQ1M2RlM2UzZTQ5YjI4MzgzZmVlOS4uNzgzNTk1OTU3OWNkNjk2NGE0NTI3MjdiYzJhMjQw
ZDA3YmEzM2QxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA0LTA2ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIE51bGxwdHIgY3Jhc2gg
aW4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNwbGl0VHJlZVRvTm9kZSB3aGVuIGluc2VydGluZyBp
bWFnZSBpbiBhbmNob3IgZWxlbWVudCB0aGF0IGhhcyB1bmVkaXRhYmxlIHBhcmVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDA0CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MTIwNjU4Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuIGNhbiBmYWls
IGFuZCBsZWF2ZSB0aGUgY2hpbGRyZW4gZGFuZ2xpbmcgaWYgdGhlIHBhcmVudCBvZiB0aGUgbm9k
ZQorICAgICAgICBpcyB1bmVkaXRhYmxlLiBBZGRlZCBlZGl0YWJpbGl0eSBjaGVjayBmb3IgdGhl
IHRvLWJlLXJlbW92ZWQgbm9kZS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2luc2VydGluZy9p
bnNlcnQtaW1nLWFuY2hvci11bmVkaXRhYmxlLXBhcmVudC5odG1sCisKKyAgICAgICAgKiBlZGl0
aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpkb0FwcGx5KToKKwog
MjAyMC0wNC0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFT
U0VSVElPTiBGQUlMRUQ6IG1fd3JhcHBlciBvbiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHkt
c3RhdGVzL2F1dG9wbGF5Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKaW5kZXggMzRi
OWVmNzc3MzIxZWI4MjVlOWU4M2QyNWI5ODliNWJjZDQ3MWZlZi4uYjY0ZjY3NWI2MjkyOTIxMzMx
MDAwNTI1NDZmZGEyZGVjYjM5OTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKQEAg
LTQxLDYgKzQxLDEwIEBAIFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpSZW1v
dmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZChSZWY8Tm9kCiB2b2lkIFJlbW92ZU5vZGVQ
cmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpkb0FwcGx5KCkKIHsKICAgICBWZWN0b3I8UmVmPE5v
ZGU+PiBjaGlsZHJlbjsKKyAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIobV9ub2RlLT5wYXJl
bnROb2RlKCkpOworICAgIGlmICghcGFyZW50IHx8IChtX3Nob3VsZEFzc3VtZUNvbnRlbnRJc0Fs
d2F5c0VkaXRhYmxlID09IERvTm90QXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUgJiYgIWlz
RWRpdGFibGVOb2RlKCpwYXJlbnQpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IG1fbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkKICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKCpjaGlsZCk7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBk
YjM2Yjg3ZGU2ZDU4MzdjZmM2YTQyNjZjNWM5MTJmNGU0MWQyYjNmLi4yYmU1ZjFmN2NjMDIxNDBl
YTc2YjBkZGNkMjkzZjk0MmM5NTQzOGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDQt
MDYgIEphY2sgTGVlICA8c2hpaGNoaWVoX2xlZUBhcHBsZS5jb20+CisKKyAgICAgICAgTnVsbHB0
ciBjcmFzaCBpbiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c3BsaXRUcmVlVG9Ob2RlIHdoZW4gaW5z
ZXJ0aW5nIGltYWdlIGluIGFuY2hvciBlbGVtZW50IHRoYXQgaGFzIHVuZWRpdGFibGUgcGFyZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwMDQK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMjA2NTgzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0
aGUgY3Jhc2guCisKKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9pbnNlcnQtaW1nLWFuY2hv
ci11bmVkaXRhYmxlLXBhcmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvaW5zZXJ0aW5nL2luc2VydC1pbWctYW5jaG9yLXVuZWRpdGFibGUtcGFyZW50Lmh0bWw6IEFk
ZGVkLgorCiAyMDIwLTA0LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQVNTRVJUSU9OIEZBSUxFRDogbV93cmFwcGVyIG9uIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9yZWFkeS1zdGF0ZXMvYXV0b3BsYXkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9pbnNlcnRpbmcvaW5zZXJ0LWltZy1hbmNob3ItdW5lZGl0YWJsZS1wYXJlbnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWltZy1hbmNob3It
dW5lZGl0YWJsZS1wYXJlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0OWQ4MjBlNmRiN2E4
OGYwYWY4YTc3ZTI5OGRkZTE3YjA5NGFlZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtaW1nLWFuY2hvci11bmVkaXRhYmxlLXBhcmVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IGluc2VydGluZyBpbWFnZSBpbiBhbmNo
b3IgZWxlbWVudCB0aGF0IGhhcyB1bmVkaXRhYmxlIHBhcmVudC4gVGhlIHRlc3QgcGFzc2VzIGlm
IFdlYktpdCBkb2Vzbid0IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRpb24uCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWltZy1hbmNob3ItdW5lZGl0
YWJsZS1wYXJlbnQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1p
bWctYW5jaG9yLXVuZWRpdGFibGUtcGFyZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg1ODA5MTcxN2Vh
NWI0OWFjYzY5ODU1OGViYWM4Mzg1NDFhNWMxZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1pbWctYW5jaG9yLXVuZWRpdGFibGUtcGFyZW50
Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGEgY29udGVudEVkaXRhYmxlPXRydWUgaHJlZj0iIj48
c3Bhbj5UZXN0IGluc2VydGluZyBpbWFnZSBpbiBhbmNob3IgZWxlbWVudCB0aGF0IGhhcyB1bmVk
aXRhYmxlIHBhcmVudC4gVGhlIHRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2Vzbid0IGNyYXNoIG9y
IGhpdCBhbiBhc3NlcnRpb24uPC9zcGFuPjxiciBpZD1CUj48L2JyPgorPHNjcmlwdD4KKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
CisgICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmNvbGxhcHNlKEJSKTsKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNlbGVjdEFs
bCIsIGZhbHNlKTsKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImZvbnROYW1lIiwgZmFs
c2UsICJUaW1lcyBSb21hbiIpOworICAgICAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5jb2xs
YXBzZVRvU3RhcnQoKTsKKyAgICAgICAgd2luZG93LmRvY3VtZW50LmV4ZWNDb21tYW5kKCJpbnNl
cnRJbWFnZSIsICIjZm9vIik7CisgICAgfQorPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>