<?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>206917</bug_id>
          
          <creation_ts>2020-01-28 17:55:48 -0800</creation_ts>
          <short_desc>Crash in RenderTreeBuilder::Table::findOrCreateParentForChild with multicol spanner</short_desc>
          <delta_ts>2020-02-08 06:10:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Local Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.15</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="Doug Kelly">dougk</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1612286</commentid>
    <comment_count>0</comment_count>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-01-28 17:55:48 -0800</bug_when>
    <thetext>WebKit crashes with a null pointer deref in RenderTreeBuilder::Table::findOrCreateParentForChild() when a multicol spanner is the sibling element where we&apos;re trying to insert a new element.

&lt;rdar://problem/56686036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612289</commentid>
    <comment_count>1</comment_count>
      <attachid>389097</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-01-28 18:01:25 -0800</bug_when>
    <thetext>Created attachment 389097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612955</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-30 08:05:31 -0800</bug_when>
    <thetext>I think a more correct fix would adjust the beforeChild in case of a spanner so that the rest of the function would just operate on this new candidate position.
diff --git a/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp b/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp
index 18dd26c7b37..ab67975f442 100644
--- a/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp
+++ b/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp
@@ -89,6 +89,22 @@ RenderElement&amp; RenderTreeBuilder::Table::findOrCreateParentForChild(RenderTableS
     if (is&lt;RenderTableRow&gt;(child))
         return parent;
 
+    if (is&lt;RenderBox&gt;(beforeChild)) {
+        // Adjust the beforeChild if it happens to be a spanner and the its actual location is somewhere else in the render tree.
+        auto&amp; beforeChildBox = downcast&lt;RenderBox&gt;(*beforeChild);
+        if (auto* enclosingFragmentedFlow = parent.enclosingFragmentedFlow()) {
+            auto columnSpannerPlaceholderForBeforeChild = [&amp;]() -&gt; RenderObject* {
+                if (!is&lt;RenderMultiColumnFlow&gt;(enclosingFragmentedFlow))
+                    return nullptr;
+                auto&amp; multiColumnFlow = downcast&lt;RenderMultiColumnFlow&gt;(*enclosingFragmentedFlow);
+                return multiColumnFlow.findColumnSpannerPlaceholder(&amp;beforeChildBox);
+            };
+
+            if (auto* spannerPlaceholder = columnSpannerPlaceholderForBeforeChild())
+                beforeChild = spannerPlaceholder;
+        }
+    }
+
     auto* lastChild = beforeChild ? beforeChild : parent.lastRow();
     if (is&lt;RenderTableRow&gt;(lastChild) &amp;&amp; lastChild-&gt;isAnonymous() &amp;&amp; !lastChild-&gt;isBeforeOrAfterContent()) {
         if (beforeChild == lastChild)

and here is a bit simpler test case.

&lt;style&gt;
body { 
    display: table-header-group;
    overflow-y: -webkit-paged-x;
}
div {
    column-span: all;
}
&lt;/style&gt;
&lt;body&gt;&lt;span id=span&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;script&gt;
document.body.offsetHeight;
span.outerText = &quot;remove&quot;;
document.body.innerText = &quot;This test verifies that adding an element which is a sibling to a multicol spanner finds the correct table row. Test passes if WebKit does not crash. PASS&quot;;
if (window.testRunner)
    testRunner.dumpAsText();
&lt;/script&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613142</commentid>
    <comment_count>3</comment_count>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-01-30 14:27:33 -0800</bug_when>
    <thetext>(In reply to zalan from comment #2)
&gt; I think a more correct fix would adjust the beforeChild in case of a spanner
&gt; so that the rest of the function would just operate on this new candidate
&gt; position.
&gt; diff --git a/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp
&gt; b/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp
&gt; index 18dd26c7b37..ab67975f442 100644
&gt; --- a/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp
&gt; +++ b/Source/WebCore/rendering/updating/RenderTreeBuilderTable.cpp
&gt; @@ -89,6 +89,22 @@ RenderElement&amp;
&gt; RenderTreeBuilder::Table::findOrCreateParentForChild(RenderTableS
&gt;      if (is&lt;RenderTableRow&gt;(child))
&gt;          return parent;
&gt;  
&gt; +    if (is&lt;RenderBox&gt;(beforeChild)) {
&gt; +        // Adjust the beforeChild if it happens to be a spanner and the its
&gt; actual location is somewhere else in the render tree.
&gt; +        auto&amp; beforeChildBox = downcast&lt;RenderBox&gt;(*beforeChild);
&gt; +        if (auto* enclosingFragmentedFlow =
&gt; parent.enclosingFragmentedFlow()) {
&gt; +            auto columnSpannerPlaceholderForBeforeChild = [&amp;]() -&gt;
&gt; RenderObject* {
&gt; +                if (!is&lt;RenderMultiColumnFlow&gt;(enclosingFragmentedFlow))
&gt; +                    return nullptr;
&gt; +                auto&amp; multiColumnFlow =
&gt; downcast&lt;RenderMultiColumnFlow&gt;(*enclosingFragmentedFlow);
&gt; +                return
&gt; multiColumnFlow.findColumnSpannerPlaceholder(&amp;beforeChildBox);
&gt; +            };
&gt; +
&gt; +            if (auto* spannerPlaceholder =
&gt; columnSpannerPlaceholderForBeforeChild())
&gt; +                beforeChild = spannerPlaceholder;
&gt; +        }
&gt; +    }
&gt; +
&gt;      auto* lastChild = beforeChild ? beforeChild : parent.lastRow();
&gt;      if (is&lt;RenderTableRow&gt;(lastChild) &amp;&amp; lastChild-&gt;isAnonymous() &amp;&amp;
&gt; !lastChild-&gt;isBeforeOrAfterContent()) {
&gt;          if (beforeChild == lastChild)
&gt; 

Seems fine.  This does have a side effect of changing beforeChild (which is passed by reference), but I see this is already done elsewhere in this function.

&gt; and here is a bit simpler test case.
&gt; 
&gt; &lt;style&gt;
&gt; body { 
&gt;     display: table-header-group;
&gt;     overflow-y: -webkit-paged-x;
&gt; }
&gt; div {
&gt;     column-span: all;
&gt; }
&gt; &lt;/style&gt;
&gt; &lt;body&gt;&lt;span id=span&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;script&gt;
&gt; document.body.offsetHeight;
&gt; span.outerText = &quot;remove&quot;;
&gt; document.body.innerText = &quot;This test verifies that adding an element which
&gt; is a sibling to a multicol spanner finds the correct table row. Test passes
&gt; if WebKit does not crash. PASS&quot;;
&gt; if (window.testRunner)
&gt;     testRunner.dumpAsText();
&gt; &lt;/script&gt;

In my testing, this doesn&apos;t trigger the same codepath as the original test case...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613190</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-30 16:00:42 -0800</bug_when>
    <thetext>&gt; &gt; and here is a bit simpler test case.
&gt; &gt; 
&gt; &gt; &lt;style&gt;
&gt; &gt; body { 
&gt; &gt;     display: table-header-group;
&gt; &gt;     overflow-y: -webkit-paged-x;
&gt; &gt; }
&gt; &gt; div {
&gt; &gt;     column-span: all;
&gt; &gt; }
&gt; &gt; &lt;/style&gt;
&gt; &gt; &lt;body&gt;&lt;span id=span&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;script&gt;
&gt; &gt; document.body.offsetHeight;
&gt; &gt; span.outerText = &quot;remove&quot;;
&gt; &gt; document.body.innerText = &quot;This test verifies that adding an element which
&gt; &gt; is a sibling to a multicol spanner finds the correct table row. Test passes
&gt; &gt; if WebKit does not crash. PASS&quot;;
&gt; &gt; if (window.testRunner)
&gt; &gt;     testRunner.dumpAsText();
&gt; &gt; &lt;/script&gt;
&gt; 
&gt; In my testing, this doesn&apos;t trigger the same codepath as the original test
&gt; case...
It looks like the unrelated &quot;document.body.innerText = &quot; has a side effect. We need to force a style recalc/layout first by calling document.body.offsetHeight;

This should do:

document.body.offsetHeight;
span.outerText = &quot;remove&quot;;
document.body.offsetHeight;

document.body.innerText = &quot;This test verifies that adding an element which is a sibling to a multicol spanner finds the correct table row. Test passes if WebKit does not crash. PASS&quot;;
if (window.testRunner)
    testRunner.dumpAsText();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613210</commentid>
    <comment_count>5</comment_count>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-01-30 16:37:39 -0800</bug_when>
    <thetext>Yep, the second relayout fixes the issue. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613248</commentid>
    <comment_count>6</comment_count>
      <attachid>389323</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-01-30 18:15:23 -0800</bug_when>
    <thetext>Created attachment 389323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613441</commentid>
    <comment_count>7</comment_count>
      <attachid>389323</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-31 09:54:20 -0800</bug_when>
    <thetext>Comment on attachment 389323
Patch

I still need to do a final check on the incoming beforeChild, before landing this. Will take care of the cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613736</commentid>
    <comment_count>8</comment_count>
      <attachid>389323</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-02-01 09:04:46 -0800</bug_when>
    <thetext>Comment on attachment 389323
Patch

I figured we could actually be a bit more generic here by moving this beforeChild adjustment to the caller to cover other, non table cases as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613741</commentid>
    <comment_count>9</comment_count>
      <attachid>389463</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-02-01 10:04:36 -0800</bug_when>
    <thetext>Created attachment 389463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613742</commentid>
    <comment_count>10</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-02-01 10:06:48 -0800</bug_when>
    <thetext>(In reply to zalan from comment #9)
&gt; Created attachment 389463 [details]
&gt; Patch
I&apos;d do something like this^^. If there&apos;s any fallout, we should be able to address them quickly (or just go back to the less generic fix).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615249</commentid>
    <comment_count>11</comment_count>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-02-05 13:42:14 -0800</bug_when>
    <thetext>(In reply to zalan from comment #10)
&gt; (In reply to zalan from comment #9)
&gt; &gt; Created attachment 389463 [details]
&gt; &gt; Patch
&gt; I&apos;d do something like this^^. If there&apos;s any fallout, we should be able to
&gt; address them quickly (or just go back to the less generic fix).

Looks good to me.  Should this be marked for review? (I don&apos;t see any reason for me to re-upload the same change.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616480</commentid>
    <comment_count>12</comment_count>
      <attachid>390150</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-02-07 16:55:24 -0800</bug_when>
    <thetext>Created attachment 390150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616554</commentid>
    <comment_count>13</comment_count>
      <attachid>390150</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-08 06:10:30 -0800</bug_when>
    <thetext>Comment on attachment 390150
Patch

Clearing flags on attachment: 390150

Committed r256089: &lt;https://trac.webkit.org/changeset/256089&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616555</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-08 06:10:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389097</attachid>
            <date>2020-01-28 18:01:25 -0800</date>
            <delta_ts>2020-01-30 18:15:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206917-20200128180123.patch</filename>
            <type>text/plain</type>
            <size>6524</size>
            <attacher name="Doug Kelly">dougk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VhYmQyZjcxNTkyMDRl
ZDQ0ZjkyODliYTFlMmFiNGRiYzZhMzJkYy4uNzk0ZGNkZmMwMGI1NGNmOWNlYzlmMjhmOGY3YmIx
NjRlMzExYmY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAxLTI4ICBEb3Vn
IEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoIGluIFJlbmRlclRyZWVC
dWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQgd2l0aCBtdWx0aWNvbCBz
cGFubmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDY5MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
aGVuIGZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKCkgaXMgYXR0ZW1wdGluZyB0byBsb2NhdGUg
dGhlIGNvcnJlY3QgdGFibGUgcm93LCBpZiB0aGUgdGFibGUgcm93CisgICAgICAgIHdoZXJlIHRo
ZSBlbGVtZW50IGlzIHRvIGJlIGFkZGVkIGlzIGEgbXVsdGljb2wgc3Bhbm5lciwgdGhlIHNpYmxp
bmcgZWxlbWVudCB3aWxsIG5vIGxvbmdlciBiZSB3aXRoaW4KKyAgICAgICAgdGhlIHRhYmxlJ3Mg
aGllcmFyY2h5LiAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2Ugc2hvdWxkIHdhbGsgdGhlIHBhcmVu
dCBoaWVyYXJjaHkgdG8gc2VlIGlmIHdlJ3JlIGluCisgICAgICAgIGEgbXVsdGljb2wgZmxvdywg
YW5kIGlmIHdlIGFyZSwgY2hlY2sgdGhlIFNwYW5uZXJNYXAgdG8gc2VlIGlmIHRoZSBvcmlnaW5h
bCBlbGVtZW50IGlzIHByZXNlbnQsIHNvCisgICAgICAgIHdlIGNhbiBpbnN0ZWFkIGluc2VydCBh
cyBhIHNpYmxpbmcgb2YgdGhlIHNwYW5uZXIgcGxhY2Vob2xkZXIuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10YWJsZS1wYXJlbnQuaHRt
bAorCisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlRhYmxlOjpmaW5kT3JD
cmVhdGVQYXJlbnRGb3JDaGlsZCk6CisKIDIwMjAtMDEtMjQgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NTA4
OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcAppbmRleCAxOGRkMjZjN2IzNzQ1ZGNkYTZlM2U5ZDkx
Zjc5MzIxN2I1YTZmM2RkLi5jYzFkMWEzYTIxZjM1ZmJmYzNjYjY1ZWRmYmU0YTdiNzRlZWVmMzk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyVGFibGUuY3BwCkBAIC0xMDcsMTAgKzEwNywyNSBAQCBSZW5kZXJF
bGVtZW50JiBSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6OmZpbmRPckNyZWF0ZVBhcmVudEZvckNo
aWxkKFJlbmRlclRhYmxlUwogICAgIC8vIElmIGJlZm9yZUNoaWxkIGlzIGluc2lkZSBhbiBhbm9u
eW1vdXMgY2VsbC9yb3csIGluc2VydCBpbnRvIHRoZSBjZWxsIG9yIGludG8KICAgICAvLyB0aGUg
YW5vbnltb3VzIHJvdyBjb250YWluaW5nIGl0LCBpZiB0aGVyZSBpcyBvbmUuCiAgICAgYXV0byog
cGFyZW50Q2FuZGlkYXRlID0gbGFzdENoaWxkOwotICAgIHdoaWxlIChwYXJlbnRDYW5kaWRhdGUg
JiYgcGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQoKS0+aXNBbm9ueW1vdXMoKSAmJiAhaXM8UmVuZGVy
VGFibGVSb3c+KCpwYXJlbnRDYW5kaWRhdGUpKQorICAgIHdoaWxlIChwYXJlbnRDYW5kaWRhdGUg
JiYgcGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQoKSAmJiBwYXJlbnRDYW5kaWRhdGUtPnBhcmVudCgp
LT5pc0Fub255bW91cygpICYmICFpczxSZW5kZXJUYWJsZVJvdz4oKnBhcmVudENhbmRpZGF0ZSkp
CiAgICAgICAgIHBhcmVudENhbmRpZGF0ZSA9IHBhcmVudENhbmRpZGF0ZS0+cGFyZW50KCk7CiAg
ICAgaWYgKGlzPFJlbmRlclRhYmxlUm93PihwYXJlbnRDYW5kaWRhdGUpICYmIHBhcmVudENhbmRp
ZGF0ZS0+aXNBbm9ueW1vdXMoKSAmJiAhcGFyZW50Q2FuZGlkYXRlLT5pc0JlZm9yZU9yQWZ0ZXJD
b250ZW50KCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqcGFyZW50
Q2FuZGlkYXRlKTsKKyAgICBlbHNlIGlmIChwYXJlbnRDYW5kaWRhdGUgJiYgbGFzdENoaWxkICYm
ICFwYXJlbnRDYW5kaWRhdGUtPnBhcmVudCgpKSB7CisgICAgICAgIC8vIElmIHdlIGdldCBoZXJl
LCB3ZSBtYXkgbm90IGhhdmUgZm91bmQgdGhlIGNvcnJlY3QgY29udGFpbmluZyByb3cgZHVlIHRv
IGEgbXVsdGljb2x1bW4gc3Bhbm5lciBiZWluZyBtb3ZlZCBvdXQgb2YgdGhlIGhpZXJhcmNoeS4K
KyAgICAgICAgLy8gSWYgdGhpcyBoYXBwZW5zLCBjaGVjayBmb3IgYSBNdWx0aUNvbHVtbiBmbG93
IGJlZm9yZSB3ZSBhc3N1bWUgd2UgbmVlZCB0byBtYWtlIGEgbmV3IHJvdy4KKyAgICAgICAgUmVu
ZGVyRWxlbWVudCogY3VycmVudEVsZW1lbnQgPSAmcGFyZW50OworICAgICAgICB3aGlsZSAoY3Vy
cmVudEVsZW1lbnQgJiYgIWlzPFJlbmRlck11bHRpQ29sdW1uRmxvdz4oKmN1cnJlbnRFbGVtZW50
KSkKKyAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQtPnBhcmVudCgp
OworICAgICAgICBpZiAoaXM8UmVuZGVyQm94PigqbGFzdENoaWxkKSAmJiBjdXJyZW50RWxlbWVu
dCAmJiBkb3duY2FzdDxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KCpjdXJyZW50RWxlbWVudCkuc3Bh
bm5lck1hcCgpLmNvbnRhaW5zKCZkb3duY2FzdDxSZW5kZXJCb3g+KCpsYXN0Q2hpbGQpKSkgewor
ICAgICAgICAgICAgYXV0byBzcGFubmVyUGxhY2Vob2xkZXIgPSBkb3duY2FzdDxSZW5kZXJNdWx0
aUNvbHVtbkZsb3c+KCpjdXJyZW50RWxlbWVudCkuc3Bhbm5lck1hcCgpLmdldCgmZG93bmNhc3Q8
UmVuZGVyQm94PigqbGFzdENoaWxkKSk7CisgICAgICAgICAgICBwYXJlbnRDYW5kaWRhdGUgPSBz
cGFubmVyUGxhY2Vob2xkZXIuZ2V0KCk7CisgICAgICAgICAgICB3aGlsZSAocGFyZW50Q2FuZGlk
YXRlICYmIHBhcmVudENhbmRpZGF0ZS0+cGFyZW50KCkgJiYgcGFyZW50Q2FuZGlkYXRlLT5wYXJl
bnQoKS0+aXNBbm9ueW1vdXMoKSAmJiAhaXM8UmVuZGVyVGFibGVSb3c+KCpwYXJlbnRDYW5kaWRh
dGUpKQorICAgICAgICAgICAgICAgIHBhcmVudENhbmRpZGF0ZSA9IHBhcmVudENhbmRpZGF0ZS0+
cGFyZW50KCk7CisgICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KHBhcmVudENhbmRp
ZGF0ZSkgJiYgcGFyZW50Q2FuZGlkYXRlLT5pc0Fub255bW91cygpICYmICFwYXJlbnRDYW5kaWRh
dGUtPmlzQmVmb3JlT3JBZnRlckNvbnRlbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnBhcmVudENhbmRpZGF0ZSk7CisgICAgICAgIH0KKyAgICB9
CiAKICAgICBhdXRvIG5ld1JvdyA9IFJlbmRlclRhYmxlUm93OjpjcmVhdGVBbm9ueW1vdXNXaXRo
UGFyZW50UmVuZGVyZXIocGFyZW50KTsKICAgICBhdXRvJiByb3cgPSAqbmV3Um93OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDJkNWE4ODliOWM2MTBkYWM2NWE3YTRlODdmMjk2NTlkZjJlYjViMzguLjIxZThkNzcwMDg1NGVi
ODk1YjM4NTE4YjExMDUwYTFkNGVmNjA3MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0w
MS0yOCAgRG91ZyBLZWxseSAgPGRvdWdrQGFwcGxlLmNvbT4KKworICAgICAgICBDcmFzaCBpbiBS
ZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6OmZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkIHdpdGgg
bXVsdGljb2wgc3Bhbm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2OTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L211bHRpY29sL3NwYW5uZXItY3Jhc2gtd2hlbi1maW5kaW5nLXRhYmxl
LXBhcmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbXVsdGljb2wvc3Bh
bm5lci1jcmFzaC13aGVuLWZpbmRpbmctdGFibGUtcGFyZW50Lmh0bWw6IEFkZGVkLgorCiAyMDIw
LTAxLTI0ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgTWVkaWFSZWNvcmRlci5yZXF1ZXN0RGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10YWJsZS1wYXJl
bnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNo
LXdoZW4tZmluZGluZy10YWJsZS1wYXJlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMjQ1
MjBlYzQzMDAxNDdhMTc5NWExMTQwMzQxMzZmNjExYzk1NDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW5uZXItY3Jhc2gtd2hlbi1maW5kaW5nLXRhYmxl
LXBhcmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorOm5vdChkdCkgeyBkaXNwbGF5OiB0
YWJsZS1oZWFkZXItZ3JvdXA7IG92ZXJmbG93LXk6IC13ZWJraXQtcGFnZWQteDsgfSAjYmFzZWZv
bnQgeyBkaXNwbGF5OiBmbGV4OyBjb2x1bW4tc3BhbjogYWxsIH0gZnVuY3Rpb24gbG9hZCgpIHsg
YmFzZWZvbnQuc2Nyb2xsTGVmdDsgdmlkZW8ub3V0ZXJUZXh0ID0gImEiOyBkb2N1bWVudC5ib2R5
LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhZGRpbmcgYW4gZWxlbWVudCB3
aGljaCBpcyBhIHNpYmxpbmcgdG8gYSBtdWx0aWNvbCBzcGFubmVyIGZpbmRzIHRoZSBjb3JyZWN0
IHRhYmxlIHJvdy4gVGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXMgbm90IGNyYXNoLiBQQVNTIjsg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsgfSBUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBhZGRpbmcgYW4gZWxlbWVudCB3aGljaCBpcyBhIHNpYmxpbmcgdG8g
YSBtdWx0aWNvbCBzcGFubmVyIGZpbmRzIHRoZSBjb3JyZWN0IHRhYmxlIHJvdy4gVGVzdCBwYXNz
ZXMgaWYgV2ViS2l0IGRvZXMgbm90IGNyYXNoLiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L211bHRpY29sL3NwYW5uZXItY3Jhc2gtd2hlbi1maW5kaW5nLXRhYmxlLXBhcmVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGlu
Zy10YWJsZS1wYXJlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzA4MWEyZjliNDkxMzYxMWQ4Y2NhMDQ0
MWM0OGNmNWE2NjI5MjJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tdWx0
aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10YWJsZS1wYXJlbnQuaHRtbApAQCAtMCww
ICsxLDE4IEBACis8c3R5bGU+Cis6bm90KGR0KSB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91
cDsgb3ZlcmZsb3cteTogLXdlYmtpdC1wYWdlZC14OyB9CisjYmFzZWZvbnQgeyBkaXNwbGF5OiBm
bGV4OyBjb2x1bW4tc3BhbjogYWxsIH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9h
ZCgpIHsKKyAgICBiYXNlZm9udC5zY3JvbGxMZWZ0OworICAgIHZpZGVvLm91dGVyVGV4dCA9ICJh
IjsKKyAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCBhZGRpbmcgYW4gZWxlbWVudCB3aGljaCBpcyBhIHNpYmxpbmcgdG8gYSBtdWx0aWNvbCBzcGFu
bmVyIGZpbmRzIHRoZSBjb3JyZWN0IHRhYmxlIHJvdy4gIFRlc3QgcGFzc2VzIGlmIFdlYktpdCBk
b2VzIG5vdCBjcmFzaC4gIFBBU1MiOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD1s
b2FkKCk+Cis8dmlkZW8gaWQ9InZpZGVvIj4KKzwvdmlkZW8+Cis8YmFzZWZvbnQgaWQ9ImJhc2Vm
b250Ij48L2Jhc2Vmb250PgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389323</attachid>
            <date>2020-01-30 18:15:23 -0800</date>
            <delta_ts>2020-02-01 09:04:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206917-20200130181521.patch</filename>
            <type>text/plain</type>
            <size>5966</size>
            <attacher name="Doug Kelly">dougk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VhYmQyZjcxNTkyMDRl
ZDQ0ZjkyODliYTFlMmFiNGRiYzZhMzJkYy4uNzk0ZGNkZmMwMGI1NGNmOWNlYzlmMjhmOGY3YmIx
NjRlMzExYmY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAxLTI4ICBEb3Vn
IEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoIGluIFJlbmRlclRyZWVC
dWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQgd2l0aCBtdWx0aWNvbCBz
cGFubmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDY5MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
aGVuIGZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKCkgaXMgYXR0ZW1wdGluZyB0byBsb2NhdGUg
dGhlIGNvcnJlY3QgdGFibGUgcm93LCBpZiB0aGUgdGFibGUgcm93CisgICAgICAgIHdoZXJlIHRo
ZSBlbGVtZW50IGlzIHRvIGJlIGFkZGVkIGlzIGEgbXVsdGljb2wgc3Bhbm5lciwgdGhlIHNpYmxp
bmcgZWxlbWVudCB3aWxsIG5vIGxvbmdlciBiZSB3aXRoaW4KKyAgICAgICAgdGhlIHRhYmxlJ3Mg
aGllcmFyY2h5LiAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2Ugc2hvdWxkIHdhbGsgdGhlIHBhcmVu
dCBoaWVyYXJjaHkgdG8gc2VlIGlmIHdlJ3JlIGluCisgICAgICAgIGEgbXVsdGljb2wgZmxvdywg
YW5kIGlmIHdlIGFyZSwgY2hlY2sgdGhlIFNwYW5uZXJNYXAgdG8gc2VlIGlmIHRoZSBvcmlnaW5h
bCBlbGVtZW50IGlzIHByZXNlbnQsIHNvCisgICAgICAgIHdlIGNhbiBpbnN0ZWFkIGluc2VydCBh
cyBhIHNpYmxpbmcgb2YgdGhlIHNwYW5uZXIgcGxhY2Vob2xkZXIuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10YWJsZS1wYXJlbnQuaHRt
bAorCisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlRhYmxlOjpmaW5kT3JD
cmVhdGVQYXJlbnRGb3JDaGlsZCk6CisKIDIwMjAtMDEtMjQgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NTA4
OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcAppbmRleCAxOGRkMjZjN2IzNzQ1ZGNkYTZlM2U5ZDkx
Zjc5MzIxN2I1YTZmM2RkLi4zYWIxZDM5ZWE4ZjBkODJlYmZmMDIwNTkyY2ViOTY5NjFlYzk3ZDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyVGFibGUuY3BwCkBAIC04OSw2ICs4OSwyMiBAQCBSZW5kZXJFbGVt
ZW50JiBSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6OmZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxk
KFJlbmRlclRhYmxlUwogICAgIGlmIChpczxSZW5kZXJUYWJsZVJvdz4oY2hpbGQpKQogICAgICAg
ICByZXR1cm4gcGFyZW50OwogCisgICAgaWYgKGlzPFJlbmRlckJveD4oYmVmb3JlQ2hpbGQpKSB7
CisgICAgICAgIC8vIEFkanVzdCB0aGUgYmVmb3JlQ2hpbGQgaWYgaXQgaGFwcGVucyB0byBiZSBh
IHNwYW5uZXIgYW5kIHRoZSBpdHMgYWN0dWFsIGxvY2F0aW9uIGlzIHNvbWV3aGVyZSBlbHNlIGlu
IHRoZSByZW5kZXIgdHJlZS4KKyAgICAgICAgYXV0byYgYmVmb3JlQ2hpbGRCb3ggPSBkb3duY2Fz
dDxSZW5kZXJCb3g+KCpiZWZvcmVDaGlsZCk7CisgICAgICAgIGlmIChhdXRvKiBlbmNsb3NpbmdG
cmFnbWVudGVkRmxvdyA9IHBhcmVudC5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpKSB7CisgICAg
ICAgICAgICBhdXRvIGNvbHVtblNwYW5uZXJQbGFjZWhvbGRlckZvckJlZm9yZUNoaWxkID0gWyZd
KCkgLT4gUmVuZGVyT2JqZWN0KiB7CisgICAgICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJNdWx0
aUNvbHVtbkZsb3c+KGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgYXV0byYgbXVsdGlDb2x1bW5GbG93
ID0gZG93bmNhc3Q8UmVuZGVyTXVsdGlDb2x1bW5GbG93PigqZW5jbG9zaW5nRnJhZ21lbnRlZEZs
b3cpOworICAgICAgICAgICAgICAgIHJldHVybiBtdWx0aUNvbHVtbkZsb3cuZmluZENvbHVtblNw
YW5uZXJQbGFjZWhvbGRlcigmYmVmb3JlQ2hpbGRCb3gpOworICAgICAgICAgICAgfTsKKworICAg
ICAgICAgICAgaWYgKGF1dG8qIHNwYW5uZXJQbGFjZWhvbGRlciA9IGNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlckZvckJlZm9yZUNoaWxkKCkpCisgICAgICAgICAgICAgICAgYmVmb3JlQ2hpbGQgPSBz
cGFubmVyUGxhY2Vob2xkZXI7CisgICAgICAgIH0KKyAgICB9CisKICAgICBhdXRvKiBsYXN0Q2hp
bGQgPSBiZWZvcmVDaGlsZCA/IGJlZm9yZUNoaWxkIDogcGFyZW50Lmxhc3RSb3coKTsKICAgICBp
ZiAoaXM8UmVuZGVyVGFibGVSb3c+KGxhc3RDaGlsZCkgJiYgbGFzdENoaWxkLT5pc0Fub255bW91
cygpICYmICFsYXN0Q2hpbGQtPmlzQmVmb3JlT3JBZnRlckNvbnRlbnQoKSkgewogICAgICAgICBp
ZiAoYmVmb3JlQ2hpbGQgPT0gbGFzdENoaWxkKQpAQCAtMTA3LDcgKzEyMyw3IEBAIFJlbmRlckVs
ZW1lbnQmIFJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hp
bGQoUmVuZGVyVGFibGVTCiAgICAgLy8gSWYgYmVmb3JlQ2hpbGQgaXMgaW5zaWRlIGFuIGFub255
bW91cyBjZWxsL3JvdywgaW5zZXJ0IGludG8gdGhlIGNlbGwgb3IgaW50bwogICAgIC8vIHRoZSBh
bm9ueW1vdXMgcm93IGNvbnRhaW5pbmcgaXQsIGlmIHRoZXJlIGlzIG9uZS4KICAgICBhdXRvKiBw
YXJlbnRDYW5kaWRhdGUgPSBsYXN0Q2hpbGQ7Ci0gICAgd2hpbGUgKHBhcmVudENhbmRpZGF0ZSAm
JiBwYXJlbnRDYW5kaWRhdGUtPnBhcmVudCgpLT5pc0Fub255bW91cygpICYmICFpczxSZW5kZXJU
YWJsZVJvdz4oKnBhcmVudENhbmRpZGF0ZSkpCisgICAgd2hpbGUgKHBhcmVudENhbmRpZGF0ZSAm
JiBwYXJlbnRDYW5kaWRhdGUtPnBhcmVudCgpICYmIHBhcmVudENhbmRpZGF0ZS0+cGFyZW50KCkt
PmlzQW5vbnltb3VzKCkgJiYgIWlzPFJlbmRlclRhYmxlUm93PigqcGFyZW50Q2FuZGlkYXRlKSkK
ICAgICAgICAgcGFyZW50Q2FuZGlkYXRlID0gcGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQoKTsKICAg
ICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KHBhcmVudENhbmRpZGF0ZSkgJiYgcGFyZW50Q2FuZGlk
YXRlLT5pc0Fub255bW91cygpICYmICFwYXJlbnRDYW5kaWRhdGUtPmlzQmVmb3JlT3JBZnRlckNv
bnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpwYXJlbnRD
YW5kaWRhdGUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDJkNWE4ODliOWM2MTBkYWM2NWE3YTRlODdmMjk2NTlkZjJlYjVi
MzguLjIxZThkNzcwMDg1NGViODk1YjM4NTE4YjExMDUwYTFkNGVmNjA3MzggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wMS0yOCAgRG91ZyBLZWxseSAgPGRvdWdrQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDcmFzaCBpbiBSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6OmZpbmRPckNyZWF0ZVBh
cmVudEZvckNoaWxkIHdpdGggbXVsdGljb2wgc3Bhbm5lcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L211bHRpY29sL3NwYW5uZXItY3Jhc2gt
d2hlbi1maW5kaW5nLXRhYmxlLXBhcmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbXVsdGljb2wvc3Bhbm5lci1jcmFzaC13aGVuLWZpbmRpbmctdGFibGUtcGFyZW50Lmh0
bWw6IEFkZGVkLgorCiAyMDIwLTAxLTI0ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWVkaWFSZWNvcmRlci5yZXF1ZXN0RGF0YQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4t
ZmluZGluZy10YWJsZS1wYXJlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdWx0
aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10YWJsZS1wYXJlbnQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZlYzE3MjgyNWJiOWYwYTNkYjZiYjU0MTE0MTU0NWI1NWM0ZmRmMDAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW5uZXItY3Jhc2gt
d2hlbi1maW5kaW5nLXRhYmxlLXBhcmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWRkaW5nIGFuIGVsZW1lbnQgd2hpY2ggaXMgYSBzaWJsaW5n
IHRvIGEgbXVsdGljb2wgc3Bhbm5lciBmaW5kcyB0aGUgY29ycmVjdCB0YWJsZSByb3cuIFRlc3Qg
cGFzc2VzIGlmIFdlYktpdCBkb2VzIG5vdCBjcmFzaC4gUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10YWJsZS1wYXJl
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbm5lci1jcmFzaC13aGVuLWZp
bmRpbmctdGFibGUtcGFyZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVmY2UxODg5MjJmNWU1MjdkMDlk
ZWMwYTc1MzlmNTFlZWNlZWUzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bXVsdGljb2wvc3Bhbm5lci1jcmFzaC13aGVuLWZpbmRpbmctdGFibGUtcGFyZW50Lmh0bWwKQEAg
LTAsMCArMSwyMSBAQAorPHN0eWxlPgorYm9keSB7CisgICAgZGlzcGxheTogdGFibGUtaGVhZGVy
LWdyb3VwOworICAgIG92ZXJmbG93LXk6IC13ZWJraXQtcGFnZWQteDsKK30KK2RpdiB7CisgICAg
Y29sdW1uLXNwYW46IGFsbDsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8c3BhbiBpZD1zcGFu
Pjwvc3Bhbj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRvY3VtZW50
LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICBzcGFuLm91dGVyVGV4dCA9ICJyZW1vdmUiOwor
ICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICAgICAgZG9jdW1lbnQuYm9k
eS5pbm5lclRleHQgPSAiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWRkaW5nIGFuIGVsZW1lbnQg
d2hpY2ggaXMgYSBzaWJsaW5nIHRvIGEgbXVsdGljb2wgc3Bhbm5lciBmaW5kcyB0aGUgY29ycmVj
dCB0YWJsZSByb3cuIFRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2VzIG5vdCBjcmFzaC4gUEFTUyI7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>
<flag name="review"
          id="405012"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389463</attachid>
            <date>2020-02-01 10:04:36 -0800</date>
            <delta_ts>2020-02-07 16:56:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206917-20200201100435.patch</filename>
            <type>text/plain</type>
            <size>6788</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1Mzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVkOWMxYWI5N2E0NmFi
OTQwMzA1YmMxYTVlZDFiODViMzA4MjhlMC4uOTZmYTc2NjIyNTI3Y2ZjYWYwN2RhZWQ2YjNmNThm
MDEzZTk5ZTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAyLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggaW4gUmVuZGVyVHJl
ZUJ1aWxkZXI6OlRhYmxlOjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JDaGlsZCB3aXRoIG11bHRpY29s
IHNwYW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjkxNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY2ODYwMzY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHVyaW5nIHJlbmRlciB0cmVlIGNv
bnN0cnVjdGlvbiwgbXVsdGktY29sdW1uIHNwYW5uZXJzIGFyZSBtb3ZlZCBmcm9tIHRoZWlyIG9y
aWdpbmFsIHRyZWUgcG9zaXRpb24gdG8KKyAgICAgICAgbmV4dCB0byB0aGUgZW5jbG9zaW5nIGFu
b255bW91cyBmcmFnbWVudGVkIGZsb3cgYW5kIHdlIG1hcmsgdGhlaXIgcHJldmlvdXMgbG9jYXRp
b24gd2l0aCBhIHNwYW5uZXIgcGxhY2Vob2xkZXIuCisgICAgICAgIElmIHdlIHRyeSB0byBhZGQg
YSBuZXcgcmVuZGVyZXIgcmlnaHQgYmVmb3JlIHRoZSBzcGFubmVyIChiZWZvcmVDaGlsZCBpcyB0
aGUgc3Bhbm5lciByZW5kZXJlciksIHdlIG5lZWQgdG8gdXNlCisgICAgICAgIHRoZSBzcGFubmVy
J3Mgb3JpZ2luYWwgcG9zaXRpb24gYXMgdGhlIGluc2VydGlvbiBwb2ludC4KKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRyZXNzZXMgdGhlIG1pc21hdGNoaW5nIHBvc2l0aW9uIGlzc3VlIGJ5IGFkanVz
dGluZyB0aGUgc3Bhbm5lciBiZWZvcmVDaGlsZCByaWdodCBiZWZvcmUKKyAgICAgICAgd2Ugc3Rh
cnQgc2VhcmNoaW5nIGZvciB0aGUgZmluYWwgaW5zZXJ0aW9uIHBvaW50LgorCisgICAgICAgIFRl
c3Q6IGZhc3QvbXVsdGljb2wvc3Bhbm5lci1jcmFzaC13aGVuLWZpbmRpbmctdGFibGUtcGFyZW50
Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6Zmlu
ZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQpOgorCiAyMDIwLTAxLTI5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWFrZSBzdXJlIHVudXNlZCBzZXJ2aWNl
IHdvcmtlciBwcm9jZXNzZXMgZXhpdCBwcm9tcHRseSBvbiBsb3cgbWVtb3J5IHdhcm5pbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXIuY3BwCmluZGV4IDE4NzE4MDgxYzZlMjZiZjhhMTVjNzFkNDg0M2VlZTFlNWJhMTgyM2Qu
LjZmZWQ1MGI3YmE1Mzk5MjA2OTQxMjZlNzhiYTA0YTg1YmIzNTRjZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNw
cApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlck1hdGhNTEZlbmNlZC5oIgogI2lu
Y2x1ZGUgIlJlbmRlck1lbnVMaXN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTXVsdGlDb2x1bW5GbG93
LmgiCisjaW5jbHVkZSAiUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJSdWJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyUnVieUJhc2UuaCIKICNpbmNs
dWRlICJSZW5kZXJSdWJ5UnVuLmgiCkBAIC0yMDgsNiArMjA5LDIwIEBAIHZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6OmF0dGFjaChSZW5kZXJFbGVtZW50JiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJP
YmplY3Q+IGNoCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGJlZm9yZUNoaWxkKSkgewogICAgICAg
ICBpZiAoYXV0byogd3JhcHBlcklubGluZSA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpiZWZvcmVD
aGlsZCkuaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cygpKQogICAgICAgICAgICAgYmVm
b3JlQ2hpbGQgPSB3cmFwcGVySW5saW5lOworICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyQm94Pihi
ZWZvcmVDaGlsZCkpIHsKKyAgICAgICAgLy8gQWRqdXN0IHRoZSBiZWZvcmVDaGlsZCBpZiBpdCBo
YXBwZW5zIHRvIGJlIGEgc3Bhbm5lciBhbmQgdGhlIGl0cyBhY3R1YWwgbG9jYXRpb24gaXMgaW5z
aWRlIHRoZSBmcmFnbWVudGVkIGZsb3cuCisgICAgICAgIGF1dG8mIGJlZm9yZUNoaWxkQm94ID0g
ZG93bmNhc3Q8UmVuZGVyQm94PigqYmVmb3JlQ2hpbGQpOworICAgICAgICBpZiAoYXV0byogZW5j
bG9zaW5nRnJhZ21lbnRlZEZsb3cgPSBwYXJlbnQuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKSkg
eworICAgICAgICAgICAgYXV0byBjb2x1bW5TcGFubmVyUGxhY2Vob2xkZXJGb3JCZWZvcmVDaGls
ZCA9IFsmXSgpIC0+IFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKiB7CisgICAg
ICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJNdWx0aUNvbHVtbkZsb3c+KGVuY2xvc2luZ0ZyYWdt
ZW50ZWRGbG93KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICAgICAgYXV0byYgbXVsdGlDb2x1bW5GbG93ID0gZG93bmNhc3Q8UmVuZGVyTXVsdGlDb2x1
bW5GbG93PigqZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3cpOworICAgICAgICAgICAgICAgIHJldHVy
biBtdWx0aUNvbHVtbkZsb3cuZmluZENvbHVtblNwYW5uZXJQbGFjZWhvbGRlcigmYmVmb3JlQ2hp
bGRCb3gpOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKGF1dG8qIHNwYW5uZXJQ
bGFjZWhvbGRlciA9IGNvbHVtblNwYW5uZXJQbGFjZWhvbGRlckZvckJlZm9yZUNoaWxkKCkpCisg
ICAgICAgICAgICAgICAgYmVmb3JlQ2hpbGQgPSBzcGFubmVyUGxhY2Vob2xkZXI7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KHBhcmVudCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
clRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlclRhYmxlLmNwcAppbmRleCAxOGRkMjZjN2IzNzQ1ZGNkYTZlM2U5ZDkxZjc5MzIxN2I1
YTZmM2RkLi41YWExOGQxODg1NTg4MDg1N2U5YWMyY2U0Y2JiYTBlOGQ5NjJmZmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJU
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyVGFibGUuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgUmVuZGVyRWxlbWVudCYgUmVu
ZGVyVHJlZUJ1aWxkZXI6OlRhYmxlOjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JDaGlsZChSZW5kZXJU
YWJsZVMKICAgICAvLyBJZiBiZWZvcmVDaGlsZCBpcyBpbnNpZGUgYW4gYW5vbnltb3VzIGNlbGwv
cm93LCBpbnNlcnQgaW50byB0aGUgY2VsbCBvciBpbnRvCiAgICAgLy8gdGhlIGFub255bW91cyBy
b3cgY29udGFpbmluZyBpdCwgaWYgdGhlcmUgaXMgb25lLgogICAgIGF1dG8qIHBhcmVudENhbmRp
ZGF0ZSA9IGxhc3RDaGlsZDsKLSAgICB3aGlsZSAocGFyZW50Q2FuZGlkYXRlICYmIHBhcmVudENh
bmRpZGF0ZS0+cGFyZW50KCktPmlzQW5vbnltb3VzKCkgJiYgIWlzPFJlbmRlclRhYmxlUm93Pigq
cGFyZW50Q2FuZGlkYXRlKSkKKyAgICB3aGlsZSAocGFyZW50Q2FuZGlkYXRlICYmIHBhcmVudENh
bmRpZGF0ZS0+cGFyZW50KCkgJiYgcGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQoKS0+aXNBbm9ueW1v
dXMoKSAmJiAhaXM8UmVuZGVyVGFibGVSb3c+KCpwYXJlbnRDYW5kaWRhdGUpKQogICAgICAgICBw
YXJlbnRDYW5kaWRhdGUgPSBwYXJlbnRDYW5kaWRhdGUtPnBhcmVudCgpOwogICAgIGlmIChpczxS
ZW5kZXJUYWJsZVJvdz4ocGFyZW50Q2FuZGlkYXRlKSAmJiBwYXJlbnRDYW5kaWRhdGUtPmlzQW5v
bnltb3VzKCkgJiYgIXBhcmVudENhbmRpZGF0ZS0+aXNCZWZvcmVPckFmdGVyQ29udGVudCgpKQog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnBhcmVudENhbmRpZGF0ZSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZDY0NWQwOGM4NWYxZGZjYmJjY2FjMTQ4NGU5ODMzN2I1NmNlZTQ2Yi4uZGIzZTc3
OWVhYjIwMzhlNjNjZDU2NWJkNjJhMGQ0NjMwNWVjMGJlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIwLTAyLTAxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
Q3Jhc2ggaW4gUmVuZGVyVHJlZUJ1aWxkZXI6OlRhYmxlOjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JD
aGlsZCB3aXRoIG11bHRpY29sIHNwYW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNjkxNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY2ODYw
MzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L211bHRpY29sL3NwYW5uZXItY3Jhc2gtd2hlbi1maW5kaW5nLXRhYmxlLXBhcmVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbXVsdGljb2wvc3Bhbm5lci1jcmFzaC13
aGVuLWZpbmRpbmctdGFibGUtcGFyZW50Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTAxLTI5ICBKYWNv
YiBVcGhvZmYgIDxqYWNvYl91cGhvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1Mgd2sx
IF0gaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnRzL3Jlc29sdmVkLWR1bXAtZWFjaC1saW5l
Lmh0bWwgaXMgZmxha3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdWx0
aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10YWJsZS1wYXJlbnQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10
YWJsZS1wYXJlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYzE3MjgyNWJiOWYwYTNkYjZi
YjU0MTE0MTU0NWI1NWM0ZmRmMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L211bHRpY29sL3NwYW5uZXItY3Jhc2gtd2hlbi1maW5kaW5nLXRhYmxlLXBhcmVudC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWRkaW5nIGFuIGVs
ZW1lbnQgd2hpY2ggaXMgYSBzaWJsaW5nIHRvIGEgbXVsdGljb2wgc3Bhbm5lciBmaW5kcyB0aGUg
Y29ycmVjdCB0YWJsZSByb3cuIFRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2VzIG5vdCBjcmFzaC4g
UEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNo
LXdoZW4tZmluZGluZy10YWJsZS1wYXJlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXVsdGlj
b2wvc3Bhbm5lci1jcmFzaC13aGVuLWZpbmRpbmctdGFibGUtcGFyZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTVmY2UxODg5MjJmNWU1MjdkMDlkZWMwYTc1MzlmNTFlZWNlZWUzYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbm5lci1jcmFzaC13aGVuLWZpbmRp
bmctdGFibGUtcGFyZW50Lmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPHN0eWxlPgorYm9keSB7Cisg
ICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOworICAgIG92ZXJmbG93LXk6IC13ZWJraXQt
cGFnZWQteDsKK30KK2RpdiB7CisgICAgY29sdW1uLXNwYW46IGFsbDsKK30KKzwvc3R5bGU+Cis8
Ym9keT4KKyAgICA8c3BhbiBpZD1zcGFuPjwvc3Bhbj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICBzcGFu
Lm91dGVyVGV4dCA9ICJyZW1vdmUiOworICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdo
dDsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSAiVGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgYWRkaW5nIGFuIGVsZW1lbnQgd2hpY2ggaXMgYSBzaWJsaW5nIHRvIGEgbXVsdGljb2wg
c3Bhbm5lciBmaW5kcyB0aGUgY29ycmVjdCB0YWJsZSByb3cuIFRlc3QgcGFzc2VzIGlmIFdlYktp
dCBkb2VzIG5vdCBjcmFzaC4gUEFTUyI7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIDwvc2NyaXB0PgorPC9i
b2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390150</attachid>
            <date>2020-02-07 16:55:24 -0800</date>
            <delta_ts>2020-02-08 06:10:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206917-20200207165524.patch</filename>
            <type>text/plain</type>
            <size>6713</size>
            <attacher name="Doug Kelly">dougk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VhYmQyZjcxNTkyMDRl
ZDQ0ZjkyODliYTFlMmFiNGRiYzZhMzJkYy4uNzA1MGY5MTY1MTgwNTdmNGU1OTBjYWRmZTAzZGIw
YjIxODM2OWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAyLTA3ICBEb3Vn
IEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoIGluIFJlbmRlclRyZWVC
dWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQgd2l0aCBtdWx0aWNvbCBz
cGFubmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDY5MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
dXJpbmcgcmVuZGVyIHRyZWUgY29uc3RydWN0aW9uLCBtdWx0aS1jb2x1bW4gc3Bhbm5lcnMgYXJl
IG1vdmVkIGZyb20gdGhlaXIgb3JpZ2luYWwgdHJlZSBwb3NpdGlvbiB0bworICAgICAgICBuZXh0
IHRvIHRoZSBlbmNsb3NpbmcgYW5vbnltb3VzIGZyYWdtZW50ZWQgZmxvdyBhbmQgd2UgbWFyayB0
aGVpciBwcmV2aW91cyBsb2NhdGlvbiB3aXRoIGEgc3Bhbm5lciBwbGFjZWhvbGRlci4KKyAgICAg
ICAgSWYgd2UgdHJ5IHRvIGFkZCBhIG5ldyByZW5kZXJlciByaWdodCBiZWZvcmUgdGhlIHNwYW5u
ZXIgKGJlZm9yZUNoaWxkIGlzIHRoZSBzcGFubmVyIHJlbmRlcmVyKSwgd2UgbmVlZCB0byB1c2UK
KyAgICAgICAgdGhlIHNwYW5uZXIncyBvcmlnaW5hbCBwb3NpdGlvbiBhcyB0aGUgaW5zZXJ0aW9u
IHBvaW50LgorICAgICAgICBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGUgbWlzbWF0Y2hpbmcgcG9z
aXRpb24gaXNzdWUgYnkgYWRqdXN0aW5nIHRoZSBzcGFubmVyIGJlZm9yZUNoaWxkIHJpZ2h0IGJl
Zm9yZQorICAgICAgICB3ZSBzdGFydCBzZWFyY2hpbmcgZm9yIHRoZSBmaW5hbCBpbnNlcnRpb24g
cG9pbnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4t
ZmluZGluZy10YWJsZS1wYXJlbnQuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWls
ZGVyOjphdHRhY2gpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpUYWJs
ZTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQpOgorCiAyMDIwLTAxLTI0ICBSeWFuIEhhZGRh
ZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIyNTUwODkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAppbmRleCAxODcxODA4MWM2ZTI2YmY4YTE1YzcxZDQ4
NDNlZWUxZTViYTE4MjNkLi42ZmVkNTBiN2JhNTM5OTIwNjk0MTI2ZTc4YmEwNGE4NWJiMzU0Y2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJNYXRo
TUxGZW5jZWQuaCIKICNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRl
ck11bHRpQ29sdW1uRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBs
YWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyUnVieS5oIgogI2luY2x1ZGUgIlJlbmRlclJ1
YnlCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUnVieVJ1bi5oIgpAQCAtMjA4LDYgKzIwOSwyMCBA
QCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjphdHRhY2goUmVuZGVyRWxlbWVudCYgcGFyZW50LCBS
ZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaAogICAgIGlmIChpczxSZW5kZXJUZXh0PihiZWZvcmVD
aGlsZCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXJJbmxpbmUgPSBkb3duY2FzdDxSZW5k
ZXJUZXh0PigqYmVmb3JlQ2hpbGQpLmlubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoKSkK
ICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gd3JhcHBlcklubGluZTsKKyAgICB9IGVsc2UgaWYg
KGlzPFJlbmRlckJveD4oYmVmb3JlQ2hpbGQpKSB7CisgICAgICAgIC8vIEFkanVzdCB0aGUgYmVm
b3JlQ2hpbGQgaWYgaXQgaGFwcGVucyB0byBiZSBhIHNwYW5uZXIgYW5kIHRoZSBpdHMgYWN0dWFs
IGxvY2F0aW9uIGlzIGluc2lkZSB0aGUgZnJhZ21lbnRlZCBmbG93LgorICAgICAgICBhdXRvJiBi
ZWZvcmVDaGlsZEJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKmJlZm9yZUNoaWxkKTsKKyAgICAg
ICAgaWYgKGF1dG8qIGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93ID0gcGFyZW50LmVuY2xvc2luZ0Zy
YWdtZW50ZWRGbG93KCkpIHsKKyAgICAgICAgICAgIGF1dG8gY29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyRm9yQmVmb3JlQ2hpbGQgPSBbJl0oKSAtPiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlciogeworICAgICAgICAgICAgICAgIGlmICghaXM8UmVuZGVyTXVsdGlDb2x1bW5GbG93
PihlbmNsb3NpbmdGcmFnbWVudGVkRmxvdykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgICAgIGF1dG8mIG11bHRpQ29sdW1uRmxvdyA9IGRvd25jYXN0
PFJlbmRlck11bHRpQ29sdW1uRmxvdz4oKmVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbXVsdGlDb2x1bW5GbG93LmZpbmRDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIoJmJlZm9yZUNoaWxkQm94KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGlm
IChhdXRvKiBzcGFubmVyUGxhY2Vob2xkZXIgPSBjb2x1bW5TcGFubmVyUGxhY2Vob2xkZXJGb3JC
ZWZvcmVDaGlsZCgpKQorICAgICAgICAgICAgICAgIGJlZm9yZUNoaWxkID0gc3Bhbm5lclBsYWNl
aG9sZGVyOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGlzPFJlbmRlclRhYmxlUm93Pihw
YXJlbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5jcHAKaW5kZXggMThkZDI2YzdiMzc0NWRjZGE2
ZTNlOWQ5MWY3OTMyMTdiNWE2ZjNkZC4uNWFhMThkMTg4NTU4ODA4NTdlOWFjMmNlNGNiYmEwZThk
OTYyZmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFJl
bmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50
Rm9yQ2hpbGQoUmVuZGVyVGFibGVTCiAgICAgLy8gSWYgYmVmb3JlQ2hpbGQgaXMgaW5zaWRlIGFu
IGFub255bW91cyBjZWxsL3JvdywgaW5zZXJ0IGludG8gdGhlIGNlbGwgb3IgaW50bwogICAgIC8v
IHRoZSBhbm9ueW1vdXMgcm93IGNvbnRhaW5pbmcgaXQsIGlmIHRoZXJlIGlzIG9uZS4KICAgICBh
dXRvKiBwYXJlbnRDYW5kaWRhdGUgPSBsYXN0Q2hpbGQ7Ci0gICAgd2hpbGUgKHBhcmVudENhbmRp
ZGF0ZSAmJiBwYXJlbnRDYW5kaWRhdGUtPnBhcmVudCgpLT5pc0Fub255bW91cygpICYmICFpczxS
ZW5kZXJUYWJsZVJvdz4oKnBhcmVudENhbmRpZGF0ZSkpCisgICAgd2hpbGUgKHBhcmVudENhbmRp
ZGF0ZSAmJiBwYXJlbnRDYW5kaWRhdGUtPnBhcmVudCgpICYmIHBhcmVudENhbmRpZGF0ZS0+cGFy
ZW50KCktPmlzQW5vbnltb3VzKCkgJiYgIWlzPFJlbmRlclRhYmxlUm93PigqcGFyZW50Q2FuZGlk
YXRlKSkKICAgICAgICAgcGFyZW50Q2FuZGlkYXRlID0gcGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQo
KTsKICAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KHBhcmVudENhbmRpZGF0ZSkgJiYgcGFyZW50
Q2FuZGlkYXRlLT5pc0Fub255bW91cygpICYmICFwYXJlbnRDYW5kaWRhdGUtPmlzQmVmb3JlT3JB
ZnRlckNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpw
YXJlbnRDYW5kaWRhdGUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJkNWE4ODliOWM2MTBkYWM2NWE3YTRlODdmMjk2NTlk
ZjJlYjViMzguLjU3NDZlYmQ5M2ZmNWIzMzk5Yjk4MWFhMjNjOWY2NjViNmFlY2JkN2IgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMi0wNyAgRG91ZyBLZWxseSAgPGRvdWdrQGFwcGxlLmNv
bT4KKworICAgICAgICBDcmFzaCBpbiBSZW5kZXJUcmVlQnVpbGRlcjo6VGFibGU6OmZpbmRPckNy
ZWF0ZVBhcmVudEZvckNoaWxkIHdpdGggbXVsdGljb2wgc3Bhbm5lcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTE3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L211bHRpY29sL3NwYW5uZXIt
Y3Jhc2gtd2hlbi1maW5kaW5nLXRhYmxlLXBhcmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbXVsdGljb2wvc3Bhbm5lci1jcmFzaC13aGVuLWZpbmRpbmctdGFibGUtcGFy
ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTAxLTI0ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWVkaWFSZWNvcmRlci5yZXF1ZXN0
RGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNo
LXdoZW4tZmluZGluZy10YWJsZS1wYXJlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10YWJsZS1wYXJlbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZlYzE3MjgyNWJiOWYwYTNkYjZiYjU0MTE0MTU0NWI1NWM0ZmRm
MDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL3NwYW5uZXIt
Y3Jhc2gtd2hlbi1maW5kaW5nLXRhYmxlLXBhcmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBA
QAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWRkaW5nIGFuIGVsZW1lbnQgd2hpY2ggaXMgYSBz
aWJsaW5nIHRvIGEgbXVsdGljb2wgc3Bhbm5lciBmaW5kcyB0aGUgY29ycmVjdCB0YWJsZSByb3cu
IFRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2VzIG5vdCBjcmFzaC4gUEFTUwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9zcGFubmVyLWNyYXNoLXdoZW4tZmluZGluZy10YWJs
ZS1wYXJlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvc3Bhbm5lci1jcmFzaC13
aGVuLWZpbmRpbmctdGFibGUtcGFyZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVmY2UxODg5MjJmNWU1
MjdkMDlkZWMwYTc1MzlmNTFlZWNlZWUzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvbXVsdGljb2wvc3Bhbm5lci1jcmFzaC13aGVuLWZpbmRpbmctdGFibGUtcGFyZW50Lmh0
bWwKQEAgLTAsMCArMSwyMSBAQAorPHN0eWxlPgorYm9keSB7CisgICAgZGlzcGxheTogdGFibGUt
aGVhZGVyLWdyb3VwOworICAgIG92ZXJmbG93LXk6IC13ZWJraXQtcGFnZWQteDsKK30KK2RpdiB7
CisgICAgY29sdW1uLXNwYW46IGFsbDsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8c3BhbiBp
ZD1zcGFuPjwvc3Bhbj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRv
Y3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICBzcGFuLm91dGVyVGV4dCA9ICJyZW1v
dmUiOworICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICAgICAgZG9jdW1l
bnQuYm9keS5pbm5lclRleHQgPSAiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYWRkaW5nIGFuIGVs
ZW1lbnQgd2hpY2ggaXMgYSBzaWJsaW5nIHRvIGEgbXVsdGljb2wgc3Bhbm5lciBmaW5kcyB0aGUg
Y29ycmVjdCB0YWJsZSByb3cuIFRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2VzIG5vdCBjcmFzaC4g
UEFTUyI7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>