<?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>213885</bug_id>
          
          <creation_ts>2020-07-02 08:22:36 -0700</creation_ts>
          <short_desc>REGRESSION(r262680): [GTK] Crash in WebKit::DropTarget::didPerformAction</short_desc>
          <delta_ts>2020-07-07 06:57:47 -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>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1668250</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-07-02 08:22:36 -0700</bug_when>
    <thetext>I habitually click and drag text. This has long sometimes caused WebKit to crash (bug #190787, which I&apos;ve never been able to figure out), but now we have a new crash as well:

(gdb) bt full
#0  0x00007fb3fab2ba15 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
        set = 
            {__val = {0, 140410885067625, 93841847900496, 93842098070624, 0, 16, 140732286382400, 140410986429520, 140732286382616, 140732286382592, 0, 93842095324864, 140732286382464, 140410928956517, 93841852346096, 1}}
        pid = &lt;optimized out&gt;
        tid = &lt;optimized out&gt;
#1  0x00007fb3fab14855 in __GI_abort () at abort.c:79
        save_stage = 1
        act = 
          {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = {__val = {140404907110656, 140732286382816, 140732286382656, 1, 140410926886456, 0, 0, 0, 0, 4294967296, 93841848715248, 93841848715424, 93842096080304, 1, 140410986544751, 0}}, sa_flags = -1119520440, sa_restorer = 0x0}
        sigs = {__val = {32, 0 &lt;repeats 15 times&gt;}}
#2  0x00007fb3f75b9305 in WTF::Optional&lt;WebCore::DragOperation&gt;::operator*() &amp; (this=&lt;synthetic pointer&gt;)
    at DerivedSources/ForwardingHeaders/wtf/Optional.h:534
        page = &lt;optimized out&gt;
        operation = &lt;optimized out&gt;
#3  0x00007fb3f75b9305 in WebKit::DropTarget::didPerformAction() (this=0x7fb2bd457948)
    at ../Source/WebKit/UIProcess/API/gtk/DropTargetGtk3.cpp:220
        page = &lt;optimized out&gt;
        operation = &lt;optimized out&gt;
#4  0x00007fb3f76b70a8 in IPC::callMemberFunctionImpl&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect const&amp;, WebCore::IntRect const&amp;), std::tuple&lt;WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect, WebCore::IntRect&gt;, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul&gt;(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect const&amp;, WebCore::IntRect const&amp;), std::tuple&lt;WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect, WebCore::IntRect&gt;&amp;&amp;, std::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul&gt;)
    (args=..., function=
    (void (WebKit::WebPageProxy::*)(class WebKit::WebPageProxy * const, class WTF::Optional&lt;WebCore::DragOperation&gt;, enum WebCore::DragHandlingMethod, bool, unsigned int, const class WebCore::IntRect &amp;, const class WebCore::IntRect &amp;)) 0x7fb3f7972e90 &lt;WebKit::WebPageProxy::didPerformDragControllerAction(WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect const&amp;, WebCore::IntRect const&amp;)&gt;, object=0x7fb3e8051b00)
    at DerivedSources/ForwardingHeaders/wtf/Optional.h:386
        arguments = 
                    {&lt;WTF::constexpr_Optional_base&lt;std::tuple&lt;WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect, WebCore::IntRect&gt; &gt;&gt; = {init_ = true, storage_ = {dummy_ = 0 &apos;\000&apos;, value_ = std::tuple containing = {[1] = {&lt;WTF::constexpr_Optional_base&lt;WebCore::DragOperation&gt;&gt; = {init_ = false, storage_ = {dummy_ = 1 &apos;\001&apos;, value_ = WebCore::DragOperation::Copy}}, &lt;No data fields&gt;}, [2] = WebCore::DragHandlingMethod::EditPlainText, [3] = false, [4] = 0, [5] = {m_location = {m_x = 0, m_y = 0}, m_size = {m_width = 0, m_height = 0}}, [6] = {m_location = {m_x = 0, m_y = 0}, m_size = {m_width = 0, m_height = 0}}}}}, &lt;No data fields&gt;}
#5  0x00007fb3f76b70a8 in IPC::callMemberFunction&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect const&amp;, WebCore::IntRect const&amp;), std::tuple&lt;WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect, WebCore::IntRect&gt;, std::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul&gt; &gt;(std::tuple&lt;WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect, WebCore::IntRect&gt;&amp;&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect const&amp;, WebCore::IntRect const&amp;)) (function=
    (void (WebKit::WebPageProxy::*)(class WebKit::WebPageProxy * const, class WTF::Optional&lt;WebCore::DragOperation&gt;, enum WebCore::DragHandlingMethod, bool, unsigned int, const class WebCore::IntRect &amp;, const class WebCore::IntRect &amp;)) 0x7fb3f7972e90 &lt;WebKit::WebPageProxy::didPerformDragControllerAction(WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect const&amp;, WebCore::IntRect const&amp;)&gt;, object=0x7fb3e8051b00, args=...) at ../Source/WebKit/Platform/IPC/HandleMessage.h:47
        arguments = 
                    {&lt;WTF::constexpr_Optional_base&lt;std::tuple&lt;WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect, WebCore::IntRect&gt; &gt;&gt; = {init_ = true, storage_ = {dummy_ = 0 &apos;\000&apos;, value_ = std::tuple containing = {[1] = {&lt;WTF::constexpr_Optional_base&lt;WebCore::DragOperation&gt;&gt; = {init_ = false, storage_ = {dummy_ = 1 &apos;\001&apos;, value_ = WebCore::DragOperation::Copy}}, &lt;No data fields&gt;}, [2] = WebCore::DragHandlingMethod::EditPlainText, [3] = false, [4] = 0, [5] = {m_location = {m_x = 0, m_y = 0}, m_size = {m_width = 0, m_height = 0}}, [6] = {m_location = {m_x = 0, m_y = 0}, m_size = {m_width = 0, m_height = 0}}}}}, &lt;No data fields&gt;}
