<?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>182328</bug_id>
          
          <creation_ts>2018-01-31 03:13:09 -0800</creation_ts>
          <short_desc>WebDriver: addCookie command should prepend a dot to domain if missing</short_desc>
          <delta_ts>2019-04-24 18:58:01 -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>WebDriver</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=182427</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>182423</dependson>
    
    <dependson>182508</dependson>
          <blocked>184334</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1394959</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-31 03:13:09 -0800</bug_when>
    <thetext>soup_cookie_parse() adds the initial &apos;.&apos; to the domain if missing before creating the SoupCookie, but soup_cookie_new() allows for domain to be a hostname that needs to match exactly. When converting a WebCore Cookie into a SoupCookie we always want the domain to be considered as such and not as a hostname, so we need to prepend the &apos;.&apos; if missing. This is causing a WebDriver test to fail:

___________________________________________________________________________________ test_add_domain_cookie ___________________________________________________________________________________

session = &lt;webdriver.client.Session object at 0x7fbf6c169dd0&gt;, url = &lt;function url at 0x7fbf6c183140&gt;
server_config = {&apos;domains&apos;: {&apos;&apos;: &apos;localhost&apos;}, &apos;host&apos;: &apos;localhost&apos;, &apos;ports&apos;: {&apos;http&apos;: [&apos;8802&apos;]}}

    def test_add_domain_cookie(session, url, server_config):
        session.url = url(&quot;/common/blank.html&quot;)
        clear_all_cookies(session)
        create_cookie_request = {
            &quot;cookie&quot;: {
                &quot;name&quot;: &quot;hello&quot;,
                &quot;value&quot;: &quot;world&quot;,
                &quot;domain&quot;: server_config[&quot;domains&quot;][&quot;&quot;],
                &quot;path&quot;: &quot;/&quot;,
                &quot;httpOnly&quot;: False,
                &quot;secure&quot;: False
            }
        }
        result = session.transport.send(&quot;POST&quot;, &quot;session/%s/cookie&quot; % session.session_id, create_cookie_request)
        assert result.status == 200
        assert &quot;value&quot; in result.body
        assert result.body[&quot;value&quot;] is None
    
        result = session.transport.send(&quot;GET&quot;, &quot;session/%s/cookie&quot; % session.session_id)
        assert result.status == 200
        assert &quot;value&quot; in result.body
        assert isinstance(result.body[&quot;value&quot;], list)
        assert len(result.body[&quot;value&quot;]) == 1
        assert isinstance(result.body[&quot;value&quot;][0], dict)
    
        cookie = result.body[&quot;value&quot;][0]
        assert &quot;name&quot; in cookie
        assert isinstance(cookie[&quot;name&quot;], basestring)
        assert &quot;value&quot; in cookie
        assert isinstance(cookie[&quot;value&quot;], basestring)
        assert &quot;domain&quot; in cookie
        assert isinstance(cookie[&quot;domain&quot;], basestring)
    
        assert cookie[&quot;name&quot;] == &quot;hello&quot;
        assert cookie[&quot;value&quot;] == &quot;world&quot;
&gt;       assert cookie[&quot;domain&quot;] == &quot;.%s&quot; % server_config[&quot;domains&quot;][&quot;&quot;]
E       AssertionError: assert &apos;localhost&apos; == &apos;.localhost&apos;
E         - localhost
E         + .localhost
E         ? +

