<?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>105495</bug_id>
          
          <creation_ts>2012-12-19 21:42:34 -0800</creation_ts>
          <short_desc>[V8] More unstable NPObject* references for V8 script objects</short_desc>
          <delta_ts>2013-09-01 10:34:50 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          <dependson>106813</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Dempsky">mdempsky</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>andersca</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>795163</commentid>
    <comment_count>0</comment_count>
      <attachid>180276</attachid>
    <who name="Matthew Dempsky">mdempsky</who>
    <bug_when>2012-12-19 21:42:34 -0800</bug_when>
    <thetext>Created attachment 180276
Additional WebKit LayoutTests demonstrating unstable NPObject* values for V8 script objects

As a followup to https://bugs.webkit.org/show_bug.cgi?id=104921, attached is a patch that adds two more LayoutTests to demonstrate further cases where objects that are treated as equivalent by JavaScript (i.e., according to &apos;===&apos;) end up with distinct NPObject* values when passed to an NPAPI plugin.

The first test (embed-property-iframe-equality-2.html) tests where the same DOM object is passed to an NPAPI plugin from two different contexts (the main page and a child iframe).  Even though each reference is to the same DOM object, they get converted to distinct NPObject* values.

  - I believe this is due to npCreateV8ScriptObject only returning saved NPObject* values that match both v8Object and rootObject.  If I remove the second half of the &quot;v8npObject-&gt;v8Object == object &amp;&amp; v8npObject-&gt;rootObject == root&quot; test, then this test passes, but I&apos;m not sure that&apos;s a complete or correct fix.

The second test (embed-property-iframe-equality-3.html) tests where a DOM object attached to a child iframe (the child iframe&apos;s &apos;window&apos; object) is stashed in the NPAPI plugin, the iframe is removed (so the creation context goes away), and then two references to the same object are passed back into the NPAPI plugin.  Again, even though the references are to the same DOM object, they get converted to distinct NPObject* values.

  - I believe this is due to npCreateV8ScriptObject only saving NPObject* values for V8 objects that still have a &quot;V8PerContextData&quot;.  Once the iframe is gone, there&apos;s no V8PerContextData anymore, so each reference gets a completely new NPObject* value.  I suspect saving the data elsewhere or preventing the V8PerContextData from getting deleted when there are still live references to the CreationContext would fix this test, but I don&apos;t know for sure.

Both of these issues could adversely affect the GWT Developer Mode plugin just like 104921 did, so I hope they can be fixed, but I don&apos;t know of any users being affected by these issues at present.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795170</commentid>
    <comment_count>1</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-19 21:45:50 -0800</bug_when>
    <thetext>Attachment 180276 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/plugins/npruntime/embed-proper...&quot; exit_code: 1
Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:198:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 5 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>795192</commentid>
    <comment_count>2</comment_count>
      <attachid>180276</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-19 22:21:47 -0800</bug_when>
    <thetext>Comment on attachment 180276
Additional WebKit LayoutTests demonstrating unstable NPObject* values for V8 script objects

Attachment 180276 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15401886

New failing tests:
plugins/npruntime/embed-property-iframe-equality-2.html
plugins/npruntime/embed-property-iframe-equality-3.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795765</commentid>
    <comment_count>3</comment_count>
      <attachid>180403</attachid>
    <who name="Matthew Dempsky">mdempsky</who>
    <bug_when>2012-12-20 13:50:04 -0800</bug_when>
    <thetext>Created attachment 180403
Proof of concept fixes for new tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795770</commentid>
    <comment_count>4</comment_count>
    <who name="Matthew Dempsky">mdempsky</who>
    <bug_when>2012-12-20 13:59:40 -0800</bug_when>
    <thetext>I attached a patch that seems to fix both of these bugs, but I&apos;m not confident it doesn&apos;t introduce further issues.  It makes a few changes:

  1. It decouples V8PerContextData&apos;s lifetime from V8DOMWindowShell.  Instead, I changed V8PerContextData to keep a weak reference to its Context, and to delete itself when the context gets garbage collected.

  2. Instead of needing to save a DOMWindow* in the NPV8Object struct, I take advantage of the fact that npp-&gt;ndata is actually a PluginView*, and we can use that to get to the plugin element&apos;s Frame* instead.  (Tangentially, this fixes a TODO mentioned in NPV8Object.cpp.)  This means npCreateV8ScriptObject() no longer has any reason to worry about matching on rootObject when creating a NPObject*.

  3. The chromium port&apos;s public API exposes a &quot;v8::Handle&lt;v8::Value&gt; WebBindings::toV8Value(const NPVariant* variant)&quot; method that currently relies on NPV8Object&apos;s rootObject member and it doesn&apos;t accept an NPP argument.  I haven&apos;t found any evidence that this method is actually used by Chromium, so I think it should just be removed or an NPP argument added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795863</commentid>
    <comment_count>5</comment_count>
    <who name="Matthew Dempsky">mdempsky</who>
    <bug_when>2012-12-20 15:24:35 -0800</bug_when>
    <thetext>Hm, I&apos;m not certain I can actually rely on npp-&gt;ndata like that for two reasons: 1) A lot of places in the Chromium code base appear to call the WebBindings methods (which then forward to the _NPN_*() functions) with npp==NULL, and 2) Chromium seems to create an NPP object with ndata set to PluginInstance instead of PluginView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805316</commentid>
    <comment_count>6</comment_count>
    <who name="Matthew Dempsky">mdempsky</who>
    <bug_when>2013-01-11 09:22:51 -0800</bug_when>
    <thetext>Adam, any thoughts on these issues?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805375</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-11 10:28:43 -0800</bug_when>
    <thetext>&gt;   1. It decouples V8PerContextData&apos;s lifetime from V8DOMWindowShell.  Instead, I changed V8PerContextData to keep a weak reference to its Context, and to delete itself when the context gets garbage collected.

