<?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>194370</bug_id>
          
          <creation_ts>2019-02-06 18:54:06 -0800</creation_ts>
          <short_desc>[WPE][GTK] Unsafe g_unsetenv() use in WebProcessPool::platformInitialize</short_desc>
          <delta_ts>2019-02-12 10:46:03 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1503572</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-06 18:54:06 -0800</bug_when>
    <thetext>WebProcessPool::platformInitialize unsafely calls g_unsetenv to unset WEBKIT_INSPECTOR_SERVER. WebKit must never modify environment variables in the UI process, because it could cause applications to crash. (The only safe place to modify environment variables is the very top of main() in secondary processes. It can&apos;t be done at all in the UI process.) So we need to find some way to avoid the need to call unsetenv here.

Also, note this function is duplicated between WebProcessPoolGtk.cpp and WebProcessPoolWPE.cpp, so both places need to be fixed, or the implementations shared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503664</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-02-07 01:02:02 -0800</bug_when>
    <thetext>I don&apos;t think there&apos;s anything unsafe in that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503719</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-07 07:44:33 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #1)
&gt; I don&apos;t think there&apos;s anything unsafe in that.

I think we&apos;ve discussed this before, but for reference: it can crash if a secondary thread is calling getenv(), and getenv() is used everywhere. setenv/unsetenv is really, really dangerous. It&apos;s impossible to use safely in WebProcessPoolGtk.cpp because applications can create new WebKitWebContext objects after creating secondary threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503742</commentid>
    <comment_count>3</comment_count>
      <attachid>361399</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-07 08:44:08 -0800</bug_when>
    <thetext>Created attachment 361399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503745</commentid>
    <comment_count>4</comment_count>
      <attachid>361400</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-07 08:46:19 -0800</bug_when>
    <thetext>Created attachment 361400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504743</commentid>
    <comment_count>5</comment_count>
      <attachid>361400</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-10 15:51:02 -0800</bug_when>
    <thetext>Comment on attachment 361400
Patch

While I’m not an expert on every aspect of these platforms, this patch seems to contain clearly correct changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504748</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-10 16:15:58 -0800</bug_when>
    <thetext>Carlos, I haven&apos;t tested remote inspector, but it looks like it should be fine. Does this need anything more?

For reference regarding unsafety, we have practical examples:

 * We have a public, documented example of unsetenv() usage bringing down gnome-session, resulting in full desktop crash. That was https://bugzilla.gnome.org/show_bug.cgi?id=754951.
 * Igalia had a project a few years ago where unsafe setenv() use caused a customer&apos;s devices to randomly fail to boot, resulting in problems.

As for theoretical documentation:

https://www.gnu.org/software/libc/manual/html_node/Environment-Access.html documents setenv() as MT-Unsafe const:env

https://www.gnu.org/software/libc/manual/html_node/Conditionally-Safe-Features.html#Conditionally-Safe-Features documents the const annotation:

&quot;&quot;&quot;
Functions marked with const as an MT-Safety issue non-atomically modify internal objects that are better regarded as constant, because a substantial portion of the GNU C Library accesses them without synchronization. Unlike race, that causes both readers and writers of internal objects to be regarded as MT-Unsafe and AS-Unsafe, this mark is applied to writers only. 
&quot;&quot;&quot;

Then https://www.gnu.org/software/libc/manual/html_node/Other-Safety-Remarks.html#Other-Safety-Remarks documents the env annotation:

&quot;&quot;&quot;
Functions marked with env as an MT-Safety issue access the environment with getenv or similar, without any guards to ensure safety in the presence of concurrent modifications.

We do not mark these functions as MT- or AS-Unsafe, however, because functions that modify the environment are all marked with const:env and regarded as unsafe. Being unsafe, the latter are not to be called when multiple threads are running or asynchronous signals are enabled, and so the environment can be considered effectively constant in these contexts, which makes the former safe.
&quot;&quot;&quot; 

