<?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>199621</bug_id>
          
          <creation_ts>2019-07-09 08:48:57 -0700</creation_ts>
          <short_desc>[WPE][GTK] UI process crash due to NULL dereference in webkitWebViewResourceLoadStarted()</short_desc>
          <delta_ts>2019-07-17 01:25:37 -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>WebKitGTK</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.redhat.com/show_bug.cgi?id=1728026</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=199830</see_also>
          <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="Milan Crha">mcrha</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adamw</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1551242</commentid>
    <comment_count>0</comment_count>
    <who name="Milan Crha">mcrha</who>
    <bug_when>2019-07-09 08:48:57 -0700</bug_when>
    <thetext>Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=1728026

Evolution is crashing regularly in Rawhide. The crash is in webkit - WebKit::WebFrameProxy::isMainFrame() , and started happening after the webkit2gtk3-2.25.2.

Notes from Michael in the downstream bug:

 * The main change in 2.25.2 is PSON (process swap on navigation), which is surely related
 * We don&apos;t know from the backtrace why the WebFrameProxy is invalid, because the invalid message is coming from the web process (from PageResourceLoadClient::didInitiateLoadForResource)
 * There are at least two bugs here: first that the web process is sending an invalid frame, second that this crashes the UI process. The UI process must be robust to a malicious web process sending invalid messages.

---------------------------------------------------------------

The backtrace:

Thread 1 (Thread 0x7f162ace4c80 (LWP 12812)):
#0  0x00007f16322c0ad4 in WTF::WeakPtr&lt;WebKit::WebPageProxy&gt;::operator bool() const (this=0x10) at DerivedSources/ForwardingHeaders/wtf/WeakPtr.h:90
#1  0x00007f16322c0ad4 in WebKit::WebFrameProxy::isMainFrame() const (this=this@entry=0x0) at ../Source/WebKit/UIProcess/WebFrameProxy.cpp:75
#2  0x00007f16323c8eaa in webkitWebViewResourceLoadStarted(_WebKitWebView*, WebKit::WebFrameProxy*, unsigned long, _WebKitURIRequest*) (webView=webView@entry=0x561624a015a0 [EMailDisplay], frame=frame@entry=0x0, resourceIdentifier=&lt;optimized out&gt;, request=request@entry=0x7f155000b830 [WebKitURIRequest]) at ../Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2380
        priv = 0x561624a01180
        isMainResource = &lt;optimized out&gt;
        resource = &lt;optimized out&gt;
#3  0x00007f163239fddc in WebKitInjectedBundleClient::didReceiveWebViewMessageFromInjectedBundle(_WebKitWebView*, char const*, API::Dictionary&amp;) (webView=0x561624a015a0 [EMailDisplay], messageName=&lt;optimized out&gt;, message=...) at ../Source/WebKit/UIProcess/API/glib/WebKitInjectedBundleClient.cpp:52
        frame = 0x0
        resourceIdentifier = 0x7f161424cee8
        webRequest = &lt;optimized out&gt;
        request = {m_ptr = 0x7f155000b830 [WebKitURIRequest]}
#4  0x00007f16323a1618 in WebKitInjectedBundleClient::didReceiveMessageFromInjectedBundle(WebKit::WebProcessPool&amp;, WTF::String const&amp;, API::Object*) (this=0x5616255c1560, messageName=..., messageBody=0x7f16142ce550) at DerivedSources/ForwardingHeaders/wtf/text/CString.h:66
        page = &lt;optimized out&gt;
        webView = &lt;optimized out&gt;
        message = @0x7f16142ce550: {&lt;API::ObjectImpl&lt;(API::Object::Type)9&gt;&gt; = {&lt;API::Object&gt; = {&lt;WTF::ThreadSafeRefCounted&lt;API::Object, (WTF::DestructionThread)0&gt;&gt; = {&lt;WTF::ThreadSafeRefCountedBase&gt; = {m_refCount = {&lt;std::__atomic_base&lt;unsigned int&gt;&gt; = {static _S_alignment = 4, _M_i = 1}, static is_always_lock_free = true}}, &lt;No data fields&gt;}, _vptr.Object = 0x7f1634874d30 &lt;vtable for API::Dictionary+16&gt;}, static APIType = API::Object::Type::Dictionary}, m_map = {m_impl = {static m_maxLoad = 2, static m_minLoad = 6, m_table = 0x7f16142b7e00, m_tableSize = 16, m_tableSizeMask = 15, m_keyCount = 4, m_deletedCount = 0}}}
        messageNameUTF8 = {m_buffer = {static isRefPtr = &lt;error reading variable: Missing ELF symbol &quot;WTF::RefPtr&lt;WTF::CStringBuffer, WTF::DumbPtrTraits&lt;WTF::CStringBuffer&gt; &gt;::isRefPtr&quot;.&gt;, m_ptr = 0x7f16142f38f8}}
#5  0x00007f163231e3de in WebKit::WebProcessPool::handleMessage(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;) (this=0x7f16140fec00, connection=..., messageName=..., messageBody=...) at /usr/include/c++/9/bits/atomic_base.h:326
        webProcessProxy = &lt;optimized out&gt;
