<?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>86860</bug_id>
          
          <creation_ts>2012-05-18 09:21:49 -0700</creation_ts>
          <short_desc>KURL returns port equals to 0 if default port for protocol is in use</short_desc>
          <delta_ts>2012-05-21 05:45:11 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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="Thiago Marcos P. Santos">tmpsantos</reporter>
          <assigned_to name="Thiago Marcos P. Santos">tmpsantos</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>627748</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-18 09:21:49 -0700</bug_when>
    <thetext>This consequently affects WebCore::SecurityOrigin, since port 0 is also returned for malformed URL. You can&apos;t really say if the port == 0 fallsback to default or is Invalid.

For this fix, backwards compatibility has to be taken into account since database identifiers are generated like http_example.com_0 when the origin uses the default port (80 in this example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627751</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-18 09:25:44 -0700</bug_when>
    <thetext>I&apos;m not sure I understand what problem you&apos;re trying to solve.  KURL has an isValid method you&apos;re supposed to use to check if the URL is valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627857</commentid>
    <comment_count>2</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-18 11:36:34 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I&apos;m not sure I understand what problem you&apos;re trying to solve.  KURL has an isValid method you&apos;re supposed to use to check if the URL is valid.

The Security Origin API for at least EFL, Qt and GTK returns 0 when you call ::port() if the protocol is the default. Makes more sense to return the real port like 80, 443, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627876</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-18 11:47:59 -0700</bug_when>
    <thetext>&gt; The Security Origin API for at least EFL, Qt and GTK returns 0 when you call ::port() if the protocol is the default. Makes more sense to return the real port like 80, 443, etc.

Do you mean the API used by the embedder?  If so, that makes some sense.  I wonder if we should handle that at the WebKit layer though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627903</commentid>
    <comment_count>4</comment_count>
      <attachid>142761</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-18 12:10:41 -0700</bug_when>
    <thetext>Created attachment 142761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627914</commentid>
    <comment_count>5</comment_count>
      <attachid>142761</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-18 12:19:11 -0700</bug_when>
    <thetext>Comment on attachment 142761
Patch

Wouldn&apos;t it be easier to leave the internal representation as 0 and just change SecurityOrigin::port to look up the default port if the port number is zero?

Also, 0 isn&apos;t a valid port, so there&apos;s no need to keep around an extra bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627921</commentid>
    <comment_count>6</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-18 12:26:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 142761 [details])
&gt; Wouldn&apos;t it be easier to leave the internal representation as 0 and just change SecurityOrigin::port to look up the default port if the port number is zero?
&gt; 
&gt; Also, 0 isn&apos;t a valid port, so there&apos;s no need to keep around an extra bit.

Hmmm, that&apos;s one option, but if we do so, KURL will not return a valid port for KURL::port() and everything that uses it will need to do the same lookup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627934</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-18 12:34:39 -0700</bug_when>
    <thetext>&gt; Hmmm, that&apos;s one option, but if we do so, KURL will not return a valid port for KURL::port() and everything that uses it will need to do the same lookup.

I&apos;m not sure you&apos;re right w.r.t. interoperating with other browsers.  Consider this test case, for example:

data:text/html,&lt;a href=&quot;http://example.com&quot;&gt;&lt;/a&gt;&lt;script&gt;alert(document.getElementsByTagName(&quot;a&quot;)[0].port);&lt;/script&gt;

In Firefox and Chrome, that alerts the empty string, not 80.  In Safari, it alerts &quot;0&quot;.  The right behavior is probably to alert the empty string.

Here&apos;s a positive control, for comparison:

data:text/html,&lt;a href=&quot;http://example.com:234&quot;&gt;&lt;/a&gt;&lt;script&gt;alert(document.getElementsByTagName(&quot;a&quot;)[0].port);&lt;/script&gt;

In that case, Firefox, Safari, and Chrome alert &quot;234&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627940</commentid>
    <comment_count>8</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-18 12:44:01 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Hmmm, that&apos;s one option, but if we do so, KURL will not return a valid port for KURL::port() and everything that uses it will need to do the same lookup.