I also wrote a blog post about this problem last year: https://blogs.gnome.org/mcatanzaro/2018/02/28/on-setenv-and-explosions/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504754</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-10 16:31:40 -0800</bug_when>
    <thetext>And more importantly, there’s no need to unset the environment variable. I mean, if we tried and it didn’t work, we don’t need to &quot;cover up the evidence&quot; that it was ever tried.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504755</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-10 16:32:48 -0800</bug_when>
    <thetext>Sorry, I don’t mean &quot;more importantly&quot;.

I mean that since it’s not needed, we don’t need to understand precisely exactly how bad an idea it is; we can just remove it if there’s any possible downside of keeping it at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504756</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-10 16:35:21 -0800</bug_when>
    <thetext>Well unsetting this environment variable is done to stop the web process from trying to connect to the UI process server (which has failed to start for whatever reason). But I *think* there&apos;s indeed no particular reason to do that: I suspect it can just try and fail and that should probably be fine.

But if it *is* really needed, then we&apos;ll need a new IPC message to communicate that, rather than abusing the environment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505178</commentid>
    <comment_count>10</comment_count>
      <attachid>361400</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-12 01:29:59 -0800</bug_when>
    <thetext>Comment on attachment 361400
Patch

Rejecting attachment 361400 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 361400, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=361400&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=194370&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 361400 from bug 194370.
Fetching: https://bugs.webkit.org/attachment.cgi?id=361400
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Darin Adler&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 6 diffs from patch file(s).
patching file Source/JavaScriptCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorGlib.cpp
patching file Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorServer.cpp
patching file Source/WebKit/UIProcess/gtk/WebProcessPoolGtk.cpp
Hunk #1 FAILED at 44.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit/UIProcess/gtk/WebProcessPoolGtk.cpp.rej
patching file Source/WebKit/UIProcess/wpe/WebProcessPoolWPE.cpp

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Darin Adler&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/11119949</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505279</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-02-12 10:45:35 -0800</bug_when>
    <thetext>Committed r241304: &lt;https://trac.webkit.org/changeset/241304&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361399</attachid>
            <date>2019-02-07 08:44:08 -0800</date>
            <delta_ts>2019-02-07 08:46:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194370-20190207104407.patch</filename>
            <type>text/plain</type>
            <size>8523</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NDQ0OWRjNDI1NTE1Y2NmMzIwZjc5YjFlNDk4YjYxNjZlNDg5ZDY2Li45Y2Y5NDY1ZTM1NmM5NGJh
