<?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>180054</bug_id>
          
          <creation_ts>2017-11-27 13:54:18 -0800</creation_ts>
          <short_desc>Dangerous downcast via static_cast for find delegate.</short_desc>
          <delta_ts>2017-11-27 21:04:55 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>achristensen</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1375106</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-11-27 13:54:18 -0800</bug_when>
    <thetext>WKWebView:
- (void)_setFindDelegate:(id&lt;_WKFindDelegate&gt;)findDelegate
{
    static_cast&lt;WebKit::FindClient&amp;&gt;(_page-&gt;findClient()).setDelegate(findDelegate);
}



void WebPageProxy::close()
...
    m_findClient = std::make_unique&lt;API::FindClient&gt;();


Calling _setFindDelegate: after the PageProxy has been closed is unsafe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375121</commentid>
    <comment_count>1</comment_count>
      <attachid>327678</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-11-27 14:16:18 -0800</bug_when>
    <thetext>Created attachment 327678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375123</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2017-11-27 14:18:51 -0800</bug_when>
    <thetext>Related: https://bugs.webkit.org/show_bug.cgi?id=179849</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375250</commentid>
    <comment_count>3</comment_count>
      <attachid>327678</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-27 21:04:55 -0800</bug_when>
    <thetext>Comment on attachment 327678
Patch

This is messy and kind of a layering violation.  I think it would be better to set m_findClient to nullptr in WebPageProxy::close and check it for null everywhere we use it.
There should also be an API test that exercises the bad behavior before the change.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327678</attachid>
            <date>2017-11-27 14:16:18 -0800</date>
            <delta_ts>2017-11-27 21:04:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180054-20171127141617.patch</filename>
            <type>text/plain</type>
            <size>3821</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRmZTVjZWNmMTY5ZDNhZjJl
