<?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>167022</bug_id>
          
          <creation_ts>2017-01-13 15:27:56 -0800</creation_ts>
          <short_desc>Ignore Connection Assertion if we are not using connection to send messages</short_desc>
          <delta_ts>2017-01-18 12:01:48 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1266605</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-01-13 15:27:56 -0800</bug_when>
    <thetext>Ignore Connection Assertion if we are not using connection to send messages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266607</commentid>
    <comment_count>1</comment_count>
      <attachid>298793</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-01-13 15:31:47 -0800</bug_when>
    <thetext>Created attachment 298793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266635</commentid>
    <comment_count>2</comment_count>
      <attachid>298803</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-01-13 15:59:04 -0800</bug_when>
    <thetext>Created attachment 298803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266792</commentid>
    <comment_count>3</comment_count>
      <attachid>298803</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-01-14 00:30:09 -0800</bug_when>
    <thetext>Comment on attachment 298803
Patch

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

&gt; Source/WebKit2/UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:106
&gt; -        if (webProcessProxy-&gt;connection() != &amp;connection)
&gt; +        if (webProcessProxy-&gt;connection(ChildProcessProxy::IgnoreAssertion::Yes) != &amp;connection)

Stepping back a little, this check for connection being the same looks unusual. What is its purpose?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266824</commentid>
    <comment_count>4</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-01-14 11:04:01 -0800</bug_when>
    <thetext>It is serving as an identifier for the WebProcessProxy. Odd, I know, but it&apos;s the best solution to this particular problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266920</commentid>
    <comment_count>5</comment_count>
      <attachid>298803</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-14 21:56:24 -0800</bug_when>
    <thetext>Comment on attachment 298803
Patch

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

&gt; Source/WebKit2/UIProcess/ChildProcessProxy.h:55
&gt; -    IPC::Connection* connection() const
&gt; +    enum class IgnoreAssertion { No, Yes };
&gt; +    IPC::Connection* connection(IgnoreAssertion ignoreAssertion = IgnoreAssertion::No) const
&gt;      {
&gt; -        ASSERT(m_connection);
&gt; +        if (ignoreAssertion == IgnoreAssertion::No)
&gt; +            ASSERT(m_connection);
&gt;          return m_connection.get();
&gt;      }

I don’t see any good reason to use a single function with an argument for this. It would be more straightforward to have two separate functions for these two separate purposes.

One good approach would be to have a function with a boolean return value that takes a Connection&amp; and answers whether it is this process proxy’s connection; maybe named “hasThisConnection” or some other phrase like that. Longer term, the one named &quot;connection&quot; that gets you the connection should be changed to return a reference, not a pointer, to express that it returns something that is never null. And of course would continue to assert that it is non-null.

&gt; Source/WebKit2/UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:29
&gt;  #import &quot;config.h&quot;
&gt; +#import &quot;ChildProcessProxy.h&quot;
&gt;  #import &quot;WebPasteboardProxy.h&quot;
&gt;  #import &quot;WebProcessProxy.h&quot;

The formatting here is unconventional for WebKit. The only header that should be next to &quot;config.h&quot; without a blank line after it would be the header for this implementation file. If this file does not have its own, then there should be a blank line after &quot;config.h&quot;.

This include should not be added. I don’t see any reason we need to include it. We are calling the connection function, so clearly we are including the header that contains the function definition. So there is no additional need to include a header to get the type that is defined next to the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266944</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-01-14 23:36:30 -0800</bug_when>
    <thetext>A pointer is not a good identifier, because the same memory location can be reused.