OWE1MDkxYzhlZDk0ZGIzMzM3Mzc0MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOS0wMi0wNyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBVbnNhZmUgZ191bnNldGVudigpIHVzZSBp
biBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQzNzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgYSBjb3VwbGUgV1RGTG9nQWx3YXlz
IHRvIHVzZSBnX3dhcm5pbmcsIGZvciBnb29kIG1lYXN1cmUuIE9mIGNvdXJzZSB0aGlzIGlzbid0
CisgICAgICAgIG5lY2Vzc2FyeSwgYnV0IGl0IHdpbGwgbWFrZSBlcnJvcnMgbW9yZSB2aXNpYmxl
LgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6ZGJ1c0Nvbm5lY3Rpb25DYWxsQXN5bmNSZWFkeUNhbGxiYWNrKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzdGFydCk6CisKIDIw
MTktMDItMDYgIFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgQnVpbGQgZmFpbHVyZSBhZnRlciByMjQwNDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU2YmFiNjhhZmQ1Njk1
NjZiNDU2MjQwNTA3YmZkOTZkNmU2ZTM5N2QuLjE0ZWRkMjk1YmVmNWMxOGJmMDE1MjliNTg5NGQ3
MTYxMDlmYTY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTktMDItMDcgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dU
S10gVW5zYWZlIGdfdW5zZXRlbnYoKSB1c2UgaW4gV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk0MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SXQgaXMgaW5jb3JyZWN0IHRvIHVzZSBnX3Vuc2V0ZW52KCkgaGVyZSBiZWNhdXNlIGl0IGlzIE1U
LVVuc2FmZS4gV2Uga25vdyB0aGF0IGl0IGlzCisgICAgICAgIGltcG9zc2libGUgYW5kIHVucmVh
c29uYWJsZSB0byBleHBlY3QgdGhlIGFwcGxpY2F0aW9uIGhhcyBub3Qgc3RhcnRlZCBvdGhlciB0
aHJlYWRzIGF0IHRoaXMKKyAgICAgICAgcG9pbnQsIGFuZCB0aHJlYWRzIHdpbGwgYmUgY2FsbGlu
ZyBnZXRlbnYoKS4gV2ViS2l0IGl0c2VsZiBoYXMgcHJvYmFibHkgYWxyZWFkeSBzdGFydGVkCisg
ICAgICAgIHRocmVhZHMgb2YgaXRzIG93bi4KKworICAgICAgICBGb3J0dW5hdGVseSwgdGhlIHJl
bW90ZSBpbnNwZWN0b3IgaW4gdGhlIHdlYiBwcm9jZXNzIGlzIGFscmVhZHkgcHJlcGFyZWQgdG8g
ZGVhbCB3aXRoCisgICAgICAgIGZhaWx1cmUgdG8gY29ubmVjdCB0byB0aGUgaW5zcGVjdG9yIHNl
cnZlciwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBleGNlcHQgc3RvcAorICAgICAg
ICBtZXNzaW5nIHdpdGggdGhlIGVudmlyb25tZW50LgorCisgICAgICAgIE5vdGUgdGhlc2UgZmls
ZXMgYXJlIGNvcGllcyBvZiBlYWNoIG90aGVyLiBJJ2xsIG1lcmdlIHRoZW0gdG9nZXRoZXIgaW4g
YSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQ
b29sR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNl
cnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojppbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisKIDIwMTktMDIt
MDYgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04ocjI0MDc4NSk6IFtTT1VQXSBCcm9rZSBjb29raWUgcGVyc2lzdGVudCBzdG9y
YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9n
bGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAppbmRleCBiNzM0NTVhNDBj
YzE1ZDU2MzUzZmY2OTRmYjY1MzQwMTgyOTI0YzQ4Li5jMDc1Njk4YmQ5YmY2ZTcwNDhjMDI0MWNi
ZmY4MzI3OTU2MjcyYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAK
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKICAgICAgICAg
ICAgIGlmIChHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGFkb3B0R1JlZihn
X2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJlc3NfZmluaXNoKHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSkpCiAgICAgICAgICAgICAgICAgaW5zcGVjdG9yLT5zZXR1cENvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSk7CiAgICAgICAgICAgICBlbHNlIGlmICghZ19lcnJvcl9tYXRjaGVz
KGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCi0gICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJSZW1vdGVJbnNwZWN0b3IgZmFpbGVkIHRvIGNvbm5lY3Qg
dG8gaW5zcGVjdG9yIHNlcnZlciBhdDogJXM6ICVzIiwgZ19nZXRlbnYoIldFQktJVF9JTlNQRUNU
T1JfU0VSVkVSIiksIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBnX3dhcm5pbmco
IlJlbW90ZUluc3BlY3RvciBmYWlsZWQgdG8gY29ubmVjdCB0byBpbnNwZWN0b3Igc2VydmVyIGF0
OiAlczogJXMiLCBnX2dldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSwgZXJyb3ItPm1l
c3NhZ2UpOwogICAgIH0sIHRoaXMpOwogfQogCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIHZv
aWQgZGJ1c0Nvbm5lY3Rpb25DYWxsQXN5bmNSZWFkeUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwg
R0FzeW5jUmVzdWx0KgogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBHUmVm
UHRyPEdWYXJpYW50PiByZXN1bHRWYXJpYW50ID0gYWRvcHRHUmVmKGdfZGJ1c19jb25uZWN0aW9u
X2NhbGxfZmluaXNoKEdfREJVU19DT05ORUNUSU9OKHNvdXJjZSksIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7CiAgICAgaWYgKCFyZXN1bHRWYXJpYW50ICYmICFnX2Vycm9yX21hdGNoZXMoZXJy
b3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKLSAgICAgICAgV1RG
TG9nQWx3YXlzKCJSZW1vdGVJbnNwZWN0b3IgZmFpbGVkIHRvIHNlbmQgREJ1cyBtZXNzYWdlOiAl
cyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgZ193YXJuaW5nKCJSZW1vdGVJbnNwZWN0b3Ig
ZmFpbGVkIHRvIHNlbmQgREJ1cyBtZXNzYWdlOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKIH0KIAog
VGFyZ2V0TGlzdGluZyBSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0
KGNvbnN0IFJlbW90ZUluc3BlY3Rpb25UYXJnZXQmIHRhcmdldCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVj
dG9yU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2ds
aWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCBkYzA5YzcyYmJjYTI5OGFjODYwZDE2
NGQyZjZlNDg0N2YwM2Y0YjkwLi40NTNlM2EwMDBiMjExNmQ2NmEwY2E2ODIxZTBiNjY5NDcwNmEz
YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9n
bGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC0xOTcs
NyArMTk3LDcgQEAgYm9vbCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnN0YXJ0KGNvbnN0IGNoYXIq
IGFkZHJlc3MsIHVuc2lnbmVkIHBvcnQpCiAgICAgbV9kYnVzU2VydmVyID0gYWRvcHRHUmVmKGdf
ZGJ1c19zZXJ2ZXJfbmV3X3N5bmMoZGJ1c0FkZHJlc3MuZ2V0KCksIEdfREJVU19TRVJWRVJfRkxB
R1NfQVVUSEVOVElDQVRJT05fQUxMT1dfQU5PTllNT1VTLCB1aWQuZ2V0KCksIG51bGxwdHIsIG1f
Y2FuY2VsbGFibGUuZ2V0KCksICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmICghbV9kYnVzU2Vy
dmVyKSB7CiAgICAgICAgIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0lPX0VS
Uk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIkZh
aWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIHNlcnZlciBvbiAlczogJXNcbiIsIGRidXNB
ZGRyZXNzLmdldCgpLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgICAgICBnX3dhcm5pbmcoIkZh
aWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIHNlcnZlciBvbiAlczogJXNcbiIsIGRidXNB
ZGRyZXNzLmdldCgpLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNz
UG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xH
dGsuY3BwCmluZGV4IDZiMjM1NzQwNGUwM2FlMzAyMWFlODgwYjYzYThjZWMwZWU4NmYwZjYuLjQ1
ZjZjZWU4MjJmYzdkYTllMjc5NDIxODI3OWUyZTY5YTVjMjNlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtNDcsMzMgKzQ3
LDMxIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIGJvb2wgaW5pdGlhbGl6ZVJlbW90ZUlu
c3BlY3RvclNlcnZlcihjb25zdCBjaGFyKiBhZGRyZXNzKQogewogICAgIGlmIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWFkZHJlc3NbMF0pCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBpbnNwZWN0b3JBZGRyZXNzKGdfc3RyZHVwKGFkZHJlc3MpKTsKICAgICBjaGFyKiBwb3J0
UHRyID0gZ19zdHJyc3RyKGluc3BlY3RvckFkZHJlc3MuZ2V0KCksICI6Iik7CiAgICAgaWYgKCFw
b3J0UHRyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKIAogICAgICpw
b3J0UHRyID0gJ1wwJzsKICAgICBwb3J0UHRyKys7CiAgICAgZ3VpbnQ2NCBwb3J0ID0gZ19hc2Np
aV9zdHJ0b3VsbChwb3J0UHRyLCBudWxscHRyLCAxMCk7CiAgICAgaWYgKCFwb3J0KQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKIAotICAgIHJldHVybiBJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkuc3RhcnQoaW5zcGVjdG9yQWRkcmVz
cy5nZXQoKSwgcG9ydCk7CisgICAgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNp
bmdsZXRvbigpLnN0YXJ0KGluc3BlY3RvckFkZHJlc3MuZ2V0KCksIHBvcnQpOwogfQogI2VuZGlm
CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKGNvbnN0IGNoYXIqIGFkZHJlc3MgPSBnX2dl
dGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSkgewotICAgICAgICBpZiAoIWluaXRpYWxp
emVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoYWRkcmVzcykpCi0gICAgICAgICAgICBnX3Vuc2V0ZW52
KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpOwotICAgIH0KKyAgICBpZiAoY29uc3QgY2hhciog
YWRkcmVzcyA9IGdfZ2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpKQorICAgICAgICBp
bml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKGFkZHJlc3MpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmlu
ZGV4IGY1MTAxN2E4Y2EyOWVkMDc5OTRkN2QyMDdjOTU3MTQxMTJhMzhiZjUuLjFkOWUyZjgzZTE0
MzFmN2ZlNWU4ZjBiODQxZTllZGQ1NGIyYmZiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcApAQCAtNTEsMzYgKzUxLDM0IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotc3RhdGlj
IGJvb2wgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihjb25zdCBjaGFyKiBhZGRyZXNz
KQorc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihjb25zdCBjaGFy
KiBhZGRyZXNzKQogewogICAgIGlmIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6
c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIWFkZHJlc3NbMF0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbnNwZWN0b3JBZGRyZXNzKGdf
c3RyZHVwKGFkZHJlc3MpKTsKICAgICBjaGFyKiBwb3J0UHRyID0gZ19zdHJyc3RyKGluc3BlY3Rv
ckFkZHJlc3MuZ2V0KCksICI6Iik7CiAgICAgaWYgKCFwb3J0UHRyKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybjsKIAogICAgICpwb3J0UHRyID0gJ1wwJzsKICAgICBwb3J0
UHRyKys7CiAgICAgZ3VpbnQ2NCBwb3J0ID0gZ19hc2NpaV9zdHJ0b3VsbChwb3J0UHRyLCBudWxs
cHRyLCAxMCk7CiAgICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybjsKIAotICAgIHJldHVybiBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6
c2luZ2xldG9uKCkuc3RhcnQoaW5zcGVjdG9yQWRkcmVzcy5nZXQoKSwgcG9ydCk7CisgICAgSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLnN0YXJ0KGluc3BlY3Rv
ckFkZHJlc3MuZ2V0KCksIHBvcnQpOwogfQogI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgaWYgKGNvbnN0IGNoYXIqIGFkZHJlc3MgPSBnX2dldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9T
RVJWRVIiKSkgewotICAgICAgICBpZiAoIWluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIo
YWRkcmVzcykpCi0gICAgICAgICAgICBnX3Vuc2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZF
UiIpOwotICAgIH0KKyAgICBpZiAoY29uc3QgY2hhciogYWRkcmVzcyA9IGdfZ2V0ZW52KCJXRUJL
SVRfSU5TUEVDVE9SX1NFUlZFUiIpKQorICAgICAgICBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9y
U2VydmVyKGFkZHJlc3MpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361400</attachid>
            <date>2019-02-07 08:46:19 -0800</date>
            <delta_ts>2019-02-12 01:29:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194370-20190207104618.patch</filename>
            <type>text/plain</type>
            <size>8622</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NDQ0OWRjNDI1NTE1Y2NmMzIwZjc5YjFlNDk4YjYxNjZlNDg5ZDY2Li45Y2Y5NDY1ZTM1NmM5NGJh