&gt; 
&gt; I&apos;m not sure you&apos;re right w.r.t. interoperating with other browsers.  Consider this test case, for example:
&gt; 
&gt; data:text/html,&lt;a href=&quot;http://example.com&quot;&gt;&lt;/a&gt;&lt;script&gt;alert(document.getElementsByTagName(&quot;a&quot;)[0].port);&lt;/script&gt;
&gt; 
&gt; In Firefox and Chrome, that alerts the empty string, not 80.  In Safari, it alerts &quot;0&quot;.  The right behavior is probably to alert the empty string.
&gt; 
&gt; Here&apos;s a positive control, for comparison:
&gt; 
&gt; data:text/html,&lt;a href=&quot;http://example.com:234&quot;&gt;&lt;/a&gt;&lt;script&gt;alert(document.getElementsByTagName(&quot;a&quot;)[0].port);&lt;/script&gt;
&gt; 
&gt; In that case, Firefox, Safari, and Chrome alert &quot;234&quot;.

I took this as source of inspiration:
http://tools.ietf.org/html/rfc6454#section-4

6.  If there is no port component of the URI:
   1.  Let uri-port be the default port for the protocol given by uri-scheme.
   Otherwise:
   2.  Let uri-port be the port component of the URI.

7.  Return the triple (uri-scheme, uri-host, uri-port).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627942</commentid>
    <comment_count>9</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-18 12:48:30 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Hmmm, that&apos;s one option, but if we do so, KURL will not return a valid port for KURL::port() and everything that uses it will need to do the same lookup.
&gt; 
&gt; I&apos;m not sure you&apos;re right w.r.t. interoperating with other browsers.  Consider this test case, for example:
&gt; 
&gt; data:text/html,&lt;a href=&quot;http://example.com&quot;&gt;&lt;/a&gt;&lt;script&gt;alert(document.getElementsByTagName(&quot;a&quot;)[0].port);&lt;/script&gt;
&gt; 
&gt; In Firefox and Chrome, that alerts the empty string, not 80.  In Safari, it alerts &quot;0&quot;.  The right behavior is probably to alert the empty string.

Hmmm, and Opera also alerts empty.

&gt; 
&gt; Here&apos;s a positive control, for comparison:
&gt; 
&gt; data:text/html,&lt;a href=&quot;http://example.com:234&quot;&gt;&lt;/a&gt;&lt;script&gt;alert(document.getElementsByTagName(&quot;a&quot;)[0].port);&lt;/script&gt;
&gt; 
&gt; In that case, Firefox, Safari, and Chrome alert &quot;234&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627949</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-18 12:52:09 -0700</bug_when>
    <thetext>&gt; I took this as source of inspiration:
&gt; http://tools.ietf.org/html/rfc6454#section-4

Haha.  Yeah, I know what it says.  :)

That&apos;s all just internal representation, however.  What really matters is the observable consequences.  The value we expose via the embedder API is certainly observable, and I agree with you that it makes sense to return 80 to the embedder.  There are many ways to implement that.  The easiest might well be to do the conversion at the last possible moment before returning the value via the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627957</commentid>
    <comment_count>11</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-18 12:57:48 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; I took this as source of inspiration:
&gt; &gt; http://tools.ietf.org/html/rfc6454#section-4
&gt; 
&gt; Haha.  Yeah, I know what it says.  :)
&gt; 
&gt; That&apos;s all just internal representation, however.  What really matters is the observable consequences.  The value we expose via the embedder API is certainly observable, and I agree with you that it makes sense to return 80 to the embedder.  There are many ways to implement that.  The easiest might well be to do the conversion at the last possible moment before returning the value via the API.

OK, gonna fix that. Thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629002</commentid>
    <comment_count>12</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-05-21 05:45:11 -0700</bug_when>
    <thetext>Will be handled now on bug 87002, with a different context.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142761</attachid>
            <date>2012-05-18 12:10:41 -0700</date>
            <delta_ts>2012-05-18 12:19:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86860-20120518221039.patch</filename>
            <type>text/plain</type>
            <size>10721</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM0M2FmYzg4NjlmZjll