What is the higher level problem being solved by this check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267369</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-17 09:23:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; A pointer is not a good identifier, because the same memory location can be
&gt; reused.
&gt; 
&gt; What is the higher level problem being solved by this check?
We need a way to get the WebProcessProxy from WebPasteboardProxy::setPasteboardPathnamesForType so we can use it to check the URL coming from the WebProcess.  I suggested just casting the Connection&apos;s client to a WebProcessProxy, but Anders said that would become unsafe and I agree.  We have a Connection, but WebProcessProxy::didReceiveMessage doesn&apos;t forward *this to ChildProcessProxy::dispatchMessage because MessageReceiver::didReceiveMessage doesn&apos;t always have something forwarding the message to it.  Another solution might be to make a ForwardedMessageReceiver&lt;typename Forwarder&gt; that has a didReceiveMessage that has a reference to the original receiver of the message, but I&apos;m not sure it would be worth it just for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267375</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-01-17 09:41:14 -0800</bug_when>
    <thetext>WebPageProxy just has an m_process member variable for this. That&apos;s somewhat unfortunate, as it duplicates information, but it seems better at first glance than making pointer equality tests.

In any case, we shouldn&apos;t be using two mechanisms for exactly the same purpose in different proxies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267396</commentid>
    <comment_count>9</comment_count>
      <attachid>299040</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-01-17 10:23:35 -0800</bug_when>
    <thetext>Created attachment 299040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267398</commentid>
    <comment_count>10</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-01-17 10:26:03 -0800</bug_when>
    <thetext>Thanks for the suggestion, Darin. I do think this a better way to ask the question. And as we only have a connection, and a list of potential WebProcessProxies, this is the quickest and easiest way of figure out which one we should be talking to. The connections are also meticulously maintained by the WebProcessProxy, so it will be able to tell us if the connection we have is the one it is using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267793</commentid>
    <comment_count>11</comment_count>
      <attachid>299040</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-18 11:20:39 -0800</bug_when>
    <thetext>Comment on attachment 299040
Patch

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

&gt; Source/WebKit2/UIProcess/ChildProcessProxy.h:55
&gt; +    bool hasConnection(IPC::Connection&amp; connection)

I suggest both making this function const and making the argument a const&amp;.

&gt; Source/WebKit2/UIProcess/ChildProcessProxy.h:57
&gt; +        return (m_connection.get() == &amp;connection);

I suggest omitting the parentheses and the get() because RefPtr == raw pointer should compile without a get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267808</commentid>
    <comment_count>12</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-01-18 12:01:48 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/210861</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298793</attachid>
            <date>2017-01-13 15:31:47 -0800</date>
            <delta_ts>2017-01-13 15:58:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167022-20170113153005.patch</filename>
            <type>text/plain</type>
            <size>2687</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDc0NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAxLTEzICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgSWdub3JlIENvbm5l
Y3Rpb24gQXNzZXJ0aW9uIGlmIHdlIGFyZSBub3QgdXNpbmcgY29ubmVjdGlvbiB0byBzZW5kIG1l
c3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjcwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFBy
b2Nlc3NQcm94eTo6Y29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OnNldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKToKKwogMjAxNy0wMS0xMyAgTWF0dCBS
YWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVmZXIgdXNlIG9mIGF1dG9wbGF5
IGhldXJpc3RpY3MgdG8gY2xpZW50cwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0No
aWxkUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NoaWxkUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDIxMDczOSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0
NiwxMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBt
ZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9u
PiBzZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlv
bj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKIAotICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVj
dGlvbigpIGNvbnN0CisgICAgZW51bSBjbGFzcyBJZ25vcmVBc3NlcnRpb24geyBObywgWWVzIH07
CisgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKElnbm9yZUFzc2VydGlvbiBpZ25vcmVB
c3NlcnRpb24gPSBJZ25vcmVBc3NlcnRpb246Ok5vKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fY29ubmVjdGlvbik7CisgICAgICAgIGlmIChpZ25vcmVBc3NlcnRpb24gPT0gSWdub3Jl
QXNzZXJ0aW9uOjpObykKKyAgICAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24pOwogICAgICAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQkocmV2aXNpb24gMjEwNzM5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3
IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDaGlsZFByb2Nlc3NQcm94
eS5oIgogI2ltcG9ydCAiV2ViUGFzdGVib2FyZFByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCIKIApAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpz
ZXRQYXN0ZWJvYXJkVHkKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkUGF0
aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXRobmFtZXMsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCkKIHsKICAgICBm
b3IgKGF1dG8qIHdlYlByb2Nlc3NQcm94eSA6IG1fd2ViUHJvY2Vzc1Byb3h5TGlzdCkgewotICAg
ICAgICBpZiAod2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCkgIT0gJmNvbm5lY3Rpb24pCisg
ICAgICAgIGlmICh3ZWJQcm9jZXNzUHJveHktPmNvbm5lY3Rpb24oQ2hpbGRQcm9jZXNzUHJveHk6
Oklnbm9yZUFzc2VydGlvbjo6WWVzKSAhPSAmY29ubmVjdGlvbikKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRobmFtZSA6IHBhdGhu
YW1lcykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298803</attachid>
            <date>2017-01-13 15:59:04 -0800</date>
            <delta_ts>2017-01-17 10:23:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167022-20170113155722.patch</filename>
            <type>text/plain</type>
            <size>3087</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDc0NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAxLTEzICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgSWdub3JlIENvbm5l