#6  0x00007fb3f76b70a8 in IPC::handleMessage&lt;Messages::WebPageProxy::DidPerformDragControllerAction, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect const&amp;, WebCore::IntRect const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect const&amp;, WebCore::IntRect const&amp;)) (decoder=..., object=object@entry=0x7fb3e8051b00, function=(void (WebKit::WebPageProxy::*)(class WebKit::WebPageProxy * const, class WTF::Optional&lt;WebCore::DragOperation&gt;, enum WebCore::DragHandlingMethod, bool, unsigned int, const class WebCore::IntRect &amp;, const class WebCore::IntRect &amp;)) 0x7fb3f7972e90 &lt;WebKit::WebPageProxy::didPerformDragControllerAction(WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect const&amp;, WebCore::IntRect const&amp;)&gt;) at ../Source/WebKit/Platform/IPC/HandleMessage.h:114
        arguments = {&lt;WTF::constexpr_Optional_base&lt;std::tuple&lt;WTF::Optional&lt;WebCore::DragOperation&gt;, WebCore::DragHandlingMethod, bool, unsigned int, WebCore::IntRect, WebCore::IntRect&gt; &gt;&gt; = {init_ = true, storage_ = {dummy_ = 0 &apos;\000&apos;, value_ = std::tuple containing = {[1] = {&lt;WTF::constexpr_Optional_base&lt;WebCore::DragOperation&gt;&gt; = {init_ = false, storage_ = {dummy_ = 1 &apos;\001&apos;, value_ = WebCore::DragOperation::Copy}}, &lt;No data fields&gt;}, [2] = WebCore::DragHandlingMethod::EditPlainText, [3] = false, [4] = 0, [5] = {m_location = {m_x = 0, m_y = 0}, m_size = {m_width = 0, m_height = 0}}, [6] = {m_location = {m_x = 0, m_y = 0}, m_size = {m_width = 0, m_height = 0}}}}}, &lt;No data fields&gt;}
#7  0x00007fb3f7698a2c in WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=0x7fb3e8051b00, connection=..., decoder=...) at DerivedSources/WebKit/WebPageProxyMessageReceiver.cpp:1553
        protectedThis = {static isRef = &lt;optimized out&gt;, m_ptr = 0x7fb3e8051b00}