cookie     = {&apos;domain&apos;: &apos;localhost&apos;, &apos;httpOnly&apos;: False, &apos;name&apos;: &apos;hello&apos;, &apos;path&apos;: &apos;/&apos;, ...}
create_cookie_request = {&apos;cookie&apos;: {&apos;domain&apos;: &apos;localhost&apos;, &apos;httpOnly&apos;: False, &apos;name&apos;: &apos;hello&apos;, &apos;path&apos;: &apos;/&apos;, ...}}
result     = &lt;Responsetatus=200 body={&quot;value&quot;: [{&quot;domain&quot;: &quot;localhost&quot;, &quot;name&quot;: &quot;hello&quot;, &quot;value&quot;: &quot;world&quot;, &quot;path&quot;: &quot;/&quot;, &quot;httpOnly&quot;: false, &quot;secure&quot;: false}]}&gt;
server_config = {&apos;domains&apos;: {&apos;&apos;: &apos;localhost&apos;}, &apos;host&apos;: &apos;localhost&apos;, &apos;ports&apos;: {&apos;http&apos;: [&apos;8802&apos;]}}
session    = &lt;webdriver.client.Session object at 0x7fbf6c169dd0&gt;
url        = &lt;function url at 0x7fbf6c183140&gt;

WebDriverTests/imported/w3c/webdriver/tests/cookies/add_cookie.py:39: AssertionError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394961</commentid>
    <comment_count>1</comment_count>
      <attachid>332753</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-31 03:15:21 -0800</bug_when>
    <thetext>Created attachment 332753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395146</commentid>
    <comment_count>2</comment_count>
      <attachid>332753</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-31 14:00:39 -0800</bug_when>
    <thetext>Comment on attachment 332753
Patch

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

&gt; Source/WebCore/platform/network/soup/CookieSoup.cpp:66
&gt; +    // soup_cookie_new() will handle the given domain as a hostname if it doesn&apos;t start with &apos;.&apos;.
&gt; +    auto cookieDomain = domain.utf8();
&gt; +    if (cookieDomain.length() &amp;&amp; !g_hostname_is_ip_address(cookieDomain.data()) &amp;&amp; cookieDomain.data()[0] != &apos;.&apos;)
&gt; +        cookieDomain = makeString(&apos;.&apos;, domain).utf8();

I don&apos;t know. RFC 2965 says:

   Domain=value
      OPTIONAL.  The value of the Domain attribute specifies the domain
      for which the cookie is valid.  If an explicitly specified value
      does not start with a dot, the user agent supplies a leading dot

The dot is actually significant and probably shouldn&apos;t change when converting from a WebCore::Cookie to SoupCookie. I&apos;m worried that the dot should have already been prepended somewhere else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395369</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-31 23:51:11 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt; Comment on attachment 332753 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332753&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/soup/CookieSoup.cpp:66
&gt; &gt; +    // soup_cookie_new() will handle the given domain as a hostname if it doesn&apos;t start with &apos;.&apos;.
&gt; &gt; +    auto cookieDomain = domain.utf8();
&gt; &gt; +    if (cookieDomain.length() &amp;&amp; !g_hostname_is_ip_address(cookieDomain.data()) &amp;&amp; cookieDomain.data()[0] != &apos;.&apos;)
&gt; &gt; +        cookieDomain = makeString(&apos;.&apos;, domain).utf8();
&gt; 
&gt; I don&apos;t know. RFC 2965 says:
&gt; 
&gt;    Domain=value
&gt;       OPTIONAL.  The value of the Domain attribute specifies the domain
&gt;       for which the cookie is valid.  If an explicitly specified value
&gt;       does not start with a dot, the user agent supplies a leading dot
&gt; 
&gt; The dot is actually significant and probably shouldn&apos;t change when
&gt; converting from a WebCore::Cookie to SoupCookie. I&apos;m worried that the dot
&gt; should have already been prepended somewhere else.

The dot is indeed prepended by libsoup when parsing a cookie, that is, when a cookie is set by DOM. When we convert a WebCore Cookie to Soup is usually because it&apos;s not a cookie added by DOM but by some API (either the user API or WebDriver ins this case). What we are doing here is the same soup does when a cookie is added by DOM, prepending the dot if it&apos;s not there already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395460</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-01 07:53:55 -0800</bug_when>
    <thetext>Committed r227964: &lt;https://trac.webkit.org/changeset/227964&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395461</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-01 07:54:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/37116398&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395778</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-02 01:48:17 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt; Comment on attachment 332753 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332753&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/soup/CookieSoup.cpp:66