Y3Rpb24gQXNzZXJ0aW9uIGlmIHdlIGFyZSBub3QgdXNpbmcgY29ubmVjdGlvbiB0byBzZW5kIG1l
c3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjcwMjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMDE1MzA0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBvbmx5IHVzaW5nIHRoZSBj
b25uZWN0aW9uIGFzIGFuIGlkZW50aWZpZXIgZm9yIHRoZSBXZWJQcm9jZXNzUHJveHkuCisgICAg
ICAgIFRoZXJlZm9yZSwgaXQgZG9lcyBub3QgbWF0dGVyIGlmIGl0IGlzIG51bGwuIEFuZCB3ZSBz
aG91bGQgYnlwYXNzIGFzc2VydCwgc28gd2UKKyAgICAgICAgZG9uJ3QgY3Jhc2ggd2hlbiB3ZSBk
b24ndCBuZWVkIHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojpjb25uZWN0aW9uKToKKyAgICAg
ICAgQWxsb3cgZm9yIGJ5cGFzc2luZyBvZiB0aGUgYXNzZXJ0IGluIHNwZWNpZmljIGNhc2VzLgor
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRQYXRobmFt
ZXNGb3JUeXBlKToKKyAgICAgICAgU2tpcCBhc3NlcnQsIGFzIHdlIGFyZSBub3QgbG9va2luZyB0
byBzZW5kIGEgbWVzc2FnZSB0byB0aGlzIGNvbm5lY3Rpb24uCisKIDIwMTctMDEtMTMgIE1hdHQg
UmFqY2EgIDxtcmFqY2FAYXBwbGUuY29tPgogCiAgICAgICAgIERlZmVyIHVzZSBvZiBhdXRvcGxh
eSBoZXVyaXN0aWNzIHRvIGNsaWVudHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
aGlsZFByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9DaGlsZFByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyMTA3MzkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSAr
NDYsMTEgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYg
bWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2Vu
ZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRp
b24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24oKSBjb25zdAorICAgIGVudW0gY2xhc3MgSWdub3JlQXNzZXJ0aW9uIHsgTm8sIFllcyB9
OworICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbihJZ25vcmVBc3NlcnRpb24gaWdub3Jl
QXNzZXJ0aW9uID0gSWdub3JlQXNzZXJ0aW9uOjpObykgY29uc3QKICAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2Nvbm5lY3Rpb24pOworICAgICAgICBpZiAoaWdub3JlQXNzZXJ0aW9uID09IElnbm9y
ZUFzc2VydGlvbjo6Tm8pCisgICAgICAgICAgICBBU1NFUlQobV9jb25uZWN0aW9uKTsKICAgICAg
ICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0JKHJldmlzaW9uIDIxMDczOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQs
NyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ2hpbGRQcm9jZXNzUHJv
eHkuaCIKICNpbXBvcnQgIldlYlBhc3RlYm9hcmRQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCiAKQEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
c2V0UGFzdGVib2FyZFR5CiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFBh
dGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpCiB7CiAgICAg
Zm9yIChhdXRvKiB3ZWJQcm9jZXNzUHJveHkgOiBtX3dlYlByb2Nlc3NQcm94eUxpc3QpIHsKLSAg
ICAgICAgaWYgKHdlYlByb2Nlc3NQcm94eS0+Y29ubmVjdGlvbigpICE9ICZjb25uZWN0aW9uKQor
ICAgICAgICBpZiAod2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKENoaWxkUHJvY2Vzc1Byb3h5
OjpJZ25vcmVBc3NlcnRpb246OlllcykgIT0gJmNvbm5lY3Rpb24pCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aG5hbWUgOiBwYXRo
bmFtZXMpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299040</attachid>
            <date>2017-01-17 10:23:35 -0800</date>
            <delta_ts>2017-01-18 11:20:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167022-20170117102147.patch</filename>
            <type>text/plain</type>
            <size>2659</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDgxOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTAxLTE3ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgSWdub3JlIENvbm5l