Wow!  I&apos;ve wanted to do that for a long time.

&gt;   2. Instead of needing to save a DOMWindow* in the NPV8Object struct, I take advantage of the fact that npp-&gt;ndata is actually a PluginView*, and we can use that to get to the plugin element&apos;s Frame* instead.  (Tangentially, this fixes a TODO mentioned in NPV8Object.cpp.)  This means npCreateV8ScriptObject() no longer has any reason to worry about matching on rootObject when creating a NPObject*.
&gt; 
&gt;   3. The chromium port&apos;s public API exposes a &quot;v8::Handle&lt;v8::Value&gt; WebBindings::toV8Value(const NPVariant* variant)&quot; method that currently relies on NPV8Object&apos;s rootObject member and it doesn&apos;t accept an NPP argument.  I haven&apos;t found any evidence that this method is actually used by Chromium, so I think it should just be removed or an NPP argument added.

Great!  Let&apos;s remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805376</commentid>
    <comment_count>8</comment_count>
      <attachid>180276</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-11 10:29:43 -0800</bug_when>
    <thetext>Comment on attachment 180276
Additional WebKit LayoutTests demonstrating unstable NPObject* values for V8 script objects

These tests look fine, but we&apos;ll probably want to land them with the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805381</commentid>
    <comment_count>9</comment_count>
      <attachid>180403</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-11 10:33:20 -0800</bug_when>
    <thetext>Comment on attachment 180403
Proof of concept fixes for new tests

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

&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.h:105
&gt; -    OwnPtr&lt;V8PerContextData&gt; m_perContextData;
&gt; +    V8PerContextData* m_perContextData;

I wonder if we can remove this member entirely.  If we need the V8PerContextData, we can get it from the m_context below.

&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:-89
&gt; -    m_perContextData.clear();

Can we 0 out m_perContextData at this point?

&gt; Source/WebCore/bindings/v8/V8PerContextData.cpp:83
&gt; +    delete perContextData;

You should also SetAlignedPointerInEmbedderData(v8ContextPerContextDataIndex, 0); here.  We don&apos;t want anyone accessing the perContextData after it is deleted.

&gt; Source/WebCore/bindings/v8/NPV8Object.cpp:64
&gt; +    return view-&gt;parentFrame();

Can this ever return 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805383</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-11 10:34:14 -0800</bug_when>
    <thetext>There&apos;s a lot of good stuff in this patch.  I would recommend splitting it into the three pieces you mention and landing them separately.  In particular, the change to the lifetime of V8PerContextData is something that might have wide-reaching effects, so it would be good to land that in isolation from the rest of these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805406</commentid>
    <comment_count>11</comment_count>
    <who name="Matthew Dempsky">mdempsky</who>
    <bug_when>2013-01-11 10:46:27 -0800</bug_when>
    <thetext>Okay, I&apos;ll do the lifetime patch first since that&apos;s the most worrying issue IMO from the GWT DevMode plugin point-of-view.

If I plan to stage the patches, should I file a new bug for each one (and mark them as blocking this one), or just attach them all to this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805416</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-11 10:55:09 -0800</bug_when>
    <thetext>&gt; If I plan to stage the patches, should I file a new bug for each one (and mark them as blocking this one), or just attach them all to this one?

We prefer to have one patch per bug.  Marking them as blocking this bug is a good idea.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805417</commentid>
    <comment_count>13</comment_count>
      <attachid>180403</attachid>
    <who name="Matthew Dempsky">mdempsky</who>
    <bug_when>2013-01-11 10:55:41 -0800</bug_when>
    <thetext>Comment on attachment 180403
Proof of concept fixes for new tests

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