&gt; &gt; +    // soup_cookie_new() will handle the given domain as a hostname if it doesn&apos;t start with &apos;.&apos;.
&gt; &gt; +    auto cookieDomain = domain.utf8();
&gt; &gt; +    if (cookieDomain.length() &amp;&amp; !g_hostname_is_ip_address(cookieDomain.data()) &amp;&amp; cookieDomain.data()[0] != &apos;.&apos;)
&gt; &gt; +        cookieDomain = makeString(&apos;.&apos;, domain).utf8();
&gt; 
&gt; I don&apos;t know. RFC 2965 says:
&gt; 
&gt;    Domain=value
&gt;       OPTIONAL.  The value of the Domain attribute specifies the domain
&gt;       for which the cookie is valid.  If an explicitly specified value
&gt;       does not start with a dot, the user agent supplies a leading dot
&gt; 
&gt; The dot is actually significant and probably shouldn&apos;t change when
&gt; converting from a WebCore::Cookie to SoupCookie. I&apos;m worried that the dot
&gt; should have already been prepended somewhere else.

You were indeed right, I missed an important point: &quot;If an *explicitly* specified value&quot;. The spec also says:

&quot;Defaults to the effective request-host.  (Note that because
there is no dot at the beginning of effective request-host,
the default Domain can only domain-match itself.)&quot;

So, it can indeed be a hostname, when omitted in Set-Cookie header. In the case of user provided cookie, we should probably keep what the user is providing. So, yes this is not the right place to do this, because we don&apos;t know if that cookie came from the API or not. In the case of WebDriver, I&apos;ll file an issue in the spec to clarify if we should add the dot or not. I&apos;ll revert this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395780</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-02 01:50:19 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 182423</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395794</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-02 02:55:40 -0800</bug_when>
    <thetext>Moving to WebDriver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395795</commentid>
    <comment_count>9</comment_count>
      <attachid>332951</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-02 02:59:37 -0800</bug_when>
    <thetext>Created attachment 332951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395873</commentid>
    <comment_count>10</comment_count>
      <attachid>332951</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-02-02 08:48:53 -0800</bug_when>
    <thetext>Comment on attachment 332951
Patch

This looks safer, at least ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396239</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-05 00:46:55 -0800</bug_when>
    <thetext>Committed r228087: &lt;https://trac.webkit.org/changeset/228087&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396523</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-05 14:00:09 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 182508</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397468</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-07 23:49:32 -0800</bug_when>
    <thetext>Committed r228262: &lt;https://trac.webkit.org/changeset/228262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397606</commentid>
    <comment_count>14</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-02-08 11:31:05 -0800</bug_when>
    <thetext>Reverted r228262 for reason:

This broke an internal build alongside r228261.

Committed r228283: &lt;https://trac.webkit.org/changeset/228283&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398323</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-02-11 23:33:58 -0800</bug_when>
    <thetext>Committed r228371: &lt;https://trac.webkit.org/changeset/228371&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332753</attachid>
            <date>2018-01-31 03:15:21 -0800</date>
            <delta_ts>2018-02-02 02:59:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wd-soup-cookie.diff</filename>
            <type>text/plain</type>
            <size>2220</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZjNkNmVmZDQ3YS4uZGUxMDI1YTJhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0wMS0zMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW1NPVVBdIEVuc3VyZSBkb21haW4gaXMgdmFsaWQgd2hlbiBj