OWE1MDkxYzhlZDk0ZGIzMzM3Mzc0MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOS0wMi0wNyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBVbnNhZmUgZ191bnNldGVudigpIHVzZSBp
biBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQzNzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgYSBjb3VwbGUgV1RGTG9nQWx3YXlz
IHRvIHVzZSBnX3dhcm5pbmcsIGZvciBnb29kIG1lYXN1cmUuIE9mIGNvdXJzZSB0aGlzIGlzbid0
CisgICAgICAgIG5lY2Vzc2FyeSwgYnV0IGl0IHdpbGwgbWFrZSBlcnJvcnMgbW9yZSB2aXNpYmxl
LgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6ZGJ1c0Nvbm5lY3Rpb25DYWxsQXN5bmNSZWFkeUNhbGxiYWNrKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzdGFydCk6CisKIDIw
MTktMDItMDYgIFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgQnVpbGQgZmFpbHVyZSBhZnRlciByMjQwNDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU2YmFiNjhhZmQ1Njk1
NjZiNDU2MjQwNTA3YmZkOTZkNmU2ZTM5N2QuLjE0ZWRkMjk1YmVmNWMxOGJmMDE1MjliNTg5NGQ3
MTYxMDlmYTY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTktMDItMDcgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdW0dU
S10gVW5zYWZlIGdfdW5zZXRlbnYoKSB1c2UgaW4gV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk0MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SXQgaXMgaW5jb3JyZWN0IHRvIHVzZSBnX3Vuc2V0ZW52KCkgaGVyZSBiZWNhdXNlIGl0IGlzIE1U
LVVuc2FmZS4gV2Uga25vdyB0aGF0IGl0IGlzCisgICAgICAgIGltcG9zc2libGUgYW5kIHVucmVh
c29uYWJsZSB0byBleHBlY3QgdGhlIGFwcGxpY2F0aW9uIGhhcyBub3Qgc3RhcnRlZCBvdGhlciB0
aHJlYWRzIGF0IHRoaXMKKyAgICAgICAgcG9pbnQsIGFuZCB0aHJlYWRzIHdpbGwgYmUgY2FsbGlu
ZyBnZXRlbnYoKS4gV2ViS2l0IGl0c2VsZiBoYXMgcHJvYmFibHkgYWxyZWFkeSBzdGFydGVkCisg
ICAgICAgIHRocmVhZHMgb2YgaXRzIG93bi4KKworICAgICAgICBGb3J0dW5hdGVseSwgdGhlIHJl
bW90ZSBpbnNwZWN0b3IgaW4gdGhlIHdlYiBwcm9jZXNzIGlzIGFscmVhZHkgcHJlcGFyZWQgdG8g
ZGVhbCB3aXRoCisgICAgICAgIGZhaWx1cmUgdG8gY29ubmVjdCB0byB0aGUgaW5zcGVjdG9yIHNl
cnZlciwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBleGNlcHQgc3RvcAorICAgICAg
ICBtZXNzaW5nIHdpdGggdGhlIGVudmlyb25tZW50LgorCisgICAgICAgIE5vdGUgdGhlc2UgZmls
ZXMgYXJlIGNvcGllcyBvZiBlYWNoIG90aGVyLiBJJ2xsIG1lcmdlIHRoZW0gdG9nZXRoZXIgaW4g
YSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQ
b29sR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNl
cnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojppbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisKIDIwMTktMDIt
MDYgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04ocjI0MDc4NSk6IFtTT1VQXSBCcm9rZSBjb29raWUgcGVyc2lzdGVudCBzdG9y
YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9n
bGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAppbmRleCBiNzM0NTVhNDBj
YzE1ZDU2MzUzZmY2OTRmYjY1MzQwMTgyOTI0YzQ4Li5jMDc1Njk4YmQ5YmY2ZTcwNDhjMDI0MWNi
ZmY4MzI3OTU2MjcyYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAK
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0KCkKICAgICAgICAg
ICAgIGlmIChHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGFkb3B0R1JlZihn
X2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJlc3NfZmluaXNoKHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSkpCiAgICAgICAgICAgICAgICAgaW5zcGVjdG9yLT5zZXR1cENvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSk7CiAgICAgICAgICAgICBlbHNlIGlmICghZ19lcnJvcl9tYXRjaGVz
KGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCi0gICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJSZW1vdGVJbnNwZWN0b3IgZmFpbGVkIHRvIGNvbm5lY3Qg
dG8gaW5zcGVjdG9yIHNlcnZlciBhdDogJXM6ICVzIiwgZ19nZXRlbnYoIldFQktJVF9JTlNQRUNU
T1JfU0VSVkVSIiksIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBnX3dhcm5pbmco
IlJlbW90ZUluc3BlY3RvciBmYWlsZWQgdG8gY29ubmVjdCB0byBpbnNwZWN0b3Igc2VydmVyIGF0
OiAlczogJXMiLCBnX2dldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSwgZXJyb3ItPm1l
c3NhZ2UpOwogICAgIH0sIHRoaXMpOwogfQogCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIHZv
aWQgZGJ1c0Nvbm5lY3Rpb25DYWxsQXN5bmNSZWFkeUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwg
R0FzeW5jUmVzdWx0KgogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBHUmVm
UHRyPEdWYXJpYW50PiByZXN1bHRWYXJpYW50ID0gYWRvcHRHUmVmKGdfZGJ1c19jb25uZWN0aW9u
X2NhbGxfZmluaXNoKEdfREJVU19DT05ORUNUSU9OKHNvdXJjZSksIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7CiAgICAgaWYgKCFyZXN1bHRWYXJpYW50ICYmICFnX2Vycm9yX21hdGNoZXMoZXJy
b3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKLSAgICAgICAgV1RG
TG9nQWx3YXlzKCJSZW1vdGVJbnNwZWN0b3IgZmFpbGVkIHRvIHNlbmQgREJ1cyBtZXNzYWdlOiAl
cyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgZ193YXJuaW5nKCJSZW1vdGVJbnNwZWN0b3Ig
ZmFpbGVkIHRvIHNlbmQgREJ1cyBtZXNzYWdlOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKIH0KIAog
VGFyZ2V0TGlzdGluZyBSZW1vdGVJbnNwZWN0b3I6Omxpc3RpbmdGb3JJbnNwZWN0aW9uVGFyZ2V0
KGNvbnN0IFJlbW90ZUluc3BlY3Rpb25UYXJnZXQmIHRhcmdldCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVj
dG9yU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2ds
aWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCBkYzA5YzcyYmJjYTI5OGFjODYwZDE2
NGQyZjZlNDg0N2YwM2Y0YjkwLi40NTNlM2EwMDBiMjExNmQ2NmEwY2E2ODIxZTBiNjY5NDcwNmEz
YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9n
bGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC0xOTcs
NyArMTk3LDcgQEAgYm9vbCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnN0YXJ0KGNvbnN0IGNoYXIq
IGFkZHJlc3MsIHVuc2lnbmVkIHBvcnQpCiAgICAgbV9kYnVzU2VydmVyID0gYWRvcHRHUmVmKGdf
ZGJ1c19zZXJ2ZXJfbmV3X3N5bmMoZGJ1c0FkZHJlc3MuZ2V0KCksIEdfREJVU19TRVJWRVJfRkxB
R1NfQVVUSEVOVElDQVRJT05fQUxMT1dfQU5PTllNT1VTLCB1aWQuZ2V0KCksIG51bGxwdHIsIG1f
Y2FuY2VsbGFibGUuZ2V0KCksICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmICghbV9kYnVzU2Vy
dmVyKSB7CiAgICAgICAgIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0lPX0VS
Uk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIkZh
aWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIHNlcnZlciBvbiAlczogJXNcbiIsIGRidXNB
ZGRyZXNzLmdldCgpLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgICAgICBnX3dhcm5pbmcoIkZh
aWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9yIHNlcnZlciBvbiAlczogJXNcbiIsIGRidXNB
ZGRyZXNzLmdldCgpLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNz
UG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xH
dGsuY3BwCmluZGV4IDZiMjM1NzQwNGUwM2FlMzAyMWFlODgwYjYzYThjZWMwZWU4NmYwZjYuLjc3
ZmExYmMwYWJmMDY1YzQ3NzBkNmYxYjQ1MmU2NjRhNTY4MWE2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtNDQsMzYgKzQ0
LDM0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotc3RhdGljIGJvb2wgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihjb25zdCBjaGFy
KiBhZGRyZXNzKQorc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihj
b25zdCBjaGFyKiBhZGRyZXNzKQogewogICAgIGlmIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
clNlcnZlcjo6c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWFkZHJlc3NbMF0pCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbnNwZWN0b3JB
ZGRyZXNzKGdfc3RyZHVwKGFkZHJlc3MpKTsKICAgICBjaGFyKiBwb3J0UHRyID0gZ19zdHJyc3Ry
KGluc3BlY3RvckFkZHJlc3MuZ2V0KCksICI6Iik7CiAgICAgaWYgKCFwb3J0UHRyKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKIAogICAgICpwb3J0UHRyID0gJ1wwJzsK
ICAgICBwb3J0UHRyKys7CiAgICAgZ3VpbnQ2NCBwb3J0ID0gZ19hc2NpaV9zdHJ0b3VsbChwb3J0
UHRyLCBudWxscHRyLCAxMCk7CiAgICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybjsKIAotICAgIHJldHVybiBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
clNlcnZlcjo6c2luZ2xldG9uKCkuc3RhcnQoaW5zcGVjdG9yQWRkcmVzcy5nZXQoKSwgcG9ydCk7
CisgICAgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLnN0YXJ0
KGluc3BlY3RvckFkZHJlc3MuZ2V0KCksIHBvcnQpOwogfQogI2VuZGlmCiAKIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCi0gICAgaWYgKGNvbnN0IGNoYXIqIGFkZHJlc3MgPSBnX2dldGVudigiV0VCS0lUX0lO
U1BFQ1RPUl9TRVJWRVIiKSkgewotICAgICAgICBpZiAoIWluaXRpYWxpemVSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIoYWRkcmVzcykpCi0gICAgICAgICAgICBnX3Vuc2V0ZW52KCJXRUJLSVRfSU5TUEVD
VE9SX1NFUlZFUiIpOwotICAgIH0KKyAgICBpZiAoY29uc3QgY2hhciogYWRkcmVzcyA9IGdfZ2V0
ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpKQorICAgICAgICBpbml0aWFsaXplUmVtb3Rl
SW5zcGVjdG9yU2VydmVyKGFkZHJlc3MpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmluZGV4IGY1MTAxN2E4Y2Ey
OWVkMDc5OTRkN2QyMDdjOTU3MTQxMTJhMzhiZjUuLjFkOWUyZjgzZTE0MzFmN2ZlNWU4ZjBiODQx
ZTllZGQ1NGIyYmZiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9X
ZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dl
YlByb2Nlc3NQb29sV1BFLmNwcApAQCAtNTEsMzYgKzUxLDM0IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZVJlbW90ZUluc3BlY3RvclNlcnZlcihjb25zdCBjaGFyKiBhZGRyZXNzKQorc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihjb25zdCBjaGFyKiBhZGRyZXNzKQogewog
ICAgIGlmIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkuaXNS
dW5uaW5nKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIWFkZHJlc3NbMF0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwog
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbnNwZWN0b3JBZGRyZXNzKGdfc3RyZHVwKGFkZHJlc3Mp
KTsKICAgICBjaGFyKiBwb3J0UHRyID0gZ19zdHJyc3RyKGluc3BlY3RvckFkZHJlc3MuZ2V0KCks
ICI6Iik7CiAgICAgaWYgKCFwb3J0UHRyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybjsKIAogICAgICpwb3J0UHRyID0gJ1wwJzsKICAgICBwb3J0UHRyKys7CiAgICAgZ3Vp
bnQ2NCBwb3J0ID0gZ19hc2NpaV9zdHJ0b3VsbChwb3J0UHRyLCBudWxscHRyLCAxMCk7CiAgICAg
aWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKIAotICAg
IHJldHVybiBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkuc3Rh
cnQoaW5zcGVjdG9yQWRkcmVzcy5nZXQoKSwgcG9ydCk7CisgICAgSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLnN0YXJ0KGluc3BlY3RvckFkZHJlc3MuZ2V0KCks
IHBvcnQpOwogfQogI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCiB7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgaWYgKGNvbnN0IGNo
YXIqIGFkZHJlc3MgPSBnX2dldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSkgewotICAg
ICAgICBpZiAoIWluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoYWRkcmVzcykpCi0gICAg
ICAgICAgICBnX3Vuc2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpOwotICAgIH0KKyAg
ICBpZiAoY29uc3QgY2hhciogYWRkcmVzcyA9IGdfZ2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NF
UlZFUiIpKQorICAgICAgICBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKGFkZHJlc3Mp
OwogI2VuZGlmCiB9CiAK
</data>
<flag name="review"
          id="378081"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="378424"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>