<?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>178773</bug_id>
          
          <creation_ts>2017-10-24 23:39:54 -0700</creation_ts>
          <short_desc>[WPE] Fix wpe_view_backend ownership in WKWPE::View</short_desc>
          <delta_ts>2017-11-17 07:42:10 -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>WPE WebKit</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>178894</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1364119</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-24 23:39:54 -0700</bug_when>
    <thetext>[WPE] Fix wpe_view_backend ownership in WKWPE::View</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364121</commentid>
    <comment_count>1</comment_count>
      <attachid>324799</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-24 23:47:53 -0700</bug_when>
    <thetext>Created attachment 324799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364122</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-24 23:49:59 -0700</bug_when>
    <thetext>Attachment 324799 did not pass style-queue:


ERROR: Source/WebKit/ChangeLog:17:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: use-after-free  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364135</commentid>
    <comment_count>3</comment_count>
      <attachid>324799</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-10-25 00:19:14 -0700</bug_when>
    <thetext>Comment on attachment 324799
Patch

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

&gt; Source/WebKit/UIProcess/API/wpe/WPEView.cpp:95
&gt; -    wpe_view_backend_set_backend_client(m_backend, &amp;s_backendClient, this);
&gt; +    wpe_view_backend_set_backend_client(m_backend.object, &amp;s_backendClient, this);

So, if the view doesn&apos;t own the backend, nothing guarantees that the backend is not destroyed until the web view is destroyed, it would be a user error, but it can happen and would cause crashes. I think we could add a callback to the backend client to be notified when the backend is about to be destroyed, so that we can set our backend to nullptr and avoid crashes.

&gt; Source/WebKit/UIProcess/API/wpe/WPEView.h:91
&gt; +        bool owned { false };

Instead of a bool parameter I would use a destroy function, that will be nullptr in case the object is not owned and set to a lambda that clenaups and destroys the backend. This way once we expose this in the glib API we can add GDestroyNotify parameter to the new_with_backend() to make it easier for the user to destroy the backend when the view is destroyed if desired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364139</commentid>
    <comment_count>4</comment_count>
      <attachid>324799</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-25 00:45:24 -0700</bug_when>
    <thetext>Comment on attachment 324799
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/wpe/WPEView.cpp:95
&gt;&gt; +    wpe_view_backend_set_backend_client(m_backend.object, &amp;s_backendClient, this);
&gt; 
&gt; So, if the view doesn&apos;t own the backend, nothing guarantees that the backend is not destroyed until the web view is destroyed, it would be a user error, but it can happen and would cause crashes. I think we could add a callback to the backend client to be notified when the backend is about to be destroyed, so that we can set our backend to nullptr and avoid crashes.

You can do plenty of things that can cause a crash. Destroying the view backend before destroying the web view that&apos;s referencing it is one such thing. The two objects should have a matching lifetime span, but that should be ensured by the user, not us.

&gt;&gt; Source/WebKit/UIProcess/API/wpe/WPEView.h:91
&gt;&gt; +        bool owned { false };
&gt; 
&gt; Instead of a bool parameter I would use a destroy function, that will be nullptr in case the object is not owned and set to a lambda that clenaups and destroys the backend. This way once we expose this in the glib API we can add GDestroyNotify parameter to the new_with_backend() to make it easier for the user to destroy the backend when the view is destroyed if desired.

This seems like a special case for the GLib API, so it&apos;s better to implement this there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364209</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-25 08:37:03 -0700</bug_when>
    <thetext>Maybe I&apos;m missing something obvious, but the easy solution is to add a refcount to wpe_view_backend and always take a ref. Why not do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364375</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-25 12:10:39 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #5)
&gt; Maybe I&apos;m missing something obvious, but the easy solution is to add a
&gt; refcount to wpe_view_backend and always take a ref. Why not do this?

Our public API should not have a rule like &quot;The two objects should have a matching lifetime span, but that should be ensured by the user, not us.&quot; That&apos;s not how GObject APIs work: it&apos;s expected that objects take references where required.

After reading our internal discussion, I see it&apos;s not quite as simple as adding a refcount to wpe_view_backend. We should discuss this further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365136</commentid>
    <comment_count>7</comment_count>
      <attachid>324799</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-26 17:19:14 -0700</bug_when>
    <thetext>Comment on attachment 324799