YjI0ZGMzZTI2NDQ4Y2YwMTNiZGMxNGQuLmM0ZmMwM2Y4ZDExNDMzZDI1MGY3ZjQ2OGQyMTdlNjJh
OTZiMzUzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMTEtMjcgIEplcmVteSBK
b25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIERhbmdlcm91cyBkb3duY2FzdCB2
aWEgc3RhdGljX2Nhc3QgZm9yIGZpbmQgZGVsZWdhdGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiAtW1dLV2ViVmlldyBfc2V0RmluZERlbGVnYXRl
Ol0gaXMgY2FsbGVkIGFmdGVyIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKSwgX3NldEZpbmREZWxlZ2F0
ZTogd2lsbCBkbyBhIGJhZCBzdGF0aWNfY2FzdC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRz
IGR5bmFtaWNfY2FzdDw+IHN1cHBvcnQgdG8gRmluZENsaWVudCBhbmQgdGVzdHMgdGhlIHR5cGUg
YmVmb3JlIGRvaW5nIHRoZSBkb3duY2FzdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
RmluZENsaWVudC5oOgorICAgICAgICAoQVBJOjpGaW5kQ2xpZW50Ojppc1R5cGUgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2ZpbmREZWxlZ2F0ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEZpbmRE
ZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5oOgorICAg
ICAgICAoaXNUeXBlKToKKwogMjAxNy0xMS0xNiAgWW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtp
bW90b0Bzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEFkZCBuZXR3b3JrIChjdXJsKSBm
aWxlcyBmb3Igd2luY2Fpcm8gd2Via2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRmluZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUZpbmRDbGllbnQuaAppbmRleCBmMzEyM2FmMTk1MTY1YTY2OWQ2NjY4MzE4YjgxMmU5MzM2NWU2
ZGMyLi42ZDBmOTM0MjY4ZWZjMjYxNGYwMDEwMjcxMDFkZmE5ZmZjMTdkNTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKQEAgLTQwLDYgKzQwLDEzIEBA
IG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5kQ2xpZW50IHsKIHB1YmxpYzoKKyAgICBlbnVt
IFR5cGUgeworICAgICAgICBBUElUeXBlLAorICAgICAgICBXZWJLaXRUeXBlCisgICAgfTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc1R5cGUoVHlwZSB0YXJnZXQpIGNvbnN0IHsgcmV0dXJuIHRhcmdl
dCA9PSBBUElUeXBlOyB9OworCiAgICAgdmlydHVhbCB+RmluZENsaWVudCgpIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IGNvbnN0IFdURjo6U3RyaW5nJiwgdWludDMyX3QpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNzJjN2M1NGZiNWZkZDlkMzQxYzVj
ZjA5NWVmZmY2ZjU0YjE4YTNmNi4uY2QyYjllOGQwYWUxM2U1N2ZlMmMyMTlmYTdkOWQ4NTNjYTc0
ZTI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC00NDcxLDEyICs0NDcxLDE1IEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5n
RGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU+KWRpYWdub3N0CiAKIC0g
KGlkIDxfV0tGaW5kRGVsZWdhdGU+KV9maW5kRGVsZWdhdGUKIHsKLSAgICByZXR1cm4gW3N0YXRp
Y19jYXN0PFdlYktpdDo6RmluZENsaWVudCY+KF9wYWdlLT5maW5kQ2xpZW50KCkpLmRlbGVnYXRl
KCkubGVha1JlZigpIGF1dG9yZWxlYXNlXTsKKyAgICBpZiAoaXM8V2ViS2l0OjpGaW5kQ2xpZW50
PihfcGFnZS0+ZmluZENsaWVudCgpKSkKKyAgICAgICAgcmV0dXJuIFtkb3duY2FzdDxXZWJLaXQ6
OkZpbmRDbGllbnQ+KF9wYWdlLT5maW5kQ2xpZW50KCkpLmRlbGVnYXRlKCkubGVha1JlZigpIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtICh2b2lkKV9zZXRGaW5kRGVsZWdh
dGU6KGlkPF9XS0ZpbmREZWxlZ2F0ZT4pZmluZERlbGVnYXRlCiB7Ci0gICAgc3RhdGljX2Nhc3Q8
V2ViS2l0OjpGaW5kQ2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuc2V0RGVsZWdhdGUoZmlu
ZERlbGVnYXRlKTsKKyAgICBpZiAoaXM8V2ViS2l0OjpGaW5kQ2xpZW50PihfcGFnZS0+ZmluZENs
aWVudCgpKSkKKyAgICAgICAgZG93bmNhc3Q8V2ViS2l0OjpGaW5kQ2xpZW50PihfcGFnZS0+Zmlu
ZENsaWVudCgpKS5zZXREZWxlZ2F0ZShmaW5kRGVsZWdhdGUpOwogfQogCiBzdGF0aWMgaW5saW5l
IFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRP
cHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRmluZENs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRmluZENsaWVudC5oCmluZGV4
IDZkNDY5MzYyMzZhMDNhNjA5Y2M1ZTlmY2NmNjY5NjcwYjc2NWE5YzIuLmQ3ZWUzMGFhZWIwMGNl
ZDg5Nzk4MmIxZTY5MjgwNzRkYTI1ZjE0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0ZpbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9GaW5kQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBGaW5kQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RmluZENsaWVudCB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgRmluZENsaWVudChXS1dlYlZpZXcgKik7Ci0gICAgCisKKyAgICBib29s
IGlzVHlwZShBUEk6OkZ1bGxzY3JlZW5DbGllbnQ6OlR5cGUgdGFyZ2V0KSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0YXJnZXQgPT0gQVBJOjpGaW5kQ2xpZW50OjpXZWJLaXRUeXBlOyB9OworCiAg
ICAgUmV0YWluUHRyPGlkIDxfV0tGaW5kRGVsZWdhdGU+PiBkZWxlZ2F0ZSgpOwogICAgIHZvaWQg
c2V0RGVsZWdhdGUoaWQgPF9XS0ZpbmREZWxlZ2F0ZT4pOwogICAgIApAQCAtNjMsNiArNjUsMTAg
QEAgcHJpdmF0ZToKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6RmluZENsaWVudCkgXAorc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IEFQSTo6RmluZENsaWVudCYgY2xpZW50KSB7IHJldHVybiBjbGllbnQuaXNUeXBlKEFQ
STo6RmluZENsaWVudDo6V2ViS2l0VHlwZSk7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKIAogI2VuZGlmIC8vIEZpbmRDbGllbnRf
aAo=
</data>
<flag name="review"
          id="346862"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>