#8  0x00007fb3f78b13a9 in IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=this@entry=0x7fb3e825c370, connection=..., decoder=...) at ../Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:123
        messageReceiver = &lt;optimized out&gt;
#9  0x00007fb3f7939add in WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=this@entry=0x7fb3e825c340, connection=..., decoder=...) at ../Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:209
#10 0x00007fb3f79836c7 in WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=0x7fb3e825c340, connection=..., decoder=...) at ../Source/WebKit/UIProcess/WebProcessProxy.cpp:772
#11 0x00007fb3f78ab98d in IPC::Connection::dispatchMessage(std::unique_ptr&lt;IPC::Decoder, std::default_delete&lt;IPC::Decoder&gt; &gt;) (this=0x7fb2bd473300, message=std::unique_ptr&lt;class IPC::Decoder&gt; = {...}) at /usr/include/c++/10.1.0/bits/unique_ptr.h:420
        isDispatchingMessageWhileWaitingForSyncReply = &lt;optimized out&gt;
        oldDidReceiveInvalidMessage = false
#12 0x00007fb3f78ac189 in IPC::Connection::dispatchIncomingMessages() (this=0x7fb2bd473300) at /usr/include/c++/10.1.0/bits/unique_ptr.h:171
        message = std::unique_ptr&lt;class IPC::Decoder&gt; = {get() = 0x0}
        messagesToProcess = 0
        __func__ = &quot;dispatchIncomingMessages&quot;
#13 0x00007fb3f6bb78e9 in WTF::Function&lt;void ()&gt;::operator()() const (this=&lt;synthetic pointer&gt;) at ../Source/WTF/wtf/Vector.h:341
        function = {m_callableWrapper = std::unique_ptr&lt;class WTF::Detail::CallableWrapperBase&lt;void&gt;&gt; = {get() = 0x7fb29072d330}}
        functionsHandled = 0
        functionsToHandle = 1
        didSuspendFunctions = false
#14 0x00007fb3f6bb78e9 in WTF::RunLoop::performWork() (this=0x7fb3f01f9000) at ../Source/WTF/wtf/RunLoop.cpp:140
        function = {m_callableWrapper = std::unique_ptr&lt;class WTF::Detail::CallableWrapperBase&lt;void&gt;&gt; = {get() = 0x7fb29072d330}}
        functionsHandled = 0
        functionsToHandle = 1
        didSuspendFunctions = false
#15 0x00007fb3f6c0558d in operator() (userData=&lt;optimized out&gt;, __closure=0x0) at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:68
#16 0x00007fb3f6c0558d in _FUN(gpointer) () at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:70
#17 0x00007fb3fae87e6f in g_main_dispatch (context=0x555941fdac20) at ../glib/gmain.c:3322
        dispatch = 0x7fb3f6c055a0 &lt;_FUN(GSource*, GSourceFunc, gpointer)&gt;
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x7fb3f01f9000
        callback = 0x7fb3f6c05580 &lt;_FUN(gpointer)&gt;
        cb_funcs = &lt;optimized out&gt;
        cb_data = 0x5559420f5180
        need_destroy = &lt;optimized out&gt;
        source = 0x5559420a7f50
        current = 0x555941fe3950
        i = 0
        __func__ = &quot;g_main_dispatch&quot;
#18 0x00007fb3fae87e6f in g_main_context_dispatch (context=0x555941fdac20) at ../glib/gmain.c:3987
#19 0x00007fb3fae88218 in g_main_context_iterate (context=context@entry=0x555941fdac20, block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at ../glib/gmain.c:4060
        max_priority = 2147483647
        timeout = 39
        some_ready = 1
        nfds = &lt;optimized out&gt;
        allocated_nfds = &lt;optimized out&gt;
        fds = 0x555950d6b3b0
#20 0x00007fb3fae882e3 in g_main_context_iteration (context=context@entry=0x555941fdac20, may_block=may_block@entry=1) at ../glib/gmain.c:4121
        retval = &lt;optimized out&gt;