b252ZXJ0aW5nIGEgV2ViQ29yZSBDb29raWUgdG8gU291cAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgc291cF9jb29raWVfcGFyc2UoKSBhZGRzIHRoZSBp
bml0aWFsICcuJyB0byB0aGUgZG9tYWluIGlmIG1pc3NpbmcgYmVmb3JlIGNyZWF0aW5nIHRoZSBT
b3VwQ29va2llLCBidXQKKyAgICAgICAgc291cF9jb29raWVfbmV3KCkgYWxsb3dzIGZvciBkb21h
aW4gdG8gYmUgYSBob3N0bmFtZSB0aGF0IG5lZWRzIHRvIG1hdGNoIGV4YWN0bHkuIFdoZW4gY29u
dmVydGluZyBhIFdlYkNvcmUKKyAgICAgICAgQ29va2llIGludG8gYSBTb3VwQ29va2llIHdlIGFs
d2F5cyB3YW50IHRoZSBkb21haW4gdG8gYmUgY29uc2lkZXJlZCBhcyBzdWNoIGFuZCBub3QgYXMg
YSBob3N0bmFtZSwgc28gd2UgbmVlZCB0bworICAgICAgICBwcmVwZW5kIHRoZSAnLicgaWYgbWlz
c2luZy4KKworICAgICAgICBGaXhlczogaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0cy9jb29r
aWVzL2FkZF9jb29raWUucHk6OnRlc3RfYWRkX2RvbWFpbl9jb29raWUKKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b2tpZTo6dG9Tb3VwQ29va2llIGNvbnN0KToKKwogMjAxOC0wMS0zMCAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIHN5bnRoZXRp
Y0JvbGRPZmZzZXQgbWFrZXMgYSBmb250IHdpdGggZW1iZWRkZWQgYml0bWFwIGZvbnRzIHNob3du
IGFzIGRvdWJsZSBzdHJpa2UgaW4gSGlEUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVTb3VwLmNwcAppbmRleCBlZWMxNjliYWMxZS4uNGNjNTU2
NTBjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llU291cC5jcHAKQEAgLTYwLDggKzYwLDEzIEBAIFNvdXBDb29raWUqIENvb2tpZTo6dG9T
b3VwQ29va2llKCkgY29uc3QKICAgICBpZiAobmFtZS5pc051bGwoKSB8fCB2YWx1ZS5pc051bGwo
KSB8fCBkb21haW4uaXNOdWxsKCkgfHwgcGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKKyAgICAvLyBzb3VwX2Nvb2tpZV9uZXcoKSB3aWxsIGhhbmRsZSB0aGUgZ2l2ZW4g
ZG9tYWluIGFzIGEgaG9zdG5hbWUgaWYgaXQgZG9lc24ndCBzdGFydCB3aXRoICcuJy4KKyAgICBh
dXRvIGNvb2tpZURvbWFpbiA9IGRvbWFpbi51dGY4KCk7CisgICAgaWYgKGNvb2tpZURvbWFpbi5s
ZW5ndGgoKSAmJiAhZ19ob3N0bmFtZV9pc19pcF9hZGRyZXNzKGNvb2tpZURvbWFpbi5kYXRhKCkp
ICYmIGNvb2tpZURvbWFpbi5kYXRhKClbMF0gIT0gJy4nKQorICAgICAgICBjb29raWVEb21haW4g
PSBtYWtlU3RyaW5nKCcuJywgZG9tYWluKS51dGY4KCk7CisKICAgICBTb3VwQ29va2llKiBzb3Vw
Q29va2llID0gc291cF9jb29raWVfbmV3KG5hbWUudXRmOCgpLmRhdGEoKSwgdmFsdWUudXRmOCgp
LmRhdGEoKSwKLSAgICAgICAgZG9tYWluLnV0ZjgoKS5kYXRhKCksIHBhdGgudXRmOCgpLmRhdGEo
KSwgLTEpOworICAgICAgICBjb29raWVEb21haW4uZGF0YSgpLCBwYXRoLnV0ZjgoKS5kYXRhKCks
IC0xKTsKIAogICAgIHNvdXBfY29va2llX3NldF9odHRwX29ubHkoc291cENvb2tpZSwgaHR0cE9u
bHkpOwogICAgIHNvdXBfY29va2llX3NldF9zZWN1cmUoc291cENvb2tpZSwgc2VjdXJlKTsK
</data>
<flag name="review"
          id="351667"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332951</attachid>
            <date>2018-02-02 02:59:37 -0800</date>
            <delta_ts>2018-02-02 08:48:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wd-add-cookie-domain.diff</filename>
            <type>text/plain</type>
            <size>2091</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMjEyZWEyZDBhNDAuLjUyYjljYjU2NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE4LTAyLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBXZWJEcml2ZXI6IGFkZENvb2tpZSBjb21tYW5kIHNob3VsZCBwcmVw