NmQxNmI2YTNjZWUxMDg0YjQ5ZjNkNzQ3OC4uMDM0MTcwNzJmMDNiNTQ2ZWViZjc3MThiMWExZDAx
Y2M3NGM1NzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTE4ICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IEtVUkwgcmV0dXJucyBwb3J0IGVxdWFscyB0byAwIGlmIGRlZmF1bHQgcG9ydCBmb3IgcHJvdG9j
b2wgaXMgaW4gdXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04Njg2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgYWZmZWN0cyBtYWlubHkgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4gYXMgc2lkZSBl
ZmZlY3Qgc2luY2UgaXQKKyAgICAgICAgcmV0dXJucyAwIHdoZW4gYXNrZWQgZm9yIHBvcnQoKS4g
VGhpcyBmaXggcHJlc2VydmVzIHRoZSBvbGQKKyAgICAgICAgYmVoYXZpb3Igd2hlbiBkZWFsaW5n
IHdpdGggZGF0YWJhc2UgaWRlbnRpZmllcnMuIFdoZW4gY29udmVydGluZyBLVVJMCisgICAgICAg
IHRvIFN0cmluZywgdGhlIHBvcnQgaXMgb21pdHRlZC4gVGhlc2UgdHdvIGRldGFpbHMgd2VyZSBr
ZXB0IGJlY2F1c2UKKyAgICAgICAgb2YgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6dG9SYXdTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmRhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5o
OgorICAgICAgICAoU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpLVVJMOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnBhcnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wpOgorICAgICAgICAqIHBs
YXRmb3JtL0tVUkwuaDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmlzVXNpbmdEZWZhdWx0UG9y
dCk6CisgICAgICAgIChLVVJMKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1LTE4ICBZ
aSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTAy
NTUzKTogU21hcnQgbGlua3MgZG8gbm90IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5jcHAKaW5kZXggZjVhOGY5MmNmMDI5M2ZkNzIyZWRmOWVkYzVjY2MzODZhZDUyYmY4Mi4u
NDEwODQxNmU4ZjZmNTU5MjRmMmUxNThjOWYxYjZlYmQ4Yzc1MWRmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI1LDEzICsxMjYsMTEgQEAgU2VjdXJpdHlPcmln
aW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKICAgICAsIG1fZG9tYWluV2FzU2V0
SW5ET00oZmFsc2UpCiAgICAgLCBtX2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oZmFsc2UpCiAg
ICAgLCBtX25lZWRzRGF0YWJhc2VJZGVudGlmaWVyUXVpcmtGb3JGaWxlcyhmYWxzZSkKKyAgICAs
IG1faXNVc2luZ0RlZmF1bHRQb3J0KHVybC5pc1VzaW5nRGVmYXVsdFBvcnQoKSkKIHsKICAgICAv
LyBkb2N1bWVudC5kb21haW4gc3RhcnRzIGFzIG1faG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhl
IERPTS4KICAgICBtX2RvbWFpbiA9IG1faG9zdDsKIAotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkKLSAgICAgICAgbV9wb3J0ID0gSW52YWxpZFBv
cnQ7Ci0KICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4g
bG9hZCBsb2NhbCByZXNvdXJjZXMuCiAgICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xv
Y2FsKCk7CiAKQEAgLTE1MCw2ICsxNDksNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmln
aW4oKQogICAgICwgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoZmFsc2UpCiAgICAgLCBtX2VuZm9y
Y2VGaWxlUGF0aFNlcGFyYXRpb24oZmFsc2UpCiAgICAgLCBtX25lZWRzRGF0YWJhc2VJZGVudGlm
aWVyUXVpcmtGb3JGaWxlcyhmYWxzZSkKKyAgICAsIG1faXNVc2luZ0RlZmF1bHRQb3J0KGZhbHNl
KQogewogfQogCkBAIC0xNjYsNiArMTY2LDcgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikKICAgICAsIG1fY2FuTG9hZExvY2FsUmVz
b3VyY2VzKG90aGVyLT5tX2NhbkxvYWRMb2NhbFJlc291cmNlcykKICAgICAsIG1fZW5mb3JjZUZp
bGVQYXRoU2VwYXJhdGlvbihvdGhlci0+bV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uKQogICAg
ICwgbV9uZWVkc0RhdGFiYXNlSWRlbnRpZmllclF1aXJrRm9yRmlsZXMob3RoZXItPm1fbmVlZHNE
YXRhYmFzZUlkZW50aWZpZXJRdWlya0ZvckZpbGVzKQorICAgICwgbV9pc1VzaW5nRGVmYXVsdFBv
cnQob3RoZXItPm1faXNVc2luZ0RlZmF1bHRQb3J0KQogewogfQogCkBAIC00MTQsNyArNDE1LDcg
QEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0cmluZygpIGNvbnN0CiAgICAgcmVzdWx0
LmFwcGVuZCgiOi8vIik7CiAgICAgcmVzdWx0LmFwcGVuZChtX2hvc3QpOwogCi0gICAgaWYgKG1f
cG9ydCkgeworICAgIGlmIChtX3BvcnQgJiYgIW1faXNVc2luZ0RlZmF1bHRQb3J0KSB7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIjoiKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51
bWJlcihtX3BvcnQpKTsKICAgICB9CkBAIC00NjEsNiArNDYyLDEwIEBAIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVy
KGNvbnN0IFN0CiAgICAgU3RyaW5nIGhvc3QgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5n
KHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2VwYXJhdG9yMSAtIDEpOwogICAgIAogICAg
IGhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CisKKyAgICBpZiAoIXBvcnQp
CisgICAgICAgIHBvcnQgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKKwogICAg
IHJldHVybiBjcmVhdGUoS1VSTChLVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIjoi
ICsgU3RyaW5nOjpudW1iZXIocG9ydCkpKTsKIH0KIApAQCAtNDg3LDcgKzQ5MiwxNSBAQCBTdHJp
bmcgU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAgaWYgKG1f
ZW5jb2RlZEhvc3QuaXNFbXB0eSgpKQogICAgICAgICBtX2VuY29kZWRIb3N0ID0gZW5jb2RlRm9y
RmlsZU5hbWUobV9ob3N0KTsKIAotICAgIHJldHVybiBtX3Byb3RvY29sICsgc2VwYXJhdG9yU3Ry
aW5nICsgbV9lbmNvZGVkSG9zdCArIHNlcGFyYXRvclN0cmluZyArIFN0cmluZzo6bnVtYmVyKG1f
cG9ydCk7IAorICAgIC8vIEFuZCB5ZXQgaGlzdG9yaWNhbGx5LCB3ZSB1c2UgSW52YWxpZFBvcnQg
aWYgdGhlIGRlZmF1bHQgcG9ydCBmb3IKKyAgICAvLyB0aGUgcHJvdG9jb2wgaXMgaW4gdXNlLgor
ICAgIHVuc2lnbmVkIHNob3J0IHBvcnQ7CisgICAgaWYgKG1faXNVc2luZ0RlZmF1bHRQb3J0KQor
ICAgICAgICBwb3J0ID0gSW52YWxpZFBvcnQ7CisgICAgZWxzZQorICAgICAgICBwb3J0ID0gbV9w
b3J0OworCisgICAgcmV0dXJuIG1fcHJvdG9jb2wgKyBzZXBhcmF0b3JTdHJpbmcgKyBtX2VuY29k
ZWRIb3N0ICsgc2VwYXJhdG9yU3RyaW5nICsgU3RyaW5nOjpudW1iZXIocG9ydCk7CiB9CiAKIGJv
b2wgU2VjdXJpdHlPcmlnaW46OmVxdWFsKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29u
c3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKaW5kZXggZDdiOWFhNGQ5N2Q4ZWY1
ZWRkNDNkZWM4YjMyMzIwNTdmZGFiMjZhNS4uOGRkZWRkNWVkYThiNDFlNTA2ZDY5NDY5NzJiYjY1
YzJjZWVjZmZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtMTk3LDYg
KzE5Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkxvYWRMb2NhbFJlc291cmNlczsKICAg
ICBib29sIG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbjsKICAgICBib29sIG1fbmVlZHNEYXRh
YmFzZUlkZW50aWZpZXJRdWlya0ZvckZpbGVzOworICAgIGJvb2wgbV9pc1VzaW5nRGVmYXVsdFBv
cnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3Bw
CmluZGV4IDBiNDZlYzBmYzc2ZjBmNzljODk5NGNlMzMwYjYwMTMxNWExNGE1MTUuLjMwNzEwMzdk
M2E0ZmJmMWJkZGQzMGRhOGI5ZTlmM2Q5MjMxZWY2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwu
Y3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNywgMjAw
OCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzNCw2ICszMzUs
NyBAQCB2b2lkIEtVUkw6OmludmFsaWRhdGUoKQogICAgIG1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
MDsKICAgICBtX3F1ZXJ5RW5kID0gMDsKICAgICBtX2ZyYWdtZW50RW5kID0gMDsKKyAgICBtX2lz
VXNpbmdEZWZhdWx0UG9ydCA9IGZhbHNlOwogfQogCiBLVVJMOjpLVVJMKFBhcnNlZFVSTFN0cmlu
Z1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC01OTgsOCArNjAwLDEyIEBAIFN0cmluZyBLVVJM
Ojpob3N0KCkgY29uc3QKIHVuc2lnbmVkIHNob3J0IEtVUkw6OnBvcnQoKSBjb25zdAogewogICAg
IC8vIFdlIHJldHVybiBhIHBvcnQgb2YgMCBpZiB0aGVyZSBpcyBubyBwb3J0IHNwZWNpZmllZC4g
VGhpcyBjYW4gaGFwcGVuIGluIHR3byBzaXR1YXRpb25zOgotICAgIC8vIDEpIFRoZSBVUkwgY29u
dGFpbnMgbm8gY29sb24gYWZ0ZXIgdGhlIGhvc3QgbmFtZSBhbmQgYmVmb3JlIHRoZSBwYXRoIGNv
bXBvbmVudCBvZiB0aGUgVVJMLgotICAgIC8vIDIpIFRoZSBVUkwgY29udGFpbnMgYSBjb2xvbiBi
dXQgdGhlcmUncyBubyBwb3J0IG51bWJlciBiZWZvcmUgdGhlIHBhdGggY29tcG9uZW50IG9mIHRo
ZSBVUkwgYmVnaW5zLgorICAgIC8vIDEpIFRoZSBVUkwgY29udGFpbnMgbm8gY29sb24gYWZ0ZXIg
dGhlIGhvc3QgbmFtZSBhbmQgYmVmb3JlIHRoZSBwYXRoIGNvbXBvbmVudCBvZiB0aGUgVVJMIGFu
ZAorICAgIC8vICAgIHRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoZSBwcm90b2NvbCBpcyB1bmtub3du
LgorICAgIC8vIDIpIFRoZSBVUkwgY29udGFpbnMgYSBjb2xvbiBidXQgdGhlcmUncyBubyBwb3J0
IG51bWJlciBiZWZvcmUgdGhlIHBhdGggY29tcG9uZW50IG9mIHRoZSBVUkwgYmVnaW5zCisgICAg
Ly8gICAgYW5kIHRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoZSBwcm90b2NvbCBpcyB1bmtub3duLgor
ICAgIGlmIChtX2lzVXNpbmdEZWZhdWx0UG9ydCkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wocHJvdG9jb2woKSk7CiAgICAgaWYgKG1faG9zdEVuZCA9PSBtX3BvcnRFbmQg
fHwgbV9ob3N0RW5kID09IG1fcG9ydEVuZCAtIDEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0x
MTkzLDYgKzExOTksNyBAQCB2b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3Qg
U3RyaW5nKiBvcmlnaW5hbFN0cmluZykKICAgICAgICAgICAgICAgICBob3N0RW5kKys7CiAgICAg
ICAgIH0KICAgICAgICAgCisgICAgICAgIG1faXNVc2luZ0RlZmF1bHRQb3J0ID0gZmFsc2U7CiAg
ICAgICAgIGlmICh1cmxbaG9zdEVuZF0gPT0gJzonKSB7CiAgICAgICAgICAgICBwb3J0U3RhcnQg
PSBwb3J0RW5kID0gaG9zdEVuZCArIDE7CiAgCkBAIC0xMjAwLDggKzEyMDcsMTAgQEAgdm9pZCBL
VVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcp
CiAgICAgICAgICAgICBwb3J0RW5kID0gcG9ydFN0YXJ0OwogICAgICAgICAgICAgd2hpbGUgKGlz
QVNDSUlEaWdpdCh1cmxbcG9ydEVuZF0pKQogICAgICAgICAgICAgICAgIHBvcnRFbmQrKzsKLSAg
ICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2lzVXNpbmdEZWZh
dWx0UG9ydCA9IHRydWU7CiAgICAgICAgICAgICBwb3J0U3RhcnQgPSBwb3J0RW5kID0gaG9zdEVu
ZDsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghaXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3Bv
cnRFbmRdKSkgewogICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKQEAgLTEzMzUsMTEg
KzEzNDQsMTUgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmlu
Zyogb3JpZ2luYWxTdHJpbmcpCiAgICAgICAgIGlmIChob3N0RW5kICE9IHBvcnRTdGFydCkgewog
ICAgICAgICAgICAgY29uc3QgY2hhciogcG9ydFN0ciA9IHVybCArIHBvcnRTdGFydDsKICAgICAg
ICAgICAgIHNpemVfdCBwb3J0TGVuZ3RoID0gcG9ydEVuZCAtIHBvcnRTdGFydDsKLSAgICAgICAg
ICAgIGlmIChwb3J0TGVuZ3RoICYmICFpc0RlZmF1bHRQb3J0Rm9yU2NoZW1lKHBvcnRTdHIsIHBv
cnRMZW5ndGgsIGJ1ZmZlci5kYXRhKCksIG1fc2NoZW1lRW5kKSkgewotICAgICAgICAgICAgICAg
ICpwKysgPSAnOic7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogcG9ydEVuZFB0ciA9IHVy
bCArIHBvcnRFbmQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHBvcnRTdHIgPCBwb3J0RW5kUHRy
KQotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnBvcnRTdHIrKzsKKyAgICAgICAgICAgIGlm
IChwb3J0TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JTY2hl
bWUocG9ydFN0ciwgcG9ydExlbmd0aCwgYnVmZmVyLmRhdGEoKSwgbV9zY2hlbWVFbmQpKQorICAg
ICAgICAgICAgICAgICAgICBtX2lzVXNpbmdEZWZhdWx0UG9ydCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAnOic7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHBvcnRFbmRQdHIgPSB1cmwgKyBwb3J0RW5kOworICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAocG9ydFN0ciA8IHBvcnRFbmRQdHIpCisgICAgICAgICAgICAg
ICAgICAgICAgICAqcCsrID0gKnBvcnRTdHIrKzsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbV9wb3J0RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7
CkBAIC0xNzc3LDIwICsxNzkwLDI4IEBAIGJvb2wgS1VSTDo6aXNCbGFua1VSTCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHByb3RvY29sSXMoImFib3V0Iik7CiB9CiAKLWJvb2wgaXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit1
bnNpZ25lZCBzaG9ydCBkZWZhdWx0UG9ydEZvclByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wpCiB7Ci0gICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQsIENhc2VGb2xkaW5nSGFz
aD4gRGVmYXVsdFBvcnRzTWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVmYXVsdFBvcnRz
TWFwLCBkZWZhdWx0UG9ydHMsICgpKTsKICAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1wdHkoKSkg
eworICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJ3cyIsIDgwKTsKICAgICAgICAgZGVmYXVsdFBv
cnRzLnNldCgiaHR0cCIsIDgwKTsKKyAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgid3NzIiwgNDQz
KTsKICAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiaHR0cHMiLCA0NDMpOwogICAgICAgICBkZWZh
dWx0UG9ydHMuc2V0KCJmdHAiLCAyMSk7CiAgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0cHMi
LCA5OTApOworICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJnb3BoZXIiLCA3MCk7CiAgICAgfQot
ICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OworICAgIHJldHVy
biBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKTsKK30KKworYm9vbCBpc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wodW5zaWduZWQgc2hvcnQgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sK
KyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2NvbCkgPT0gcG9ydDsKIH0KIAog
Ym9vbCBwb3J0QWxsb3dlZChjb25zdCBLVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKaW5k
ZXggZWU2N2UxNmZjOWYwNGMzNDQ2YTE3NmI5ZDRmNmQ5NWY0M2IxYTA2YS4uZWJiNzg2NzUxYjBi
OWJiMGZhOTk1ZDRiZDQ0MDZjM2U1ZDI2ZmM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaApAQCAt
MTU2LDYgKzE1Niw3IEBAIHB1YmxpYzoKICAgICBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSBjb25zdDsKICAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0JsYW5r
VVJMKCkgY29uc3Q7CisgICAgYm9vbCBpc1VzaW5nRGVmYXVsdFBvcnQoKSBjb25zdCB7IHJldHVy
biBtX2lzVXNpbmdEZWZhdWx0UG9ydDsgfQogCiAgICAgYm9vbCBzZXRQcm90b2NvbChjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7CkBAIC0yNTEsNiArMjUy
LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgYm9vbCBtX2lzVmFsaWQg
OiAxOwogICAgIGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKKyAgICBib29sIG1f
aXNVc2luZ0RlZmF1bHRQb3J0IDogMTsKIAogICAgIGludCBtX3NjaGVtZUVuZDsKICAgICBpbnQg
bV91c2VyU3RhcnQ7CkBAIC0yODUsNiArMjg3LDcgQEAgY29uc3QgS1VSTCYgYmxhbmtVUkwoKTsK
IGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wp
OwogYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7CiAKK3Vuc2ln
bmVkIHNob3J0IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7
CiBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1bnNpZ25lZCBzaG9ydCBwb3J0LCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKTsKIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgS1VSTCYpOyAvLyBC
bGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBmb3IgV2ViIHJlc291cmNl
cy4KIAo=
</data>
<flag name="review"
          id="149165"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>