Patch

I&apos;m not going to use r- here as I don&apos;t want to reject this patch yet, but I do want to understand this problem a bit better before we commit something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369316</commentid>
    <comment_count>8</comment_count>
      <attachid>324799</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-07 19:44:04 -0800</bug_when>
    <thetext>Comment on attachment 324799
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/wpe/WPEView.cpp:95
&gt;&gt;&gt; +    wpe_view_backend_set_backend_client(m_backend.object, &amp;s_backendClient, this);
&gt;&gt; 
&gt;&gt; So, if the view doesn&apos;t own the backend, nothing guarantees that the backend is not destroyed until the web view is destroyed, it would be a user error, but it can happen and would cause crashes. I think we could add a callback to the backend client to be notified when the backend is about to be destroyed, so that we can set our backend to nullptr and avoid crashes.
&gt; 
&gt; You can do plenty of things that can cause a crash. Destroying the view backend before destroying the web view that&apos;s referencing it is one such thing. The two objects should have a matching lifetime span, but that should be ensured by the user, not us.

To implement the new WebKitWebView constructor we need in bug #178655, the wpe_view_backend must become a property of the WebKitWebView. (This is because g_object_new() must be used to construct a WebKitWebView when multiple construction parameters are needed... otherwise it would not be possible to construct, e.g., a related view that requires a custom view backend.) By convention, this means the WebKitWebView must assume ownership of the wpe_view_backend. For programmers familiar with GObject APIs, an unowned property would be a highly-unexpected footgun, and we should avoid that.

The simplest solution is to add a refcount to wpe_view_backend. I might be missing something, but I don&apos;t foresee any problems with this. wpe_view_backend_destroy() would just need to be renamed to wpe_view_backend_unref().

Alternatively, the WebKitWebView property could be a refcounted GBoxed that wraps wpe_view_backend. That would allow the refcounting to be implemented entirely at the GLib API layer, so we would not need any changes to wpe_view_backend. But it would also mean that the wpe_view_backend must not be owned anywhere in the WPE backend. I guess that probably won&apos;t work.

Zan, what do you think?

&gt; Source/WebKit/UIProcess/API/wpe/WPEView.cpp:142
&gt; +    // Null out the view backend clients to avoid use-after-frees.

I don&apos;t think this comment is useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373055</commentid>
    <comment_count>9</comment_count>
      <attachid>324799</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-11-17 07:41:58 -0800</bug_when>
    <thetext>Comment on attachment 324799
Patch

This is obsoleted by Carlos&apos;s patch in bug #178655.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324799</attachid>
            <date>2017-10-24 23:47:53 -0700</date>
            <delta_ts>2017-11-17 07:41:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178773-20171025084751.patch</filename>
            <type>text/plain</type>
            <size>6964</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzOTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIyYjljZTZlZmEwYmYzMGI1