ZW5kIGEgZG90IHRvIGRvbWFpbiBpZiBtaXNzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3
MTE2Mzk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJGQyAyOTY1OiBJZiBhbiBleHBsaWNpdGx5IHNwZWNpZmllZCB2YWx1ZSBkb2VzIG5vdCBzdGFy
dCB3aXRoIGEgZG90LCB0aGUgdXNlciBhZ2VudCBzdXBwbGllcyBhIGxlYWRpbmcgZG90LgorCisg
ICAgICAgIEZpeGVzOiBpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL2Nvb2tpZXMvYWRkX2Nv
b2tpZS5weTo6dGVzdF9hZGRfZG9tYWluX2Nvb2tpZQorCisgICAgICAgICogVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKToKKwogMjAxOC0wMi0wMSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgZmFpbHMg
dG8gYnVpbGQgKF9zdGFydEFzc2lzdGluZ05vZGUgaGFzIGNvbmZsaWN0aW5nIHBhcmFtZXRlcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGVmMDFkMzAxNjk5Li40ODE1MGIxOWIzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTEyMDcsNyArMTIwNywxNCBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbgogICAgIC8vIEluaGVyaXQgdGhlIGRvbWFpbi9ob3N0IGZyb20gdGhlIG1haW4g
ZnJhbWUncyBVUkwgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc2V0LgogICAgIGlmIChkb21haW4u
aXNFbXB0eSgpKQogICAgICAgICBkb21haW4gPSBhY3RpdmVVUkwuaG9zdCgpOwotCisgICAgZWxz
ZSBpZiAoZG9tYWluWzBdICE9ICcuJykgeworICAgICAgICAvLyBSRkMgMjk2NTogSWYgYW4gZXhw
bGljaXRseSBzcGVjaWZpZWQgdmFsdWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGRvdCwgdGhlIHVz
ZXIgYWdlbnQgc3VwcGxpZXMgYSBsZWFkaW5nIGRvdC4KKyAgICAgICAgLy8gQXNzdW1lIHRoYXQg
YW55IGhvc3QgdGhhdCBlbmRzIHdpdGggYSBkaWdpdCBpcyB0cnlpbmcgdG8gYmUgYW4gSVAgYWRk
cmVzcy4KKyAgICAgICAgLy8gRklYTUU6IHdlIGFyZSB1c2luZyB0aGlzIHRvIGRldGVjdCBJUCBh
ZGRyZXNzZXMgaW4gc2V2ZXJhbCBwbGFjZXMsIHdlIHNob3VsZCBhZGQgYSB3YXkgdG8gcHJvcGVy
bHkgZG8gdGhpcworICAgICAgICAvLyB0byBXZWJDb3JlIHBsYXRmb3JtIG9yIFBBTC4KKyAgICAg
ICAgaWYgKCFpc0FTQ0lJRGlnaXQoZG9tYWluW2RvbWFpbi5sZW5ndGgoKSAtIDFdKSkKKyAgICAg
ICAgICAgIGRvbWFpbiA9IG1ha2VTdHJpbmcoJy4nLCBkb21haW4pOworICAgIH0KICAgICBjb29r
aWUuZG9tYWluID0gZG9tYWluOwogCiAgICAgaWYgKCFjb29raWVPYmplY3QuZ2V0U3RyaW5nKFdU
Rjo6QVNDSUlMaXRlcmFsKCJwYXRoIiksIGNvb2tpZS5wYXRoKSkK
</data>
<flag name="review"
          id="351875"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>