#21 0x00007fb3fb0ab7cd in g_application_run (application=0x555942290230 [EphyShell], argc=-907004380, argv=&lt;optimized out&gt;) at ../gio/gapplication.c:2559
        arguments = 0x5559420e92a0
        status = 0
        context = 0x555941fdac20
        acquired_context = &lt;optimized out&gt;
        __func__ = &quot;g_application_run&quot;
#22 0x0000555940ea10b3 in main (argc=&lt;optimized out&gt;, argv=&lt;optimized out&gt;) at ../src/ephy-main.c:432
        option_context = &lt;optimized out&gt;
        option_group = &lt;optimized out&gt;
        error = 0x0
        user_time = 202242
        arbitrary_url = &lt;optimized out&gt;
        ctx = &lt;optimized out&gt;
        mode = &lt;optimized out&gt;
        status = &lt;optimized out&gt;
        flags = &lt;optimized out&gt;
        desktop_info = &lt;optimized out&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668285</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-07-02 10:36:52 -0700</bug_when>
    <thetext>The problem is that m_operation is not engaged (i.e. is not set), that causes the Optional to RELEASE_ASSERT() when it is dereferenced.

I haven&apos;t looked at this long enough to know if it&apos;s correct, but:

    if ((!operation &amp;&amp; !m_operation) || *operation == *m_operation)

The crash would surely not occur if this was an || check:

    if (!operation || !m_operation || *operation == *m_operation)

That said, it looks like m_operation is not needed at all in the GTK 3 case. It can probably just be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668581</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-07-03 08:15:40 -0700</bug_when>
    <thetext>OK I found a reproducer. Drag any file from nautilus into the web view. Crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669374</commentid>
    <comment_count>3</comment_count>
      <attachid>403681</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-07 06:30:19 -0700</bug_when>
    <thetext>Created attachment 403681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669385</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-07 06:57:47 -0700</bug_when>
    <thetext>Committed r264016: &lt;https://trac.webkit.org/changeset/264016&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403681</attachid>
            <date>2020-07-07 06:30:19 -0700</date>
            <delta_ts>2020-07-07 06:42:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-drop-crash.diff</filename>
            <type>text/plain</type>
            <size>2004</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTQ0OGJhY2M3MDk4Li42MzJhOTFlNjFiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjAtMDctMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjI2MjY4MCk6IFtHVEtdIENyYXNoIGluIFdl
YktpdDo6RHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBjb21wYXJlIGlmIG5ldyBvcGVyYXRpb24g
aXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgb25lLCB0aGUgPT0gb3BlcmF0b3Igb2YgT3B0aW9u
YWwgYWxyZWFkeSB0YWtlcyBjYXJlIG9mCisgICAgICAgIHZhbHVlcyBiZWluZyBudWxsb3B0Lgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkaWRQZXJmb3JtQWN0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BU
YXJnZXQ6OmRpZFBlcmZvcm1BY3Rpb24pOgorCiAyMDIwLTA3LTA2ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIENoYW5nZSB0
aGUgY29va2llcyBhY2NlcHQgcG9saWN5IHdoZW4gSVRQIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggODA5
MGVhYzdlNDEwLi5lZGE0OGE0MDg1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBE
cm9wVGFyZ2V0OjpkaWRQZXJmb3JtQWN0aW9uKCkKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICBh
dXRvIG9wZXJhdGlvbiA9IHBhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7Ci0gICAgaWYgKCgh
b3BlcmF0aW9uICYmICFtX29wZXJhdGlvbikgfHwgKm9wZXJhdGlvbiA9PSAqbV9vcGVyYXRpb24p
CisgICAgaWYgKG9wZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCmluZGV4IGRiMWVjNGZjYTI5Ny4uNTFjYTNl
N2I4MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGs0LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGlkUGVy
Zm9ybUFjdGlvbigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBw
YWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmICgoIW9wZXJhdGlvbiAmJiAhbV9v
cGVyYXRpb24pIHx8IG9wZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKKyAgICBpZiAob3BlcmF0aW9u
ID09IG1fb3BlcmF0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBtX29wZXJhdGlvbiA9IG9w
ZXJhdGlvbjsK
</data>
<flag name="review"
          id="419053"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>