&gt;&gt; Source/WebCore/bindings/v8/V8DOMWindowShell.h:105
&gt;&gt; +    V8PerContextData* m_perContextData;
&gt; 
&gt; I wonder if we can remove this member entirely.  If we need the V8PerContextData, we can get it from the m_context below.

I think so.

&gt;&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:-89
&gt;&gt; -    m_perContextData.clear();
&gt; 
&gt; Can we 0 out m_perContextData at this point?

Probably, but we can probably just get rid of it too like in V8DOMWindowShell.

&gt;&gt; Source/WebCore/bindings/v8/V8PerContextData.cpp:83
&gt;&gt; +    delete perContextData;
&gt; 
&gt; You should also SetAlignedPointerInEmbedderData(v8ContextPerContextDataIndex, 0); here.  We don&apos;t want anyone accessing the perContextData after it is deleted.

Okay, I&apos;ll fix that in the next patch.

&gt;&gt; Source/WebCore/bindings/v8/NPV8Object.cpp:64
&gt;&gt; +    return view-&gt;parentFrame();
&gt; 
&gt; Can this ever return 0?

No clue.

Like I mentioned in the bug, I&apos;m not actually sure about the PluginView stuff anymore, since in the Chromium tree a lot of functions are called with npp==NULL.

Also, in chrome/src/webkit/plugins/npapi/plugin_instance.cc, Chromium creates its own NPP object and sets npp-&gt;ndata to a webkit::npapi::PluginInstance*.  I don&apos;t really understand the out-of-process plugin stuff, so I&apos;m not sure what npp-&gt;ndata actually points to here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923515</commentid>
    <comment_count>14</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-01 10:34:50 -0700</bug_when>
    <thetext>V8 is gone.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180276</attachid>
            <date>2012-12-19 21:42:34 -0800</date>
            <delta_ts>2013-01-11 10:29:43 -0800</delta_ts>
            <desc>Additional WebKit LayoutTests demonstrating unstable NPObject* values for V8 script objects</desc>
            <filename>more-npobject-equality-tests.diff</filename>
            <type>text/plain</type>
            <size>4264</size>
            <attacher name="Matthew Dempsky">mdempsky</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBs
dWdJbi9QbHVnaW5PYmplY3QuY3BwCShyZXZpc2lvbiAxMzc5MzUpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk1LDYgKzE5NSw3IEBACiAgICAgSURfSU5WQUxJREFURV9SRUNULAogICAgIElEX09C
SkVDVFNfQVJFX1NBTUUsCiAgICAgSURfVEVTVF9ERUxFVEVfV0lUSElOX0lOVk9LRSwKKyAgICBJ
RF9URVNUX1NBTUVfQVNfUkVNRU1CRVJFRF9PQkpFQ1QsCiAgICAgTlVNX01FVEhPRF9JREVOVElG
SUVSUwogfTsKIApAQCAtMjM4LDcgKzIzOSw4IEBACiAgICAgIm5vcm1hbGl6ZSIsCiAgICAgImlu
dmFsaWRhdGVSZWN0IiwKICAgICAib2JqZWN0c0FyZVNhbWUiLAotICAgICJ0ZXN0RGVsZXRlV2l0
aGluSW52b2tlIgorICAgICJ0ZXN0RGVsZXRlV2l0aGluSW52b2tlIiwKKyAgICAidGVzdFNhbWVB
c1JlbWVtYmVyZWRPYmplY3QiCiB9OwogCiBzdGF0aWMgTlBVVEY4KiBjcmVhdGVDU3RyaW5nRnJv
bU5QVmFyaWFudChjb25zdCBOUFZhcmlhbnQqIHZhcmlhbnQpCkBAIC0xMTYxLDYgKzExNjMsMTAg
QEAKICAgICAgICAgY2FsbERlbGV0ZVBsdWdpbihoZWFkZXIsIG5hbWUsIHBsdWdpbk1ldGhvZElk
ZW50aWZpZXJzW0lEX1RFU1RfREVMRVRFX1dJVEhJTl9JTlZPS0VdKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQorICAgIGlmIChuYW1lID09IHBsdWdpbk1ldGhvZElkZW50aWZpZXJzW0lE
X1RFU1RfU0FNRV9BU19SRU1FTUJFUkVEX09CSkVDVF0pIHsKKyAgICAgICAgQk9PTEVBTl9UT19O
UFZBUklBTlQoTlBWQVJJQU5UX1RPX09CSkVDVChhcmdzWzBdKSA9PSBwbHVnaW4tPnJlbWVtYmVy
ZWRPYmplY3QsICpyZXN1bHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL25wcnVudGltZS9lbWJl
ZC1wcm9wZXJ0eS1pZnJhbWUtZXF1YWxpdHktMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsdWdpbnMvbnBydW50aW1lL2VtYmVkLXByb3BlcnR5LWlmcmFtZS1lcXVhbGl0eS0yLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL25wcnVudGltZS9lbWJlZC1w
cm9wZXJ0eS1pZnJhbWUtZXF1YWxpdHktMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3
IEBACis8Ym9keT4KKzxwPlRlc3QgZXF1YWxpdHkgb2YgcGx1Z2luIG9iamVjdCBwcm9wZXJ0aWVz
LjwvcD4KKzxlbWJlZCBpZD0icGx1Z2luIiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0
LW5ldHNjYXBlIj48YnI+Cis8aWZyYW1lIHNyY2RvYz0iPHNjcmlwdD5wYXJlbnQucGx1Z2luLnJl
bWVtYmVyKHBhcmVudC5kb2N1bWVudCk8L3NjcmlwdD4iPjwvaWZyYW1lPgorPGRpdj5TZW5kIHR3
byByZWZlcmVuY2VzIG9mIGEgSmF2YVNjcmlwdCBvYmplY3QgdG8gdGhlIHBsdWdpbiBmb3IgaWRl
bnRpdHkgY29tcGFyaXNvbiBpbiBDKysuPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPlVOS05PV048
L2Rpdj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgdmFy
IHBsdWdpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbHVnaW4nKTsKKyAgICB2YXIgcGFz
cyA9IChwbHVnaW4uZ2V0UmVtZW1iZXJlZE9iamVjdCgpID09PSBkb2N1bWVudCkgPT09IHBsdWdp
bi50ZXN0U2FtZUFzUmVtZW1iZXJlZE9iamVjdChkb2N1bWVudCk7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLnRleHRDb250ZW50ID0gcGFzcyA/ICJQQVNTIiA6ICJGQUlM
IjsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9ucHJ1
bnRpbWUvZW1iZWQtcHJvcGVydHktaWZyYW1lLWVxdWFsaXR5LTItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL2VtYmVkLXByb3BlcnR5LWlm
cmFtZS1lcXVhbGl0eS0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsdWdpbnMvbnBydW50aW1lL2VtYmVkLXByb3BlcnR5LWlmcmFtZS1lcXVhbGl0eS0yLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUZXN0IGVxdWFsaXR5IG9mIHBs
dWdpbiBvYmplY3QgcHJvcGVydGllcy4KKworCisKK1NlbmQgdHdvIHJlZmVyZW5jZXMgb2YgYSBK
YXZhU2NyaXB0IG9iamVjdCB0byB0aGUgcGx1Z2luIGZvciBpZGVudGl0eSBjb21wYXJpc29uIGlu
IEMrKy4KK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL2VtYmVkLXBy
b3BlcnR5LWlmcmFtZS1lcXVhbGl0eS0zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGx1Z2lucy9ucHJ1bnRpbWUvZW1iZWQtcHJvcGVydHktaWZyYW1lLWVxdWFsaXR5LTMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL2VtYmVkLXByb3Bl
cnR5LWlmcmFtZS1lcXVhbGl0eS0zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAK
Kzxib2R5PgorPGVtYmVkIGlkPSJwbHVnaW4iIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRl
c3QtbmV0c2NhcGUiPjxicj4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmNkb2M9IjxzY3JpcHQ+cGFy
ZW50LnBsdWdpbi5yZW1lbWJlcih3aW5kb3cpPC9zY3JpcHQ+Ij48L2lmcmFtZT4KKzxkaXY+U2Vu
ZCB0d28gcmVmZXJlbmNlcyBvZiBhIEphdmFTY3JpcHQgb2JqZWN0IHRvIHRoZSBwbHVnaW4gZm9y
IGlkZW50aXR5IGNvbXBhcmlzb24gaW4gQysrLjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij5VTktO
T1dOPC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisK
K3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgcGx1Z2luID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3BsdWdpbicpOworICAgIHZhciBvYmogPSBwbHVnaW4uZ2V0UmVtZW1i
ZXJlZE9iamVjdCgpOworICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdm
cmFtZScpOworICAgIGZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZnJhbWUpOworICAgIHZh
ciBwYXNzID0gKG9iaiA9PT0gb2JqKSA9PT0gcGx1Z2luLm9iamVjdHNBcmVTYW1lKG9iaiwgb2Jq
KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykudGV4dENvbnRlbnQgPSBw
YXNzID8gJ1BBU1MnIDogJ0ZBSUwnOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6
IExheW91dFRlc3RzL3BsdWdpbnMvbnBydW50aW1lL2VtYmVkLXByb3BlcnR5LWlmcmFtZS1lcXVh
bGl0eS0zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL25w
cnVudGltZS9lbWJlZC1wcm9wZXJ0eS1pZnJhbWUtZXF1YWxpdHktMy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL25wcnVudGltZS9lbWJlZC1wcm9wZXJ0
eS1pZnJhbWUtZXF1YWxpdHktMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MyBAQAorCitTZW5kIHR3byByZWZlcmVuY2VzIG9mIGEgSmF2YVNjcmlwdCBvYmplY3QgdG8gdGhl
IHBsdWdpbiBmb3IgaWRlbnRpdHkgY29tcGFyaXNvbiBpbiBDKysuCitQQVNTCg==
</data>
<flag name="commit-queue"
          id="197498"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180403</attachid>
            <date>2012-12-20 13:50:04 -0800</date>
            <delta_ts>2013-01-11 10:55:41 -0800</delta_ts>
            <desc>Proof of concept fixes for new tests</desc>
            <filename>proof-of-concept-fixes.diff</filename>
            <type>text/plain</type>
            <size>10182</size>
            <attacher name="Matthew Dempsky">mdempsky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmgJ
KHJldmlzaW9uIDEzNzkzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29u
dGV4dERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsOSBAQAogCiBjbGFzcyBWOFBl
ckNvbnRleHREYXRhIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxWOFBlckNvbnRl
eHREYXRhPiBjcmVhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IGNvbnRleHQpCisgICAg
c3RhdGljIFY4UGVyQ29udGV4dERhdGEqIGNyZWF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4
dD4gY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVjhQZXJDb250
ZXh0RGF0YShjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBuZXcgVjhQZXJDb250ZXh0RGF0YShj
b250ZXh0KTsKICAgICB9CiAKICAgICB+VjhQZXJDb250ZXh0RGF0YSgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCShyZXZpc2lvbiAxMzc5
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAg
IFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1fd29ybGQ7CiAKLSAgICBPd25QdHI8VjhQZXJDb250
ZXh0RGF0YT4gbV9wZXJDb250ZXh0RGF0YTsKKyAgICBWOFBlckNvbnRleHREYXRhKiBtX3BlckNv
bnRleHREYXRhOwogCiAgICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0
OwogICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9nbG9iYWw7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMTM3OTM1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDYgQEAK
IAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkaXNwb3NlQ29udGV4dCgpCiB7Ci0gICAg
bV9wZXJDb250ZXh0RGF0YS5jbGVhcigpOwogICAgIG1fY29udGV4dC5jbGVhcigpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNw
cAkocmV2aXNpb24gMTM3OTM1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJD
b250ZXh0RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIHZvaWQgVjhQ
ZXJDb250ZXh0RGF0YTo6ZGlzcG9zZSgpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwotICAgIG1fY29udGV4dC0+U2V0QWxpZ25lZFBvaW50ZXJJbkVtYmVkZGVyRGF0YSh2OENv
bnRleHRQZXJDb250ZXh0RGF0YUluZGV4LCAwKTsKKyAgICAvLyBtX2NvbnRleHQtPlNldEFsaWdu
ZWRQb2ludGVySW5FbWJlZGRlckRhdGEodjhDb250ZXh0UGVyQ29udGV4dERhdGFJbmRleCwgMCk7
CiAKICAgICB7CiAgICAgICAgIFdyYXBwZXJCb2lsZXJwbGF0ZU1hcDo6aXRlcmF0b3IgaXQgPSBt
X3dyYXBwZXJCb2lsZXJwbGF0ZXMuYmVnaW4oKTsKQEAgLTc3LDYgKzc3LDEyIEBACiAgICAgbV8j
I25hbWUjI1Byb3RvdHlwZS5zZXQocHJvdG90eXBlVmFsdWUpOyBcCiB9CiAKK3N0YXRpYyB2b2lk
IGRlbGV0ZVY4UGVyQ29udGV4dERhdGEodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwg
dm9pZCogY29udGV4dCkKK3sKKyAgICBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSA9
IHN0YXRpY19jYXN0PFY4UGVyQ29udGV4dERhdGEqPihjb250ZXh0KTsKKyAgICBkZWxldGUgcGVy
Q29udGV4dERhdGE7Cit9CisKIGJvb2wgVjhQZXJDb250ZXh0RGF0YTo6aW5pdCgpCiB7CiAgICAg
bV9jb250ZXh0LT5TZXRBbGlnbmVkUG9pbnRlckluRW1iZWRkZXJEYXRhKHY4Q29udGV4dFBlckNv
bnRleHREYXRhSW5kZXgsIHRoaXMpOwpAQCAtODgsNiArOTQsOCBAQAogICAgIFY4X1NUT1JFX1BS
SU1PUkRJQUwoZXJyb3IsIEVycm9yKTsKICAgICBWOF9TVE9SRV9QUklNT1JESUFMKG9iamVjdCwg
T2JqZWN0KTsKIAorICAgIG1fY29udGV4dC5NYWtlV2Vhayh0aGlzLCBkZWxldGVWOFBlckNvbnRl
eHREYXRhKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkocmV2aXNpb24gMTM3OTM1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIk5QT2JqZWN0V3JhcHBlci5o
IgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIK
ICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKQEAgLTU1LDEzICs1NiwxNyBAQAogICAg
IHJldHVybiAmdHlwZUluZm87CiB9CiAKK3N0YXRpYyBGcmFtZSogdG9GcmFtZShOUFAgbnBwKQor
eworICAgIEFTU0VSVChucHApOworICAgIEFTU0VSVChucHAtPm5kYXRhKTsKKyAgICBQbHVnaW5W
aWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KG5wcC0+bmRhdGEpOworICAgIHJl
dHVybiB2aWV3LT5wYXJlbnRGcmFtZSgpOworfQorCiBzdGF0aWMgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiB0b1Y4Q29udGV4dChOUFAgbnBwLCBOUE9iamVjdCogbnBPYmplY3QpCiB7Ci0gICAgVjhO
UE9iamVjdCogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4obnBPYmplY3Qp
OwotICAgIERPTVdpbmRvdyogd2luZG93ID0gb2JqZWN0LT5yb290T2JqZWN0OwotICAgIGlmICgh
d2luZG93IHx8ICF3aW5kb3ctPmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQotICAgICAg
ICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0PigpOwotICAgIHJldHVybiBTY3JpcHRDb250
cm9sbGVyOjptYWluV29ybGRDb250ZXh0KG9iamVjdC0+cm9vdE9iamVjdC0+ZnJhbWUoKSk7Cisg
ICAgcmV0dXJuIFNjcmlwdENvbnRyb2xsZXI6Om1haW5Xb3JsZENvbnRleHQodG9GcmFtZShucHAp
KTsKIH0KIAogLy8gRklYTUU6IENvbW1lbnRzIG9uIHdoeSB1c2UgbWFsbG9jIGFuZCBmcmVlLgpA
QCAtMTU1LDIwICsxNjAsMTggQEAKICAgICAgICAgICAgIFY4TlBPYmplY3RWZWN0b3ImIG9iamVj
dHMgPSBpdGVyLT52YWx1ZTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBvYmplY3RzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgICAgIFY4TlBPYmpl
Y3QqIHY4bnBPYmplY3QgPSBvYmplY3RzLmF0KGluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAo
djhucE9iamVjdC0+cm9vdE9iamVjdCA9PSByb290KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVCh2OG5wT2JqZWN0LT52OE9iamVjdCA9PSBvYmplY3QpOworICAgICAgICAgICAgICAgIGlm
ICh2OG5wT2JqZWN0LT52OE9iamVjdCA9PSBvYmplY3QpIHsKICAgICAgICAgICAgICAgICAgICAg
X05QTl9SZXRhaW5PYmplY3QoJnY4bnBPYmplY3QtPm9iamVjdCk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE5QT2JqZWN0Kj4odjhucE9iamVjdCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgaXRlciA9IHY4TlBPYmplY3RNYXAtPnNldCh2OE9iamVjdEhhc2gsIFY4TlBPYmplY3RWZWN0
b3IoKSkuaXRlcmF0b3I7Ci0gICAgICAgICAgICBvYmplY3RWZWN0b3IgPSAmaXRlci0+dmFsdWU7
CiAgICAgICAgIH0KKyAgICAgICAgb2JqZWN0VmVjdG9yID0gJml0ZXItPnZhbHVlOwogICAgIH0K
ICAgICBWOE5QT2JqZWN0KiB2OG5wT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0
Kj4oX05QTl9DcmVhdGVPYmplY3QobnBwLCAmVjhOUE9iamVjdENsYXNzKSk7CiAgICAgdjhucE9i
amVjdC0+djhPYmplY3QgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KG9iamVjdCk7
Ci0gICAgdjhucE9iamVjdC0+cm9vdE9iamVjdCA9IHJvb3Q7CiAKICAgICBpZiAob2JqZWN0VmVj
dG9yKQogICAgICAgICBvYmplY3RWZWN0b3ItPmFwcGVuZCh2OG5wT2JqZWN0KTsKQEAgLTIwNiw3
ICsyMDksNiBAQAogICAgIH0KIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAg
ICAvLyBGSVhNRTogc2hvdWxkIHVzZSB0aGUgcGx1Z2luJ3Mgb3duZXIgZnJhbWUgYXMgdGhlIHNl
Y3VyaXR5IGNvbnRleHQuCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHRv
VjhDb250ZXh0KG5wcCwgbnBPYmplY3QpOwogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI0LDcgKzIyNiw3IEBACiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBGcmFtZSogZnJhbWUgPSB2OE5wT2JqZWN0LT5yb290T2JqZWN0
LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IHRvRnJhbWUobnBwKTsKICAgICBBU1NFUlQo
ZnJhbWUpOwogCiAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gb2JqZWN0LgpAQCAtMjc1LDcgKzI3
Nyw3IEBACiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVzdWx0T2JqZWN0OwogICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbih2ODo6RnVuY3Rpb246OkNhc3QoKmZ1bmN0aW9u
T2JqZWN0KSk7CiAgICAgaWYgKCFmdW5jdGlvbi0+SXNOdWxsKCkpIHsKLSAgICAgICAgRnJhbWUq
IGZyYW1lID0gdjhOcE9iamVjdC0+cm9vdE9iamVjdC0+ZnJhbWUoKTsKKyAgICAgICAgRnJhbWUq
IGZyYW1lID0gdG9GcmFtZShucHApOwogICAgICAgICBBU1NFUlQoZnJhbWUpOwogCiAgICAgICAg
IE93bkFycmF5UHRyPHY4OjpIYW5kbGU8djg6OlZhbHVlPiA+IGFyZ3YgPSBjcmVhdGVWYWx1ZUxp
c3RGcm9tVmFyaWFudEFyZ3MoYXJndW1lbnRzLCBhcmd1bWVudENvdW50LCBucE9iamVjdCk7CkBA
IC0zMjQsOCArMzI2LDcgQEAKICAgICBpZiAoIXBvcHVwc0FsbG93ZWQpCiAgICAgICAgIGZpbGVu
YW1lID0gIm5wc2NyaXB0IjsKIAotICAgIFY4TlBPYmplY3QqIHY4TnBPYmplY3QgPSByZWludGVy
cHJldF9jYXN0PFY4TlBPYmplY3QqPihucE9iamVjdCk7Ci0gICAgRnJhbWUqIGZyYW1lID0gdjhO
cE9iamVjdC0+cm9vdE9iamVjdC0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSB0b0ZyYW1l
KG5wcCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKIAogICAgIFN0cmluZyBzY3JpcHQgPSBTdHJpbmc6
OmZyb21VVEY4KG5wU2NyaXB0LT5VVEY4Q2hhcmFjdGVycywgbnBTY3JpcHQtPlVURjhMZW5ndGgp
OwpAQCAtMzk0LDcgKzM5NSw3IEBACiAKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBv
Ymoob2JqZWN0LT52OE9iamVjdCk7CiAgICAgICAgIG9iai0+U2V0KG5wSWRlbnRpZmllclRvVjhJ
ZGVudGlmaWVyKHByb3BlcnR5TmFtZSksCi0gICAgICAgICAgICAgICAgIGNvbnZlcnROUFZhcmlh
bnRUb1Y4T2JqZWN0KHZhbHVlLCBvYmplY3QtPnJvb3RPYmplY3QtPmZyYW1lKCktPnNjcmlwdCgp
LT53aW5kb3dTY3JpcHROUE9iamVjdCgpKSk7CisgICAgICAgICAgICAgICAgIGNvbnZlcnROUFZh
cmlhbnRUb1Y4T2JqZWN0KHZhbHVlLCB0b0ZyYW1lKG5wcCktPnNjcmlwdCgpLT53aW5kb3dTY3Jp
cHROUE9iamVjdCgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNTczLDcg
KzU3NCw3IEBACiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdE9iamVjdDsKICAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGN0b3Iodjg6OkZ1bmN0aW9uOjpDYXN0KCpj
dG9yT2JqKSk7CiAgICAgICAgIGlmICghY3Rvci0+SXNOdWxsKCkpIHsKLSAgICAgICAgICAgIEZy
YW1lKiBmcmFtZSA9IG9iamVjdC0+cm9vdE9iamVjdC0+ZnJhbWUoKTsKKyAgICAgICAgICAgIEZy
YW1lKiBmcmFtZSA9IHRvRnJhbWUobnBwKTsKICAgICAgICAgICAgIEFTU0VSVChmcmFtZSk7CiAg
ICAgICAgICAgICBPd25BcnJheVB0cjx2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gPiBhcmd2ID0gY3Jl
YXRlVmFsdWVMaXN0RnJvbVZhcmlhbnRBcmdzKGFyZ3VtZW50cywgYXJndW1lbnRDb3VudCwgbnBP
YmplY3QpOwogICAgICAgICAgICAgcmVzdWx0T2JqZWN0ID0gVjhPYmplY3RDb25zdHJ1Y3Rvcjo6
bmV3SW5zdGFuY2VJbkRvY3VtZW50KGN0b3IsIGFyZ3VtZW50Q291bnQsIGFyZ3YuZ2V0KCksIGZy
YW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDEzNzkz
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgIFdvcmtlckNvbnRl
eHQqIG1fd29ya2VyQ29udGV4dDsKICAgICAgICAgdjg6Oklzb2xhdGUqIG1faXNvbGF0ZTsKICAg
ICAgICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwotICAgICAgICBP
d25QdHI8VjhQZXJDb250ZXh0RGF0YT4gbV9wZXJDb250ZXh0RGF0YTsKKyAgICAgICAgVjhQZXJD
b250ZXh0RGF0YSogbV9wZXJDb250ZXh0RGF0YTsKICAgICAgICAgU3RyaW5nIG1fZGlzYWJsZUV2
YWxQZW5kaW5nOwogICAgICAgICBPd25QdHI8RE9NRGF0YVN0b3JlPiBtX2RvbURhdGFTdG9yZTsK
ICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvbnBydW50aW1lLmNwcAkocmV2aXNpb24gMTM3OTM1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI2LDEz
ICs0MjYsNiBAQAogICAgICAgICAgICAgc2V0LT5yZW1vdmUoc3ViX29iamVjdCk7CiAgICAgICAg
ICAgICBsaXZlT2JqZWN0TWFwKCkucmVtb3ZlKHN1Yl9vYmplY3QpOwogCi0gICAgICAgICAgICAv
LyBTY3JpcHQgb2JqZWN0cyBob2xkIGEgcmVmZXJuY2UgdG8gdGhlaXIgRE9NV2luZG93Kiwgd2hp
Y2ggaXMgZ29pbmcgYXdheSBpZgotICAgICAgICAgICAgLy8gd2UncmUgdW5yZWdpc3RlcmluZyB0
aGUgYXNzb2NpYXRlZCBvd25lciBOUE9iamVjdC4gQ2xlYXIgaXQgb3V0LgotICAgICAgICAgICAg
aWYgKHN1Yl9vYmplY3QtPl9jbGFzcyA9PSBucFNjcmlwdE9iamVjdENsYXNzKSB7Ci0gICAgICAg
ICAgICAgICAgVjhOUE9iamVjdCogdjhucE9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9i
amVjdCo+KHN1Yl9vYmplY3QpOwotICAgICAgICAgICAgICAgIHY4bnBPYmplY3QtPnJvb3RPYmpl
Y3QgPSAwOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIEpTIHJl
ZmVyZW5jZXMgdG8gdGhlIG9iamVjdC4KICAgICAgICAgICAgIGZvcmdldFY4T2JqZWN0Rm9yTlBP
YmplY3Qoc3ViX29iamVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05Q
VjhPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4
T2JqZWN0LmgJKHJldmlzaW9uIDEzNzkzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L05QVjhPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNiBAQAogc3RydWN0IFY4
TlBPYmplY3QgewogICAgIE5QT2JqZWN0IG9iamVjdDsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB2OE9iamVjdDsKLSAgICBET01XaW5kb3cqIHJvb3RPYmplY3Q7CiB9OwogCiBzdHJ1
Y3QgUHJpdmF0ZUlkZW50aWZpZXIgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAJKHJldmlzaW9uIDEzNzkzNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDcsOCArMTA3LDYgQEAKIAogdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpkaXNwb3NlQ29udGV4
dCgpCiB7Ci0gICAgbV9wZXJDb250ZXh0RGF0YS5jbGVhcigpOwotCiAgICAgaWYgKG1fY29udGV4
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkJpbmRpbmdzLmNwcAkocmV2aXNpb24gMTM3OTM1KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQs
NiArMzk0LDExIEBACiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJCaW5kaW5nczo6dG9WOFZh
bHVlKGNvbnN0IE5QVmFyaWFudCogdmFyaWFudCkKIHsKKyNpZiAxCisgICAgLy8gWFhYKG1kZW1w
c2t5KTogSSBkb24ndCB0aGluayBDaHJvbWl1bSBjYWxscyB0aGlzIGZ1bmN0aW9uLiAgSXQgc2hv
dWxkIGJlIHJlbW92ZWQuCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyNlbHNlCisKICAg
ICBpZiAodmFyaWFudC0+dHlwZSA9PSBOUFZhcmlhbnRUeXBlX09iamVjdCkgewogICAgICAgICBO
UE9iamVjdCogb2JqZWN0ID0gTlBWQVJJQU5UX1RPX09CSkVDVCgqdmFyaWFudCk7CiAgICAgICAg
IGlmIChvYmplY3QtPl9jbGFzcyAhPSBucFNjcmlwdE9iamVjdENsYXNzKQpAQCAtNDA0LDYgKzQw
OSw3IEBACiAgICAgLy8gU2FmZSB0byBwYXNzIDAgc2luY2Ugd2UgaGF2ZSBjaGVja2VkIHRoZSBz
Y3JpcHQgb2JqZWN0IGNsYXNzIHRvIG1ha2Ugc3VyZSB0aGUKICAgICAvLyBhcmd1bWVudCBpcyBh
IHByaW1pdGl2ZSB2OCB0eXBlLgogICAgIHJldHVybiBjb252ZXJ0TlBWYXJpYW50VG9WOE9iamVj
dCh2YXJpYW50LCAwKTsKKyNlbmRpZgogfQogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>