Y3Rpb24gQXNzZXJ0aW9uIGlmIHdlIGFyZSBub3QgdXNpbmcgY29ubmVjdGlvbiB0byBzZW5kIG1l
c3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjcwMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
c2sgdGhlIHByb2Nlc3MgYWJvdXQgYSBwYXJ0aWN1bGFyIGNvbm5lY3Rpb24gcmF0aGVyIHRoYXQg
Z2V0dGluZyBpdCBhbmQgbWFraW5nIHRoZSAgICAgCisgICAgICAgIGNvbXBhcmlzb24gb3Vyc2Vs
dmVzLiAKKworICAgICAgICAqIFVJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NQcm94eTo6aGFzQ29ubmVjdGlvbik6CisgICAgICAgIENo
ZWNrIHRvIHNlZSB0aGUgdGhlIFByb2Nlc3NQcm94eSBoYXMgdGhpcyBwYXJ0aWN1bGFyIGNvbm5l
Y3Rpb24uIFRoaXMgZ2V0IGFyb3VuZCB0aGUgYXNzZXJ0CisgICAgICAgIHRoYXQgd2Ugd291bGQg
cnVuIGludG8gd2hlbiBqdXN0IHJlcXVlc3RpbmcgdGhlIGNvbm5lY3Rpb24gZGlyZWN0bHkuCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRQYXRobmFtZXNG
b3JUeXBlKToKKyAgICAgICAgVXNlIHRoZSBuZXcgY2hlY2sgaW5zdGVhZCBvZiBnZXR0aW5nIHRo
ZSByYXcgY29ubmVjdGlvbi4KKwogMjAxNy0wMS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUkVRVUVTVF9BTklNQVRJT05fRlJB
TUUgZmxhZwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1By
b3h5LmgJKHJldmlzaW9uIDIxMDczOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9DaGls
ZFByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24pOwogICAgICAgICByZXR1cm4gbV9jb25uZWN0
aW9uLmdldCgpOwogICAgIH0KKyAgICAKKyAgICBib29sIGhhc0Nvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX2Nvbm5lY3Rpb24u
Z2V0KCkgPT0gJmNvbm5lY3Rpb24pOworICAgIH0KIAogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyJik7CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0JKHJldmlzaW9uIDIxMDcz
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVHkKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQ
YXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3Vu
dCkKIHsKICAgICBmb3IgKGF1dG8qIHdlYlByb2Nlc3NQcm94eSA6IG1fd2ViUHJvY2Vzc1Byb3h5
TGlzdCkgewotICAgICAgICBpZiAod2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCkgIT0gJmNv
bm5lY3Rpb24pCisgICAgICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5LT5oYXNDb25uZWN0aW9uKGNv
bm5lY3Rpb24pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhdGhuYW1lIDogcGF0aG5hbWVzKSB7Cg==
</data>
<flag name="review"
          id="321057"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>