M2U1ODZlMjMyMTk2Yzg3ZjcwZTNmMGUuLjkxMDhjNTE2NjYxMGJmZDIzZDAxNWZmYmExOGI1ODg3
NTU3MjNkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMTAtMjQgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEZpeCB3cGVfdmll
d19iYWNrZW5kIG93bmVyc2hpcCBpbiBXS1dQRTo6VmlldworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIFdLV1BFOjpWaWV3IGNvbnN0cnVjdG9y
LCB0aGUgcGFzc2VkLWluIHdwZV92aWV3X2JhY2tlbmQgb2JqZWN0CisgICAgICAgIG11c3Qgbm90
IGJlIHRha2VuIG92ZXIgaW4gdGVybXMgb2Ygb3duZXJzaGlwLiBUaGUgZXhjZXB0aW9uIHRvIHRo
aXMgaXMKKyAgICAgICAgd2hlbiB0aGUgcGFzc2VkLWluIHdwZV92aWV3X2JhY2tlbmQgcG9pbnRl
ciBpcyBudWxsLCBpbiB3aGljaCBjYXNlCisgICAgICAgIFdLV1BFOjpWaWV3IGlzIGZvcmNlZCB0
byBjcmVhdGUgYSBuZXcgd3BlX3ZpZXdfYmFja2VuZCBvYmplY3QgYW5kIGFsc28KKyAgICAgICAg
dGFrZSBvd25lcnNoaXAgb2YgaXQuCisKKyAgICAgICAgSW4gdGhlIFdLV1BFOjpWaWV3IGRlc3Ry
dWN0b3IsIHRoZSB3cGVfdmlld19iYWNrZW5kIG9iamVjdCBpcyB0aGVuCisgICAgICAgIHRyZWF0
ZWQgYWNjb3JkaW5nbHkuIEFkZGl0aW9uYWxseSwgdGhlIGJhY2tlbmQgYW5kIGlucHV0IGNsaWVu
dHMgb24gdGhlCisgICAgICAgIHdwZV92aWV3X2JhY2tlbmQgYXJlIG51bGxlZCBvdXQuIFRoaXMg
d2lsbCBhdm9pZCBhY2NpZGVudGFsCisgICAgICAgIHVzZS1hZnRlci1mcmVlIGNhc2VzIHdoZXJl
IHRoZSB3cGVfdmlld19iYWNrZW5kIG9iamVjdCBpcyBub3Qgb3duZWQgYW5kCisgICAgICAgIHdp
bGwgcmVtYWluIGFsaXZlIGFmdGVyIFdLV1BFOjpWaWV3IGlzIGRlbGV0ZWQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAgICAgICAgKFdLV1BFOjptX2NvbXBv
c2l0aW5nTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdLV1BFOjpWaWV3Ojp+Vmlldyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oOgorICAgICAgICAoV0tXUEU6OlZpZXc6
OmJhY2tlbmQpOgorCiAyMDE3LTEwLTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggc2hvdWxkIHJldHVybiBhbiBl
cnJvciB0aGF0IGlzIG5vdCBudWxsIGluIGNhc2Ugb2YgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggNDgwNzE4MzgzMDhkYzMzNjI2OWUy
MzNkY2JhZGZhNDQ2N2Y3MWM2ZS4uOTExZmEzZDhmZDcxYzQ2MTA0MjhmNjk2MDc5YjU5YWUzYWY4
ZmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBA
IC03MSw5ICs3MSwxMSBAQCBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNr
ZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQwogICAgICAgICBwb29sLT5z
dGFydE1lbW9yeVNhbXBsZXIoMCk7CiAjZW5kaWYKIAotICAgIG1fYmFja2VuZCA9IGJhY2tlbmQ7
Ci0gICAgaWYgKCFtX2JhY2tlbmQpCi0gICAgICAgIG1fYmFja2VuZCA9IHdwZV92aWV3X2JhY2tl
bmRfY3JlYXRlKCk7CisgICAgbV9iYWNrZW5kLm9iamVjdCA9IGJhY2tlbmQ7CisgICAgaWYgKCFt
X2JhY2tlbmQub2JqZWN0KSB7CisgICAgICAgIG1fYmFja2VuZC5vYmplY3QgPSB3cGVfdmlld19i
YWNrZW5kX2NyZWF0ZSgpOworICAgICAgICBtX2JhY2tlbmQub3duZWQgPSB0cnVlOworICAgIH0K
ICAgICBtX2NvbXBvc2l0aW5nTWFuYWdlclByb3h5LmluaXRpYWxpemUoKTsKIAogICAgIHN0YXRp
YyBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZF9jbGllbnQgc19iYWNrZW5kQ2xpZW50ID0gewpAQCAt
OTAsNyArOTIsNyBAQCBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5k
LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQwogICAgICAgICAgICAgdmlldy5m
cmFtZURpc3BsYXllZCgpOwogICAgICAgICB9CiAgICAgfTsKLSAgICB3cGVfdmlld19iYWNrZW5k
X3NldF9iYWNrZW5kX2NsaWVudChtX2JhY2tlbmQsICZzX2JhY2tlbmRDbGllbnQsIHRoaXMpOwor
ICAgIHdwZV92aWV3X2JhY2tlbmRfc2V0X2JhY2tlbmRfY2xpZW50KG1fYmFja2VuZC5vYmplY3Qs
ICZzX2JhY2tlbmRDbGllbnQsIHRoaXMpOwogCiAgICAgc3RhdGljIHN0cnVjdCB3cGVfdmlld19i
YWNrZW5kX2lucHV0X2NsaWVudCBzX2lucHV0Q2xpZW50ID0gewogICAgICAgICAvLyBoYW5kbGVf
a2V5Ym9hcmRfZXZlbnQKQEAgLTEyNiw5ICsxMjgsOSBAQCBWaWV3OjpWaWV3KHN0cnVjdCB3cGVf
dmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNl
QwogICAgICAgICAgICAgcGFnZS5oYW5kbGVUb3VjaEV2ZW50KFdlYktpdDo6TmF0aXZlV2ViVG91
Y2hFdmVudChldmVudCwgcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAgICAgICAgIH0sCiAg
ICAgfTsKLSAgICB3cGVfdmlld19iYWNrZW5kX3NldF9pbnB1dF9jbGllbnQobV9iYWNrZW5kLCAm
c19pbnB1dENsaWVudCwgdGhpcyk7CisgICAgd3BlX3ZpZXdfYmFja2VuZF9zZXRfaW5wdXRfY2xp
ZW50KG1fYmFja2VuZC5vYmplY3QsICZzX2lucHV0Q2xpZW50LCB0aGlzKTsKIAotICAgIHdwZV92
aWV3X2JhY2tlbmRfaW5pdGlhbGl6ZShtX2JhY2tlbmQpOworICAgIHdwZV92aWV3X2JhY2tlbmRf
aW5pdGlhbGl6ZShtX2JhY2tlbmQub2JqZWN0KTsKIAogICAgIG1fcGFnZVByb3h5LT5pbml0aWFs
aXplV2ViUGFnZSgpOwogfQpAQCAtMTM2LDcgKzEzOCwxMyBAQCBWaWV3OjpWaWV3KHN0cnVjdCB3
cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBi
YXNlQwogVmlldzo6flZpZXcoKQogewogICAgIG1fY29tcG9zaXRpbmdNYW5hZ2VyUHJveHkuZmlu
YWxpemUoKTsKLSAgICB3cGVfdmlld19iYWNrZW5kX2Rlc3Ryb3kobV9iYWNrZW5kKTsKKworICAg
IC8vIE51bGwgb3V0IHRoZSB2aWV3IGJhY2tlbmQgY2xpZW50cyB0byBhdm9pZCB1c2UtYWZ0ZXIt
ZnJlZXMuCisgICAgd3BlX3ZpZXdfYmFja2VuZF9zZXRfYmFja2VuZF9jbGllbnQobV9iYWNrZW5k
Lm9iamVjdCwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgd3BlX3ZpZXdfYmFja2VuZF9zZXRfaW5w
dXRfY2xpZW50KG1fYmFja2VuZC5vYmplY3QsIG51bGxwdHIsIG51bGxwdHIpOworCisgICAgaWYg
KG1fYmFja2VuZC5vd25lZCkKKyAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9kZXN0cm95KG1fYmFj
a2VuZC5vYmplY3QpOwogfQogCiB2b2lkIFZpZXc6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpWaWV3Q2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XUEVWaWV3LmgKaW5kZXggZmY4MmZiZTdlZTMzOGVjYjBkMTNjMmFiY2M1OGZhMGY0NDJiZGI5
Yy4uMDE4OTM4YTRkMWYyOGE4ZWY5Zjk5ODZkZGJkYzYxZDEwYjZhMTg5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UoKSB7IHJldHVybiAqbV9wYWdlUHJv
eHk7IH0KIAotICAgIHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kKCkgeyByZXR1cm4g
bV9iYWNrZW5kOyB9CisgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJhY2tlbmQoKSB7IHJl
dHVybiBtX2JhY2tlbmQub2JqZWN0OyB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKQEAgLTg2LDcgKzg2LDEwIEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGVGbGFnczsK
IAogICAgIFdlYktpdDo6Q29tcG9zaXRpbmdNYW5hZ2VyUHJveHkgbV9jb21wb3NpdGluZ01hbmFn
ZXJQcm94eTsKLSAgICBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogbV9iYWNrZW5kOworICAgIHN0
cnVjdCB7CisgICAgICAgIHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBvYmplY3Q7CisgICAgICAg
IGJvb2wgb3duZWQgeyBmYWxzZSB9OworICAgIH0gbV9iYWNrZW5kOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV0tXUEUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA4N2I3MDE0MmEyMTFmMjljMDQ1MDY0ZTJmYmFjOGY2Yzc2NGJhNTQ1Li4xMzJhMWMw
YTFiMzc5MjkxNjNmNDY2NzNhYWRjMTYyYjhiZTdhOTc2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTAtMjQg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXUEVdIEZp
eCB3cGVfdmlld19iYWNrZW5kIG93bmVyc2hpcCBpbiBXS1dQRTo6VmlldworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzczCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dw
ZS9IZWFkbGVzc1ZpZXdCYWNrZW5kLmNwcDoKKyAgICAgICAgKEhlYWRsZXNzVmlld0JhY2tlbmQ6
On5IZWFkbGVzc1ZpZXdCYWNrZW5kKToKKyAgICAgICAgRGVsZXRlIHRoZSBleHBvcnRhYmxlIG9i
amVjdC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dwZS9QbGF0Zm9ybVdlYlZpZXdXUEUu
Y3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcpOgor
ICAgICAgICBBbHNvIGRlbGV0ZSB0aGUgbV92aWV3IG9iamVjdCwgYnV0IGRvIHNvIGJlZm9yZSBk
ZWxldGluZyB0aGUKKyAgICAgICAgSGVhZGxlc3NWaWV3QmFja2VuZCBvYmplY3QgdGhhdCBzdGls
bCBvd25zIHRoZSB3cGVfdmlld19iYWNrZW5kIG9iamVjdAorICAgICAgICB0aGF0J3MgdXNlZCBp
biB0aGlzIFdLVmlldy4KKwogMjAxNy0xMC0yNCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56
YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IG5hbWUgb2YgUGVybCBM
aWJYTUwgcGFja2FnZSBvbiBGZWRvcmEKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvd3BlL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93
cGUvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKaW5kZXggMDY4Y2EzMDg4NWYwMDhmY2ZkOTZkZDg3
OWI4YTVkMWY5MmY5Y2JkMy4uYTUwZTA2ZTZhOTIzOTExMmNhZmY2NGM1YWQxNzI4N2EzZjRjMDNh
OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvSGVhZGxlc3NWaWV3QmFj
a2VuZC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvSGVhZGxlc3NWaWV3QmFj
a2VuZC5jcHAKQEAgLTExOCw2ICsxMTgsOSBAQCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjp+SGVhZGxl
c3NWaWV3QmFja2VuZCgpCiAgICAgaWYgKG1fdXBkYXRlU291cmNlKQogICAgICAgICBnX3NvdXJj
ZV9kZXN0cm95KG1fdXBkYXRlU291cmNlKTsKIAorICAgIGlmIChtX2V4cG9ydGFibGUpCisgICAg
ICAgIHdwZV9tZXNhX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2RtYV9idWZfZGVzdHJveShtX2V4
cG9ydGFibGUpOworCiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBzdGQ6OmdldDwwPihtX3BlbmRpbmdJ
bWFnZS5zZWNvbmQpKQogICAgICAgICBtX2VnbC5kZXN0cm95SW1hZ2UobV9lZ2wuZGlzcGxheSwg
aW1hZ2UpOwogICAgIGlmIChhdXRvIGltYWdlID0gc3RkOjpnZXQ8MD4obV9sb2NrZWRJbWFnZS5z
ZWNvbmQpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvUGxhdGZvcm1X
ZWJWaWV3V1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL1BsYXRmb3JtV2ViVmll
d1dQRS5jcHAKaW5kZXggYzJkYmI4ODgzMWNjMjI2OWE0ZGZjMWEyMDRlY2U2OGI1ZjZhMjA0OS4u
YTJhM2RiNzgyNDk2OThlMTQyYzA1OTA3OGY2MjA0MzczYjRjZGNhMSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvUGxhdGZvcm1XZWJWaWV3V1BFLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL3dwZS9QbGF0Zm9ybVdlYlZpZXdXUEUuY3BwCkBAIC00NSw2ICs0
NSw3IEBAIFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzCiAKIFBsYXRmb3JtV2ViVmlldzo6flBsYXRm
b3JtV2ViVmlldygpCiB7CisgICAgV0tSZWxlYXNlKG1fdmlldyk7CiAgICAgZGVsZXRlIG1fd2lu
ZG93OwogfQogCg==
</data>
<flag name="review"
          id="344392"
          type_id="1"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>