#6  0x00007f16320dcb85 in IPC::callMemberFunctionImpl&lt;WebKit::WebProcessPool, void (WebKit::WebProcessPool::*)(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;), std::tuple&lt;WTF::String, WebKit::UserData&gt;, 0ul, 1ul&gt;(WebKit::WebProcessPool*, void (WebKit::WebProcessPool::*)(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;), IPC::Connection&amp;, std::tuple&lt;WTF::String, WebKit::UserData&gt;&amp;&amp;, std::integer_sequence&lt;unsigned long, 0ul, 1ul&gt;) (args=..., connection=..., function=(void (WebKit::WebProcessPool::*)(WebKit::WebProcessPool * const, IPC::Connection &amp;, const WTF::String &amp;, const WebKit::UserData &amp;)) 0x7f163231e320 &lt;WebKit::WebProcessPool::handleMessage(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;)&gt;, object=0x7f16140fec00) at /usr/include/c++/9/tuple:1332
        arguments = {&lt;WTF::Optional_base&lt;std::tuple&lt;WTF::String, WebKit::UserData&gt; &gt;&gt; = {init_ = true, storage_ = {dummy_ = 40 &apos;(&apos;, value_ = std::tuple containing = {[1] = {static MaxLength = 2147483647, m_impl = {static isRefPtr = &lt;error reading variable: Missing ELF symbol &quot;WTF::RefPtr&lt;WTF::StringImpl, WTF::DumbPtrTraits&lt;WTF::StringImpl&gt; &gt;::isRefPtr&quot;.&gt;, m_ptr = 0x7f16142f38c0}}, [2] = {m_object = {static isRefPtr = &lt;error reading variable: Missing ELF symbol &quot;WTF::RefPtr&lt;API::Object, WTF::DumbPtrTraits&lt;API::Object&gt; &gt;::isRefPtr&quot;.&gt;, m_ptr = 0x7f16142ce528}}}}}, &lt;No data fields&gt;}
#7  0x00007f16320dcb85 in IPC::callMemberFunction&lt;WebKit::WebProcessPool, void (WebKit::WebProcessPool::*)(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;), std::tuple&lt;WTF::String, WebKit::UserData&gt;, std::integer_sequence&lt;unsigned long, 0ul, 1ul&gt; &gt;(IPC::Connection&amp;, std::tuple&lt;WTF::String, WebKit::UserData&gt;&amp;&amp;, WebKit::WebProcessPool*, void (WebKit::WebProcessPool::*)(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;)) (function=(void (WebKit::WebProcessPool::*)(WebKit::WebProcessPool * const, IPC::Connection &amp;, const WTF::String &amp;, const WebKit::UserData &amp;)) 0x7f163231e320 &lt;WebKit::WebProcessPool::handleMessage(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;)&gt;, object=0x7f16140fec00, args=..., connection=...) at ../Source/WebKit/Platform/IPC/HandleMessage.h:89
        arguments = {&lt;WTF::Optional_base&lt;std::tuple&lt;WTF::String, WebKit::UserData&gt; &gt;&gt; = {init_ = true, storage_ = {dummy_ = 40 &apos;(&apos;, value_ = std::tuple containing = {[1] = {static MaxLength = 2147483647, m_impl = {static isRefPtr = &lt;error reading variable: Missing ELF symbol &quot;WTF::RefPtr&lt;WTF::StringImpl, WTF::DumbPtrTraits&lt;WTF::StringImpl&gt; &gt;::isRefPtr&quot;.&gt;, m_ptr = 0x7f16142f38c0}}, [2] = {m_object = {static isRefPtr = &lt;error reading variable: Missing ELF symbol &quot;WTF::RefPtr&lt;API::Object, WTF::DumbPtrTraits&lt;API::Object&gt; &gt;::isRefPtr&quot;.&gt;, m_ptr = 0x7f16142ce528}}}}}, &lt;No data fields&gt;}
#8  0x00007f16320dcb85 in IPC::handleMessage&lt;Messages::WebProcessPool::HandleMessage, WebKit::WebProcessPool, void (WebKit::WebProcessPool::*)(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;)&gt;(IPC::Connection&amp;, IPC::Decoder&amp;, WebKit::WebProcessPool*, void (WebKit::WebProcessPool::*)(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;)) (connection=..., decoder=..., object=object@entry=0x7f16140fec00, function=(void (WebKit::WebProcessPool::*)(WebKit::WebProcessPool * const, IPC::Connection &amp;, const WTF::String &amp;, const WebKit::UserData &amp;)) 0x7f163231e320 &lt;WebKit::WebProcessPool::handleMessage(IPC::Connection&amp;, WTF::String const&amp;, WebKit::UserData const&amp;)&gt;) at ../Source/WebKit/Platform/IPC/HandleMessage.h:132
        arguments = {&lt;WTF::Optional_base&lt;std::tuple&lt;WTF::String, WebKit::UserData&gt; &gt;&gt; = {init_ = true, storage_ = {dummy_ = 40 &apos;(&apos;, value_ = std::tuple containing = {[1] = {static MaxLength = 2147483647, m_impl = {static isRefPtr = &lt;error reading variable: Missing ELF symbol &quot;WTF::RefPtr&lt;WTF::StringImpl, WTF::DumbPtrTraits&lt;WTF::StringImpl&gt; &gt;::isRefPtr&quot;.&gt;, m_ptr = 0x7f16142f38c0}}, [2] = {m_object = {static isRefPtr = &lt;error reading variable: Missing ELF symbol &quot;WTF::RefPtr&lt;API::Object, WTF::DumbPtrTraits&lt;API::Object&gt; &gt;::isRefPtr&quot;.&gt;, m_ptr = 0x7f16142ce528}}}}}, &lt;No data fields&gt;}
#9  0x00007f16320db0e5 in WebKit::WebProcessPool::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=0x7f16140fec00, connection=..., decoder=...) at DerivedSources/WebKit/WebProcessPoolMessageReceiver.cpp:72
#10 0x00007f1632224183 in IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=&lt;optimized out&gt;, connection=..., decoder=...) at ../Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:123
        messageReceiver = &lt;optimized out&gt;
#11 0x00007f163231bc0d in WebKit::WebProcessPool::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=&lt;optimized out&gt;, connection=..., decoder=...) at ../Source/WebKit/UIProcess/WebProcessPool.cpp:1676
#12 0x00007f163231bc46 in WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=0x7f16142a3b40, connection=..., decoder=...) at DerivedSources/ForwardingHeaders/wtf/WeakPtr.h:89
#13 0x00007f163221d154 in IPC::Connection::dispatchMessage(IPC::Decoder&amp;) (this=0x7f16142ca680, decoder=...) at ../Source/WebKit/Platform/IPC/Connection.cpp:983
#14 0x00007f163221e751 in IPC::Connection::dispatchMessage(std::unique_ptr&lt;IPC::Decoder, std::default_delete&lt;IPC::Decoder&gt; &gt;) (this=0x7f16142ca680, message=std::unique_ptr&lt;IPC::Decoder&gt; = {...}) at /usr/include/c++/9/bits/unique_ptr.h:357
        oldDidReceiveInvalidMessage = false
#15 0x00007f163221fa23 in IPC::Connection::dispatchIncomingMessages() (this=0x7f16142ca680) at /usr/include/c++/9/bits/move.h:74
        i = 9
        message = std::unique_ptr&lt;IPC::Decoder&gt; = {get() = 0x0}
        messagesToProcess = 18
#16 0x00007f162f86c72c in WTF::Function&lt;void ()&gt;::operator()() const (this=&lt;synthetic pointer&gt;) at ../Source/WTF/wtf/Function.h:76
        function = {m_callableWrapper = std::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void&gt;&gt; = {get() = 0x7f1614243020}}
        functionsHandled = 1
        functionsToHandle = 7
#17 0x00007f162f86c72c in WTF::RunLoop::performWork() (this=0x7f16142fa000) at ../Source/WTF/wtf/RunLoop.cpp:123
        function = {m_callableWrapper = std::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void&gt;&gt; = {get() = 0x7f1614243020}}
        functionsHandled = 1
        functionsToHandle = 7
#18 0x00007f162f8b6d5d in WTF::RunLoop::&lt;lambda(gpointer)&gt;::operator() (__closure=0x0, userData=&lt;optimized out&gt;) at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:68
#19 0x00007f162f8b6d5d in WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer) () at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:70
#20 0x00007f1634ac8fed in g_main_dispatch (context=0x5616239b7000) at ../glib/gmain.c:3193
        dispatch = &lt;optimized out&gt;
        prev_source = 0x0
        was_in_call = &lt;optimized out&gt;
        user_data = 0x7f16142fa000
        callback = 0x7f162f8b6d50 &lt;WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer)&gt;
        cb_funcs = 0x7f1634b9c280 &lt;g_source_callback_funcs&gt;
        cb_data = 0x561624a52630
        need_destroy = &lt;optimized out&gt;
        source = 0x561624a542f0
        current = 0x5616239b70c0
        i = 0
        __FUNCTION__ = &quot;g_main_dispatch&quot;
#21 0x00007f1634ac8fed in g_main_context_dispatch (context=context@entry=0x5616239b7000) at ../glib/gmain.c:3858
#22 0x00007f1634ac9380 in g_main_context_iterate (context=0x5616239b7000, block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at ../glib/gmain.c:3931
        max_priority = 100
        timeout = 0
        some_ready = 1
        nfds = &lt;optimized out&gt;
        allocated_nfds = &lt;optimized out&gt;
        fds = 0x7f15f00013d0
#23 0x00007f1634ac9673 in g_main_loop_run (loop=0x561623de5da0) at ../glib/gmain.c:4125
        __FUNCTION__ = &quot;g_main_loop_run&quot;
#24 0x00007f163514ca6d in gtk_main () at gtkmain.c:1323
        loop = 0x561623de5da0
#25 0x0000561623293b0a in main (argc=&lt;optimized out&gt;, argv=&lt;optimized out&gt;) at /usr/src/debug/evolution-3.33.3-1.fc31.x86_64/src/shell/main.c:691
        shell = 0x561623abf1f0 [EShell]
        settings = &lt;optimized out&gt;
        skip_warning_dialog = &lt;optimized out&gt;
        success = &lt;optimized out&gt;
        error = 0x0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551307</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Williamson">adamw</who>
    <bug_when>2019-07-09 11:18:52 -0700</bug_when>
    <thetext>I&apos;m the original reporter. Ask me anything. =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551364</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-09 13:00:30 -0700</bug_when>
    <thetext>(In reply to Milan Crha from comment #0)
&gt;  * There are at least two bugs here: first that the web process is sending
&gt; an invalid frame, second that this crashes the UI process. The UI process
&gt; must be robust to a malicious web process sending invalid messages.

The first bug is going to require some investigation.

For the second bug, basically all of WebKitInjectedBundleClient in WebKitInjectedBundleClient.cpp is missing validation to ensure API::Dictionary::get is returning valid pointers. E.g.:

        if (g_str_equal(messageName, &quot;DidInitiateLoadForResource&quot;)) {
            WebFrameProxy* frame = static_cast&lt;WebFrameProxy*&gt;(message.get(String::fromUTF8(&quot;Frame&quot;)));
            API::UInt64* resourceIdentifier = static_cast&lt;API::UInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
            API::URLRequest* webRequest = static_cast&lt;API::URLRequest*&gt;(message.get(String::fromUTF8(&quot;Request&quot;)));
            GRefPtr&lt;WebKitURIRequest&gt; request = adoptGRef(webkitURIRequestCreateForResourceRequest(webRequest-&gt;resourceRequest()));

            webkitWebViewResourceLoadStarted(webView, frame, resourceIdentifier-&gt;value(), request.get());

Here we crash because we fail to check that frame is not null, but it could just as easily have been webRequest or request. Point is to make sure the UI process survives even if the web process is evil and intentionally sends bad messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553153</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-16 02:31:30 -0700</bug_when>
    <thetext>I can&apos;t reproduce it, but I think this can only happen if DidDestroyFrame message is received after injected bundle message is sent, but before it&apos;s processed. I&apos;m not sure that&apos;s actually possible, because IPC messages should be processed in the order they were sent, though. But if that can happen somehow, then the null check in the UI process would be the right fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553154</commentid>
    <comment_count>4</comment_count>
      <attachid>374202</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-16 02:56:34 -0700</bug_when>
    <thetext>Created attachment 374202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553155</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-16 02:59:10 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553167</commentid>
    <comment_count>6</comment_count>
      <attachid>374202</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-16 06:49:35 -0700</bug_when>
    <thetext>Comment on attachment 374202
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitInjectedBundleClient.cpp:54
&gt;              API::UInt64* resourceIdentifier = static_cast&lt;API::UInt64*&gt;(message.get(String::fromUTF8(&quot;Identifier&quot;)));
&gt; +            ASSERT(resourceIdentifier);
&gt;              API::URLRequest* webRequest = static_cast&lt;API::URLRequest*&gt;(message.get(String::fromUTF8(&quot;Request&quot;)));
&gt; +            ASSERT(webRequest);

But this is exactly what I said we must not do. We can&apos;t trust web process messages: we have to validate them. A malicious web process shouldn&apos;t be able to crash the UI process, and a crash is what we&apos;re going to get if either of these are null.

I assume we can trust message.get to return either valid data or null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553172</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-16 07:44:47 -0700</bug_when>
    <thetext>You are assuming the web process is sending a wrong frame, but that&apos;s not the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553177</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-16 07:55:00 -0700</bug_when>
    <thetext>I&apos;m trying to remind you that our message processing code must not ASSERT when it receives unexpected input, because that would introduce a security vulnerability (denial of service). The code should drop the message and move on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553179</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-16 08:00:50 -0700</bug_when>
    <thetext>Ok, we are already asserting when receiving an invalid injected bundle message, so I&apos;m going to fix the existing code in a new bug that I can merge in stable, and then update this patch on top.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553181</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-16 08:04:32 -0700</bug_when>
    <thetext>At the risk of complicating this further: sometimes Apple uses ASSERT() to catch the problem in debug builds, but still handles the problem in release builds anyway. E.g.

auto* something = message.get();
ASSERT(something);
if (!something)
    return;

I think that&apos;s extremely confusing because it creates the incorrect impression that the condition below is redundant and can be removed, but it&apos;s a pattern that is occasionally used in WebKit. The advantage of that is that you still get the ASSERT in debug mode for developer convenience, but not in release builds where it would be a vulnerability.

I don&apos;t suggest using this pattern, but it&apos;s not necessarily a bug if you find it elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553191</commentid>
    <comment_count>11</comment_count>
      <attachid>374210</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-16 08:31:33 -0700</bug_when>
    <thetext>Created attachment 374210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553220</commentid>
    <comment_count>12</comment_count>
      <attachid>374210</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-16 10:39:15 -0700</bug_when>
    <thetext>Comment on attachment 374210
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        * UIProcess/API/glib/WebKitInjectedBundleClient.cpp: Add asserts for all message parameters that should never be nullptr.

Update the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553462</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-17 01:25:37 -0700</bug_when>
    <thetext>Committed r247508: &lt;https://trac.webkit.org/changeset/247508&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374202</attachid>
            <date>2019-07-16 02:56:34 -0700</date>
            <delta_ts>2019-07-16 08:31:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-frame-null.diff</filename>
            <type>text/plain</type>
            <size>10536</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMzRmODA5ODBhYzMuLjczODE1MDAwZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDE5LTA3LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbV1BFXVtHVEtdIFVJIHByb2Nlc3MgY3Jhc2ggZHVlIHRvIE5VTEwg
ZGVyZWZlcmVuY2UgaW4gd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NjIxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTnVsbC1jaGVjayBmcmFt
ZSByZWNlaXZlZCBpbiBpbmplY3RlZCBidW5kbGUgbWVzc2FnZSB0byBlbnN1cmUgdGhlIGZyYW1l
IGhhc24ndCBiZWVuIGRlc3Ryb3llZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6IEFkZCBhc3NlcnRzIGZvciBhbGwgbWVzc2Fn
ZSBwYXJhbWV0ZXJzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIG51bGxwdHIuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YlJlc291cmNlQ3JlYXRlKTogUmVjZWl2ZSBhIHJlZmVyZW5jZSB0byB0aGUgZnJhbWUgaW5zdGVh
ZCBvZiBhIHBvaW50ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlJl
c291cmNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKTogRGl0
dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6
CisKIDIwMTktMDctMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZW1vdmUgcmVkdW5kYW50IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIG1lbWJlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGRkMzgzOWE0YWVi
Li4wMzMzMzYwMzMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtNDUsNDMg
KzQ1LDU1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoZ19zdHJfZXF1YWwobWVzc2Fn
ZU5hbWUsICJEaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSIpKSB7CiAgICAgICAgICAgICBXZWJG
cmFtZVByb3h5KiBmcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lUHJveHkqPihtZXNzYWdlLmdl
dChTdHJpbmc6OmZyb21VVEY4KCJGcmFtZSIpKSk7CisgICAgICAgICAgICBpZiAoIWZyYW1lKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgQVBJOjpVSW50NjQqIHJlc291
cmNlSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoU3Ry
aW5nOjpmcm9tVVRGOCgiSWRlbnRpZmllciIpKSk7CisgICAgICAgICAgICBBU1NFUlQocmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIEFQSTo6VVJMUmVxdWVzdCogd2ViUmVxdWVzdCA9
IHN0YXRpY19jYXN0PEFQSTo6VVJMUmVxdWVzdCo+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVU
RjgoIlJlcXVlc3QiKSkpOworICAgICAgICAgICAgQVNTRVJUKHdlYlJlcXVlc3QpOwogICAgICAg
ICAgICAgR1JlZlB0cjxXZWJLaXRVUklSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtp
dFVSSVJlcXVlc3RDcmVhdGVGb3JSZXNvdXJjZVJlcXVlc3Qod2ViUmVxdWVzdC0+cmVzb3VyY2VS
ZXF1ZXN0KCkpKTsKIAotICAgICAgICAgICAgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0
ZWQod2ViVmlldywgZnJhbWUsIHJlc291cmNlSWRlbnRpZmllci0+dmFsdWUoKSwgcmVxdWVzdC5n
ZXQoKSk7CisgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UmVzb3VyY2VMb2FkU3RhcnRlZCh3ZWJW
aWV3LCAqZnJhbWUsIHJlc291cmNlSWRlbnRpZmllci0+dmFsdWUoKSwgcmVxdWVzdC5nZXQoKSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwobWVzc2FnZU5hbWUsICJEaWRTZW5kUmVx
dWVzdEZvclJlc291cmNlIikpIHsKICAgICAgICAgICAgIEFQSTo6VUludDY0KiByZXNvdXJjZUlk
ZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6
ZnJvbVVURjgoIklkZW50aWZpZXIiKSkpOworICAgICAgICAgICAgQVNTRVJUKHJlc291cmNlSWRl
bnRpZmllcik7CiAgICAgICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiByZXNvdXJj
ZSA9IHdlYmtpdFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2Uod2ViVmlldywgcmVzb3VyY2VJ
ZGVudGlmaWVyLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBBUEk6OlVSTFJlcXVlc3QqIHdlYlJlcXVl
c3QgPSBzdGF0aWNfY2FzdDxBUEk6OlVSTFJlcXVlc3QqPihtZXNzYWdlLmdldChTdHJpbmc6OmZy
b21VVEY4KCJSZXF1ZXN0IikpKTsKKyAgICAgICAgICAgIEFTU0VSVCh3ZWJSZXF1ZXN0KTsKICAg
ICAgICAgICAgIEdSZWZQdHI8V2ViS2l0VVJJUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3
ZWJraXRVUklSZXF1ZXN0Q3JlYXRlRm9yUmVzb3VyY2VSZXF1ZXN0KHdlYlJlcXVlc3QtPnJlc291
cmNlUmVxdWVzdCgpKSk7CiAgICAgICAgICAgICBBUEk6OlVSTFJlc3BvbnNlKiB3ZWJSZWRpcmVj
dFJlc3BvbnNlID0gc3RhdGljX2Nhc3Q8QVBJOjpVUkxSZXNwb25zZSo+KG1lc3NhZ2UuZ2V0KFN0
cmluZzo6ZnJvbVVURjgoIlJlZGlyZWN0UmVzcG9uc2UiKSkpOwotICAgICAgICAgICAgR1JlZlB0
cjxXZWJLaXRVUklSZXNwb25zZT4gcmVkaXJlY3RSZXNwb25zZSA9IHdlYlJlZGlyZWN0UmVzcG9u
c2UgPyBhZG9wdEdSZWYod2Via2l0VVJJUmVzcG9uc2VDcmVhdGVGb3JSZXNvdXJjZVJlc3BvbnNl
KHdlYlJlZGlyZWN0UmVzcG9uc2UtPnJlc291cmNlUmVzcG9uc2UoKSkpIDogMDsKKyAgICAgICAg
ICAgIEdSZWZQdHI8V2ViS2l0VVJJUmVzcG9uc2U+IHJlZGlyZWN0UmVzcG9uc2UgPSB3ZWJSZWRp
cmVjdFJlc3BvbnNlID8gYWRvcHRHUmVmKHdlYmtpdFVSSVJlc3BvbnNlQ3JlYXRlRm9yUmVzb3Vy
Y2VSZXNwb25zZSh3ZWJSZWRpcmVjdFJlc3BvbnNlLT5yZXNvdXJjZVJlc3BvbnNlKCkpKSA6IG51
bGxwdHI7CiAKICAgICAgICAgICAgIHdlYmtpdFdlYlJlc291cmNlU2VudFJlcXVlc3QocmVzb3Vy
Y2UuZ2V0KCksIHJlcXVlc3QuZ2V0KCksIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwogICAgICAg
ICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKG1lc3NhZ2VOYW1lLCAiRGlkUmVjZWl2ZVJlc3BvbnNl
Rm9yUmVzb3VyY2UiKSkgewogICAgICAgICAgICAgQVBJOjpVSW50NjQqIHJlc291cmNlSWRlbnRp
ZmllciA9IHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9t
VVRGOCgiSWRlbnRpZmllciIpKSk7CisgICAgICAgICAgICBBU1NFUlQocmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICAgICAgICAgIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+IHJlc291cmNlID0g
d2Via2l0V2ViVmlld0dldExvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50
aWZpZXItPnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIEFQSTo6VVJMUmVzcG9uc2UqIHdlYlJlc3BvbnNl
ID0gc3RhdGljX2Nhc3Q8QVBJOjpVUkxSZXNwb25zZSo+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJv
bVVURjgoIlJlc3BvbnNlIikpKTsKKyAgICAgICAgICAgIEFTU0VSVCh3ZWJSZXNwb25zZSk7CiAg
ICAgICAgICAgICBHUmVmUHRyPFdlYktpdFVSSVJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0R1Jl
Zih3ZWJraXRVUklSZXNwb25zZUNyZWF0ZUZvclJlc291cmNlUmVzcG9uc2Uod2ViUmVzcG9uc2Ut
PnJlc291cmNlUmVzcG9uc2UoKSkpOwogCiAgICAgICAgICAgICB3ZWJraXRXZWJSZXNvdXJjZVNl
dFJlc3BvbnNlKHJlc291cmNlLmdldCgpLCByZXNwb25zZS5nZXQoKSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoZ19zdHJfZXF1YWwobWVzc2FnZU5hbWUsICJEaWRSZWNlaXZlQ29udGVudExlbmd0aEZv
clJlc291cmNlIikpIHsKICAgICAgICAgICAgIEFQSTo6VUludDY0KiByZXNvdXJjZUlkZW50aWZp
ZXIgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVU
RjgoIklkZW50aWZpZXIiKSkpOworICAgICAgICAgICAgQVNTRVJUKHJlc291cmNlSWRlbnRpZmll
cik7CiAgICAgICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiByZXNvdXJjZSA9IHdl
YmtpdFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2Uod2ViVmlldywgcmVzb3VyY2VJZGVudGlm
aWVyLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICBBUEk6OlVJbnQ2NCogY29udGVudExlbmd0aCA9IHN0
YXRpY19jYXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgiQ29u
dGVudExlbmd0aCIpKSk7CisgICAgICAgICAgICBBU1NFUlQoY29udGVudExlbmd0aCk7CiAgICAg
ICAgICAgICB3ZWJraXRXZWJSZXNvdXJjZU5vdGlmeVByb2dyZXNzKHJlc291cmNlLmdldCgpLCBj
b250ZW50TGVuZ3RoLT52YWx1ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbCht
ZXNzYWdlTmFtZSwgIkRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSIpKSB7CiAgICAgICAgICAgICBB
UEk6OlVJbnQ2NCogcmVzb3VyY2VJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQq
PihtZXNzYWdlLmdldChTdHJpbmc6OmZyb21VVEY4KCJJZGVudGlmaWVyIikpKTsKKyAgICAgICAg
ICAgIEFTU0VSVChyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgR1JlZlB0cjxXZWJL
aXRXZWJSZXNvdXJjZT4gcmVzb3VyY2UgPSB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291
cmNlKHdlYlZpZXcsIHJlc291cmNlSWRlbnRpZmllci0+dmFsdWUoKSk7CiAgICAgICAgICAgICBp
ZiAoIXJlc291cmNlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTkwLDExICsxMDIsMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5nV2ViUmVz
b3VyY2Uod2ViVmlldywgcmVzb3VyY2VJZGVudGlmaWVyLT52YWx1ZSgpKTsKICAgICAgICAgfSBl
bHNlIGlmIChnX3N0cl9lcXVhbChtZXNzYWdlTmFtZSwgIkRpZEZhaWxMb2FkRm9yUmVzb3VyY2Ui
KSkgewogICAgICAgICAgICAgQVBJOjpVSW50NjQqIHJlc291cmNlSWRlbnRpZmllciA9IHN0YXRp
Y19jYXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgiSWRlbnRp
ZmllciIpKSk7CisgICAgICAgICAgICBBU1NFUlQocmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAg
ICAgICAgIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+IHJlc291cmNlID0gd2Via2l0V2ViVmll
d0dldExvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZhbHVl
KCkpOwogICAgICAgICAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgICAgIEFQSTo6RXJyb3IqIHdlYkVycm9yID0gc3RhdGljX2Nhc3Q8QVBJOjpF
cnJvcio+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgoIkVycm9yIikpKTsKKyAgICAgICAg
ICAgIEFTU0VSVCh3ZWJFcnJvcik7CiAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBw
bGF0Zm9ybUVycm9yID0gd2ViRXJyb3ItPnBsYXRmb3JtRXJyb3IoKTsKICAgICAgICAgICAgIEdV
bmlxdWVQdHI8R0Vycm9yPiByZXNvdXJjZUVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFy
a19mcm9tX3N0cmluZyhwbGF0Zm9ybUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAg
ICAgICAgICAgICAgIHRvV2ViS2l0RXJyb3IocGxhdGZvcm1FcnJvci5lcnJvckNvZGUoKSksIHBs
YXRmb3JtRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJj
ZS5jcHAKaW5kZXggMjg4NTU1ZjNlZjEuLjkwYmQ3YjgyOGRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3VyY2UuY3BwCkBAIC0y
MzEsMTEgKzIzMSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJSZXNvdXJjZVVwZGF0ZVVSSShX
ZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IENTdHJpbgogICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChyZXNvdXJjZSksICJ1cmkiKTsKIH0KIAotV2ViS2l0V2ViUmVzb3VyY2Uq
IHdlYmtpdFdlYlJlc291cmNlQ3JlYXRlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXZWJLaXRVUklS
ZXF1ZXN0KiByZXF1ZXN0LCBib29sIGlzTWFpblJlc291cmNlKQorV2ViS2l0V2ViUmVzb3VyY2Uq
IHdlYmtpdFdlYlJlc291cmNlQ3JlYXRlKFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJLaXRVUklS
ZXF1ZXN0KiByZXF1ZXN0LCBib29sIGlzTWFpblJlc291cmNlKQogewogICAgIEFTU0VSVChmcmFt
ZSk7CiAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlID0gV0VCS0lUX1dFQl9SRVNPVVJD
RShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1JFU09VUkNFLCBOVUxMKSk7Ci0gICAgcmVz
b3VyY2UtPnByaXYtPmZyYW1lID0gZnJhbWU7CisgICAgcmVzb3VyY2UtPnByaXYtPmZyYW1lID0g
JmZyYW1lOwogICAgIHJlc291cmNlLT5wcml2LT51cmkgPSB3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0
X3VyaShyZXF1ZXN0KTsKICAgICByZXNvdXJjZS0+cHJpdi0+aXNNYWluUmVzb3VyY2UgPSBpc01h
aW5SZXNvdXJjZTsKICAgICByZXR1cm4gcmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZVByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlJlc291cmNlUHJpdmF0ZS5oCmlu
ZGV4IDNhMDI5MzI3ZDYxLi44ZDEzNDlkZDY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3VyY2VQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3VyY2VQcml2YXRlLmgKQEAg
LTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUgIldlYktpdFdlYlJlc291cmNlLmgiCiAKLVdlYktp
dFdlYlJlc291cmNlKiB3ZWJraXRXZWJSZXNvdXJjZUNyZWF0ZShXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqLCBXZWJLaXRVUklSZXF1ZXN0KiwgYm9vbCBpc01haW5SZXNvdXJjZSk7CitXZWJLaXRXZWJS
ZXNvdXJjZSogd2Via2l0V2ViUmVzb3VyY2VDcmVhdGUoV2ViS2l0OjpXZWJGcmFtZVByb3h5Jiwg
V2ViS2l0VVJJUmVxdWVzdCosIGJvb2wgaXNNYWluUmVzb3VyY2UpOwogdm9pZCB3ZWJraXRXZWJS
ZXNvdXJjZVNlbnRSZXF1ZXN0KFdlYktpdFdlYlJlc291cmNlKiwgV2ViS2l0VVJJUmVxdWVzdCos
IFdlYktpdFVSSVJlc3BvbnNlKik7CiB2b2lkIHdlYmtpdFdlYlJlc291cmNlU2V0UmVzcG9uc2Uo
V2ViS2l0V2ViUmVzb3VyY2UqLCBXZWJLaXRVUklSZXNwb25zZSopOwogdm9pZCB3ZWJraXRXZWJS
ZXNvdXJjZU5vdGlmeVByb2dyZXNzKFdlYktpdFdlYlJlc291cmNlKiwgZ3VpbnQ2NCBieXRlc1Jl
Y2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlldy5jcHAKaW5kZXggY2ViOTBkNzNkODMuLmIyMzlhYzRlMTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjM3
NCwxMCArMjM3NCwxMCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYkZyYW1lUHJveHkqIGZyYW1lKQogfQogI2VuZGlmCiAKLXZvaWQgd2Vi
a2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
RnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJ
UmVxdWVzdCogcmVxdWVzdCkKK3ZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViRnJhbWVQcm94eSYgZnJhbWUsIHVpbnQ2NF90IHJl
c291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgYm9vbCBpc01haW5S
ZXNvdXJjZSA9IGZyYW1lLT5pc01haW5GcmFtZSgpICYmICFwcml2LT5tYWluUmVzb3VyY2U7Cisg
ICAgYm9vbCBpc01haW5SZXNvdXJjZSA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgIXByaXYtPm1h
aW5SZXNvdXJjZTsKICAgICBXZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UgPSB3ZWJraXRXZWJS
ZXNvdXJjZUNyZWF0ZShmcmFtZSwgcmVxdWVzdCwgaXNNYWluUmVzb3VyY2UpOwogICAgIGlmIChp
c01haW5SZXNvdXJjZSkKICAgICAgICAgcHJpdi0+bWFpblJlc291cmNlID0gcmVzb3VyY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaAppbmRleCAzMGRmZjU3MDViOC4uZTA4NjY4M2FjYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUu
aApAQCAtNjksNyArNjksNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNYWtlUG9saWN5RGVjaXNpb24o
V2ViS2l0V2ViVmlldyosIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZSwgVwogdm9pZCB3ZWJraXRX
ZWJWaWV3TW91c2VUYXJnZXRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBjb25zdCBXZWJLaXQ6Oldl
YkhpdFRlc3RSZXN1bHREYXRhJiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVy
Pik7CiB2b2lkIHdlYmtpdFdlYlZpZXdIYW5kbGVEb3dubG9hZFJlcXVlc3QoV2ViS2l0V2ViVmll
dyosIFdlYktpdDo6RG93bmxvYWRQcm94eSopOwogdm9pZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFt
ZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Kik7Ci12b2lkIHdlYmtpdFdl
YlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdlYktpdFVSSVJlcXVlc3QqKTsK
K3ZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdl
YktpdDo6V2ViRnJhbWVQcm94eSYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0
VVJJUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKIFdlYktpdFdlYlJlc291
cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1
aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogI2lmIFBMQVRGT1JNKEdUSykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374210</attachid>
            <date>2019-07-16 08:31:33 -0700</date>
            <delta_ts>2019-07-16 10:39:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-frame-null.diff</filename>
            <type>text/plain</type>
            <size>11529</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMjYwMTQyMWYwMmYuLjY0ZTk0NWE1ZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDE5LTA3LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbV1BFXVtHVEtdIFVJIHByb2Nlc3MgY3Jhc2ggZHVlIHRvIE5VTEwg
ZGVyZWZlcmVuY2UgaW4gd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NjIxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTnVsbC1jaGVjayBmcmFt
ZSByZWNlaXZlZCBpbiBpbmplY3RlZCBidW5kbGUgbWVzc2FnZSB0byBlbnN1cmUgdGhlIGZyYW1l
IGhhc24ndCBiZWVuIGRlc3Ryb3llZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6IEFkZCBhc3NlcnRzIGZvciBhbGwgbWVzc2Fn
ZSBwYXJhbWV0ZXJzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIG51bGxwdHIuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YlJlc291cmNlQ3JlYXRlKTogUmVjZWl2ZSBhIHJlZmVyZW5jZSB0byB0aGUgZnJhbWUgaW5zdGVh
ZCBvZiBhIHBvaW50ZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlJl
c291cmNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKTogRGl0
dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6
CisKIDIwMTktMDctMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdW1dQRV0gRG8gbm90IGFzc2VydCB3aGVuIHJlY2VpdmluZyBpbnZh
bGlkIGRhdGEgaW4gaW5qZWN0ZWQgYnVuZGxlIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAKaW5kZXggOWQyYmJkZWQ2MmQuLmE5M2ZmMjViMzlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwCkBAIC00NSw0MyArNDUsNzAgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIGlmIChnX3N0cl9lcXVhbChtZXNzYWdlTmFtZSwgIkRpZEluaXRpYXRlTG9hZEZvclJlc291
cmNlIikpIHsKICAgICAgICAgICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
V2ViRnJhbWVQcm94eSo+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgoIkZyYW1lIikpKTsK
KyAgICAgICAgICAgIGlmICghZnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgICAgICBBUEk6OlVJbnQ2NCogcmVzb3VyY2VJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8QVBJ
OjpVSW50NjQqPihtZXNzYWdlLmdldChTdHJpbmc6OmZyb21VVEY4KCJJZGVudGlmaWVyIikpKTsK
KyAgICAgICAgICAgIGlmICghcmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICAgICAgQVBJOjpVUkxSZXF1ZXN0KiB3ZWJSZXF1ZXN0ID0gc3RhdGlj
X2Nhc3Q8QVBJOjpVUkxSZXF1ZXN0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgiUmVx
dWVzdCIpKSk7Ci0gICAgICAgICAgICBHUmVmUHRyPFdlYktpdFVSSVJlcXVlc3Q+IHJlcXVlc3Qg
PSBhZG9wdEdSZWYod2Via2l0VVJJUmVxdWVzdENyZWF0ZUZvclJlc291cmNlUmVxdWVzdCh3ZWJS
ZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKSkpOworICAgICAgICAgICAgaWYgKCF3ZWJSZXF1ZXN0
KQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgd2Via2l0V2ViVmlld1Jl
c291cmNlTG9hZFN0YXJ0ZWQod2ViVmlldywgZnJhbWUsIHJlc291cmNlSWRlbnRpZmllci0+dmFs
dWUoKSwgcmVxdWVzdC5nZXQoKSk7CisgICAgICAgICAgICBHUmVmUHRyPFdlYktpdFVSSVJlcXVl
c3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0VVJJUmVxdWVzdENyZWF0ZUZvclJlc291cmNl
UmVxdWVzdCh3ZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKSkpOworICAgICAgICAgICAgd2Vi
a2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQod2ViVmlldywgKmZyYW1lLCByZXNvdXJjZUlk
ZW50aWZpZXItPnZhbHVlKCksIHJlcXVlc3QuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGdf
c3RyX2VxdWFsKG1lc3NhZ2VOYW1lLCAiRGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSIpKSB7CiAg
ICAgICAgICAgICBBUEk6OlVJbnQ2NCogcmVzb3VyY2VJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8
QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldChTdHJpbmc6OmZyb21VVEY4KCJJZGVudGlmaWVyIikp
KTsKKyAgICAgICAgICAgIGlmICghcmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKwogICAgICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gcmVzb3Vy
Y2UgPSB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNlKHdlYlZpZXcsIHJlc291cmNl
SWRlbnRpZmllci0+dmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgQVBJOjpVUkxSZXF1ZXN0KiB3ZWJSZXF1
ZXN0ID0gc3RhdGljX2Nhc3Q8QVBJOjpVUkxSZXF1ZXN0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpm
cm9tVVRGOCgiUmVxdWVzdCIpKSk7CisgICAgICAgICAgICBpZiAoIXdlYlJlcXVlc3QpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBHUmVmUHRyPFdlYktpdFVSSVJlcXVl
c3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0VVJJUmVxdWVzdENyZWF0ZUZvclJlc291cmNl
UmVxdWVzdCh3ZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKSkpOwogICAgICAgICAgICAgQVBJ
OjpVUkxSZXNwb25zZSogd2ViUmVkaXJlY3RSZXNwb25zZSA9IHN0YXRpY19jYXN0PEFQSTo6VVJM
UmVzcG9uc2UqPihtZXNzYWdlLmdldChTdHJpbmc6OmZyb21VVEY4KCJSZWRpcmVjdFJlc3BvbnNl
IikpKTsKLSAgICAgICAgICAgIEdSZWZQdHI8V2ViS2l0VVJJUmVzcG9uc2U+IHJlZGlyZWN0UmVz
cG9uc2UgPSB3ZWJSZWRpcmVjdFJlc3BvbnNlID8gYWRvcHRHUmVmKHdlYmtpdFVSSVJlc3BvbnNl
Q3JlYXRlRm9yUmVzb3VyY2VSZXNwb25zZSh3ZWJSZWRpcmVjdFJlc3BvbnNlLT5yZXNvdXJjZVJl
c3BvbnNlKCkpKSA6IDA7Ci0KKyAgICAgICAgICAgIEdSZWZQdHI8V2ViS2l0VVJJUmVzcG9uc2U+
IHJlZGlyZWN0UmVzcG9uc2UgPSB3ZWJSZWRpcmVjdFJlc3BvbnNlID8gYWRvcHRHUmVmKHdlYmtp
dFVSSVJlc3BvbnNlQ3JlYXRlRm9yUmVzb3VyY2VSZXNwb25zZSh3ZWJSZWRpcmVjdFJlc3BvbnNl
LT5yZXNvdXJjZVJlc3BvbnNlKCkpKSA6IG51bGxwdHI7CiAgICAgICAgICAgICB3ZWJraXRXZWJS
ZXNvdXJjZVNlbnRSZXF1ZXN0KHJlc291cmNlLmdldCgpLCByZXF1ZXN0LmdldCgpLCByZWRpcmVj
dFJlc3BvbnNlLmdldCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChtZXNzYWdl
TmFtZSwgIkRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlIikpIHsKICAgICAgICAgICAgIEFQ
STo6VUludDY0KiByZXNvdXJjZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+
KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgoIklkZW50aWZpZXIiKSkpOworICAgICAgICAg
ICAgaWYgKCFyZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiByZXNvdXJjZSA9IHdlYmtpdFdl
YlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2Uod2ViVmlldywgcmVzb3VyY2VJZGVudGlmaWVyLT52
YWx1ZSgpKTsKICAgICAgICAgICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgICAgICBBUEk6OlVSTFJlc3BvbnNlKiB3ZWJSZXNwb25zZSA9IHN0YXRp
Y19jYXN0PEFQSTo6VVJMUmVzcG9uc2UqPihtZXNzYWdlLmdldChTdHJpbmc6OmZyb21VVEY4KCJS
ZXNwb25zZSIpKSk7Ci0gICAgICAgICAgICBHUmVmUHRyPFdlYktpdFVSSVJlc3BvbnNlPiByZXNw
b25zZSA9IGFkb3B0R1JlZih3ZWJraXRVUklSZXNwb25zZUNyZWF0ZUZvclJlc291cmNlUmVzcG9u
c2Uod2ViUmVzcG9uc2UtPnJlc291cmNlUmVzcG9uc2UoKSkpOworICAgICAgICAgICAgaWYgKCF3
ZWJSZXNwb25zZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0VVJJUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHRHUmVmKHdlYmtpdFVSSVJlc3Bv
bnNlQ3JlYXRlRm9yUmVzb3VyY2VSZXNwb25zZSh3ZWJSZXNwb25zZS0+cmVzb3VyY2VSZXNwb25z
ZSgpKSk7CiAgICAgICAgICAgICB3ZWJraXRXZWJSZXNvdXJjZVNldFJlc3BvbnNlKHJlc291cmNl
LmdldCgpLCByZXNwb25zZS5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwo
bWVzc2FnZU5hbWUsICJEaWRSZWNlaXZlQ29udGVudExlbmd0aEZvclJlc291cmNlIikpIHsKICAg
ICAgICAgICAgIEFQSTo6VUludDY0KiByZXNvdXJjZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxB
UEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgoIklkZW50aWZpZXIiKSkp
OworICAgICAgICAgICAgaWYgKCFyZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCiAgICAgICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiByZXNvdXJj
ZSA9IHdlYmtpdFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2Uod2ViVmlldywgcmVzb3VyY2VJ
ZGVudGlmaWVyLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBBUEk6OlVJbnQ2NCogY29udGVudExlbmd0
aCA9IHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRG
OCgiQ29udGVudExlbmd0aCIpKSk7CisgICAgICAgICAgICBpZiAoIWNvbnRlbnRMZW5ndGgpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICB3ZWJraXRXZWJSZXNvdXJjZU5v
dGlmeVByb2dyZXNzKHJlc291cmNlLmdldCgpLCBjb250ZW50TGVuZ3RoLT52YWx1ZSgpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChtZXNzYWdlTmFtZSwgIkRpZEZpbmlzaExvYWRG
b3JSZXNvdXJjZSIpKSB7CiAgICAgICAgICAgICBBUEk6OlVJbnQ2NCogcmVzb3VyY2VJZGVudGlm
aWVyID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldChTdHJpbmc6OmZyb21V
VEY4KCJJZGVudGlmaWVyIikpKTsKKyAgICAgICAgICAgIGlmICghcmVzb3VyY2VJZGVudGlmaWVy
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgR1JlZlB0cjxXZWJLaXRX
ZWJSZXNvdXJjZT4gcmVzb3VyY2UgPSB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNl
KHdlYlZpZXcsIHJlc291cmNlSWRlbnRpZmllci0+dmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAo
IXJlc291cmNlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTkwLDExICsxMTcsMTcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5nV2ViUmVzb3Vy
Y2Uod2ViVmlldywgcmVzb3VyY2VJZGVudGlmaWVyLT52YWx1ZSgpKTsKICAgICAgICAgfSBlbHNl
IGlmIChnX3N0cl9lcXVhbChtZXNzYWdlTmFtZSwgIkRpZEZhaWxMb2FkRm9yUmVzb3VyY2UiKSkg
ewogICAgICAgICAgICAgQVBJOjpVSW50NjQqIHJlc291cmNlSWRlbnRpZmllciA9IHN0YXRpY19j
YXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgiSWRlbnRpZmll
ciIpKSk7CisgICAgICAgICAgICBpZiAoIXJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKICAgICAgICAgICAgIEdSZWZQdHI8V2ViS2l0V2ViUmVzb3VyY2U+IHJl
c291cmNlID0gd2Via2l0V2ViVmlld0dldExvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNv
dXJjZUlkZW50aWZpZXItPnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKCFyZXNvdXJjZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIEFQSTo6RXJyb3IqIHdlYkVycm9y
ID0gc3RhdGljX2Nhc3Q8QVBJOjpFcnJvcio+KG1lc3NhZ2UuZ2V0KFN0cmluZzo6ZnJvbVVURjgo
IkVycm9yIikpKTsKKyAgICAgICAgICAgIGlmICghd2ViRXJyb3IpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCiAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBwbGF0Zm9ybUVycm9y
ID0gd2ViRXJyb3ItPnBsYXRmb3JtRXJyb3IoKTsKICAgICAgICAgICAgIEdVbmlxdWVQdHI8R0Vy
cm9yPiByZXNvdXJjZUVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmlu
ZyhwbGF0Zm9ybUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAgICAgICAgICAgICAg
IHRvV2ViS2l0RXJyb3IocGxhdGZvcm1FcnJvci5lcnJvckNvZGUoKSksIHBsYXRmb3JtRXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CkBAIC0xMDcsNiArMTQwLDkg
QEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgIH0gZWxzZSBpZiAoZ19zdHJf
ZXF1YWwobWVzc2FnZU5hbWUsICJEaWRHZXRTbmFwc2hvdCIpKSB7CiAgICAgICAgICAgICBBUEk6
OlVJbnQ2NCogY2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5n
ZXQoIkNhbGxiYWNrSUQiKSk7CisgICAgICAgICAgICBpZiAoIWNhbGxiYWNrSUQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCIpKTsKICAgICAgICAgICAgIHdl
YktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNob3Qod2ViVmlldywgY2FsbGJhY2tJRC0+dmFsdWUo
KSwgaW1hZ2UpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJSZXNvdXJjZS5jcHAKaW5kZXggMjg4NTU1ZjNlZjEuLjkwYmQ3Yjgy
OGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViUmVzb3VyY2UuY3BwCkBAIC0yMzEsMTEgKzIzMSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJSZXNvdXJjZVVwZGF0ZVVSSShXZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0
IENTdHJpbgogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChyZXNvdXJjZSksICJ1cmkiKTsK
IH0KIAotV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlJlc291cmNlQ3JlYXRlKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBib29sIGlzTWFpblJlc291
cmNlKQorV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlJlc291cmNlQ3JlYXRlKFdlYkZyYW1l
UHJveHkmIGZyYW1lLCBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBib29sIGlzTWFpblJlc291
cmNlKQogewogICAgIEFTU0VSVChmcmFtZSk7CiAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291
cmNlID0gV0VCS0lUX1dFQl9SRVNPVVJDRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1JF
U09VUkNFLCBOVUxMKSk7Ci0gICAgcmVzb3VyY2UtPnByaXYtPmZyYW1lID0gZnJhbWU7CisgICAg
cmVzb3VyY2UtPnByaXYtPmZyYW1lID0gJmZyYW1lOwogICAgIHJlc291cmNlLT5wcml2LT51cmkg
PSB3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KTsKICAgICByZXNvdXJjZS0+cHJp
di0+aXNNYWluUmVzb3VyY2UgPSBpc01haW5SZXNvdXJjZTsKICAgICByZXR1cm4gcmVzb3VyY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJS
ZXNvdXJjZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlJlc291cmNlUHJpdmF0ZS5oCmluZGV4IDNhMDI5MzI3ZDYxLi44ZDEzNDlkZDY1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViUmVzb3Vy
Y2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViUmVzb3VyY2VQcml2YXRlLmgKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUgIldlYktp
dFdlYlJlc291cmNlLmgiCiAKLVdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJSZXNvdXJjZUNy
ZWF0ZShXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXRVUklSZXF1ZXN0KiwgYm9vbCBpc01h
aW5SZXNvdXJjZSk7CitXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0V2ViUmVzb3VyY2VDcmVhdGUo
V2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViS2l0VVJJUmVxdWVzdCosIGJvb2wgaXNNYWluUmVz
b3VyY2UpOwogdm9pZCB3ZWJraXRXZWJSZXNvdXJjZVNlbnRSZXF1ZXN0KFdlYktpdFdlYlJlc291
cmNlKiwgV2ViS2l0VVJJUmVxdWVzdCosIFdlYktpdFVSSVJlc3BvbnNlKik7CiB2b2lkIHdlYmtp
dFdlYlJlc291cmNlU2V0UmVzcG9uc2UoV2ViS2l0V2ViUmVzb3VyY2UqLCBXZWJLaXRVUklSZXNw
b25zZSopOwogdm9pZCB3ZWJraXRXZWJSZXNvdXJjZU5vdGlmeVByb2dyZXNzKFdlYktpdFdlYlJl
c291cmNlKiwgZ3VpbnQ2NCBieXRlc1JlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggY2ViOTBkNzNkODMuLmIy
MzlhYzRlMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtMjM3NCwxMCArMjM3NCwxMCBAQCB2b2lkIHdlYmtpdFdlYlZp
ZXdQcmludEZyYW1lKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkZyYW1lUHJveHkqIGZyYW1l
KQogfQogI2VuZGlmCiAKLXZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCkKK3ZvaWQgd2Via2l0V2Vi
Vmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViRnJhbWVQ
cm94eSYgZnJhbWUsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVz
dCogcmVxdWVzdCkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXct
PnByaXY7Ci0gICAgYm9vbCBpc01haW5SZXNvdXJjZSA9IGZyYW1lLT5pc01haW5GcmFtZSgpICYm
ICFwcml2LT5tYWluUmVzb3VyY2U7CisgICAgYm9vbCBpc01haW5SZXNvdXJjZSA9IGZyYW1lLmlz
TWFpbkZyYW1lKCkgJiYgIXByaXYtPm1haW5SZXNvdXJjZTsKICAgICBXZWJLaXRXZWJSZXNvdXJj
ZSogcmVzb3VyY2UgPSB3ZWJraXRXZWJSZXNvdXJjZUNyZWF0ZShmcmFtZSwgcmVxdWVzdCwgaXNN
YWluUmVzb3VyY2UpOwogICAgIGlmIChpc01haW5SZXNvdXJjZSkKICAgICAgICAgcHJpdi0+bWFp
blJlc291cmNlID0gcmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCAzMGRmZjU3MDViOC4uZTA4
NjY4M2FjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNjksNyArNjksNyBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdNYWtlUG9saWN5RGVjaXNpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdFBvbGljeURlY2lz
aW9uVHlwZSwgVwogdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJnZXRDaGFuZ2VkKFdlYktpdFdl
YlZpZXcqLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhJiwgT3B0aW9uU2V0PFdl
YktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPik7CiB2b2lkIHdlYmtpdFdlYlZpZXdIYW5kbGVEb3du
bG9hZFJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6RG93bmxvYWRQcm94eSopOwogdm9p
ZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5Kik7Ci12b2lkIHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdlYktpdFdl
YlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZp
ZXIsIFdlYktpdFVSSVJlcXVlc3QqKTsKK3ZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0
YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIHVpbnQ2NF90IHJl
c291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3
UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJl
cXVlc3QqKTsKIFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJl
c291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogI2lm
IFBMQVRGT1JNKEdUSykK
</data>
<flag name="review"
          id="390005"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>