<?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>93937</bug_id>
          
          <creation_ts>2012-08-13 23:58:33 -0700</creation_ts>
          <short_desc>Web Inspector: Calling getEventListeners() on element with malformed javascript event listeners crashes</short_desc>
          <delta_ts>2012-08-15 01:13:30 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="Alice Boxhall">aboxhall</reporter>
          <assigned_to name="Andrey Kosyakov">caseq</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694572</commentid>
    <comment_count>0</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2012-08-13 23:58:33 -0700</bug_when>
    <thetext>Calling getEventListeners() on an element with malformed javascript as an event listener causes the page to crash.

To reproduce: load the attached file, and call getEventListeners(document.body.children[0]) from the javascript console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694574</commentid>
    <comment_count>1</comment_count>
      <attachid>158236</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2012-08-13 23:58:59 -0700</bug_when>
    <thetext>Created attachment 158236
Test file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694578</commentid>
    <comment_count>2</comment_count>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2012-08-14 00:00:26 -0700</bug_when>
    <thetext>Chrome stack trace:

#
# Fatal error in ../../v8/src/handles-inl.h, line 64
# CHECK(location_ != __null) failed
#


==== Stack trace ============================================

Security context: 0x32527351 &lt;String[16]: http://localhost&gt;
    1: getEventListeners [0x32408091 &lt;undefined&gt;:1049] (this=0x327a649d &lt;a CommandLineAPIImpl&gt;#0#,node=0x427c5889 &lt;an HTMLDivElement&gt;#1#)
    5: getEventListeners [native v8natives.js:1597] (this=0x427d6565 &lt;a CommandLineAPI&gt;#2#)
    6: arguments adaptor frame: 1-&gt;0
    7: /* anonymous */ [0x32408091 &lt;undefined&gt;:2] (this=0x3271b25d &lt;JS Global Object&gt;#3#)
    8: eval [native v8natives.js:170] (this=0x3271b25d &lt;JS Global Object&gt;#3#,a=0x427d804d &lt;String[122]\: with ((window &amp;&amp; window.console &amp;&amp; window.console._commandLineAPI) || {}) {\ngetEventListeners(document.body.children[0])\n}&gt;)
    9: _evaluateOn [0x32408091 &lt;undefined&gt;:450] (this=0x42708129 &lt;JS Object&gt;#4#,evalFunction=0x32714fe5 &lt;JS Function eval&gt;#5#,object=0x3271b25d &lt;JS Global Object&gt;#3#,objectGroup=0x35812271 &lt;String[7]: console&gt;,expression=0x427d804d &lt;String[122]\: with ((window &amp;&amp; window.console &amp;&amp; window.console._commandLineAPI) || {}) {\ngetEventListeners(document.body.children[0])\n}&gt;,isEvalOnCallFrame=0x324080c1 &lt;false&gt;,injectCommandLineAPI=0x324080b1 &lt;true&gt;)
   10: _evaluateAndWrap [0x32408091 &lt;undefined&gt;:409] (this=0x42708129 &lt;JS Object&gt;#4#,evalFunction=0x32714fe5 &lt;JS Function eval&gt;#5#,object=0x3271b25d &lt;JS Global Object&gt;#3#,expression=0x427d653d &lt;String[44]: getEventListeners(document.body.children[0])&gt;,objectGroup=0x35812271 &lt;String[7]: console&gt;,isEvalOnCallFrame=0x324080c1 &lt;false&gt;,injectCommandLineAPI=0x324080b1 &lt;true&gt;,returnByValue=0x324080c1 &lt;false&gt;)
   11: evaluate [0x32408091 &lt;undefined&gt;:345] (this=0x42708129 &lt;JS Object&gt;#4#,expression=0x427d653d &lt;String[44]: getEventListeners(document.body.children[0])&gt;,objectGroup=0x35812271 &lt;String[7]: console&gt;,injectCommandLineAPI=0x324080b1 &lt;true&gt;,returnByValue=0x324080c1 &lt;false&gt;)

==== Details ================================================

[1]: getEventListeners [0x32408091 &lt;undefined&gt;:1049] (this=0x327a649d &lt;a CommandLineAPIImpl&gt;#0#,node=0x427c5889 &lt;an HTMLDivElement&gt;#1#) {
  // expression stack (top to bottom)
  [02] : 0x327922f9 &lt;JS Function getEventListeners&gt;#6#
  [01] : 0x427c5889 &lt;an HTMLDivElement&gt;#1#
  [00] : 0x427082ad &lt;an InjectedScriptHost&gt;#7#
--------- s o u r c e   c o d e ---------
function (node)?    {?        return InjectedScriptHost.getEventListeners(node);?    }
-----------------------------------------
}

[5]: getEventListeners [native v8natives.js:1597] (this=0x427d6565 &lt;a CommandLineAPI&gt;#2#) {
  // stack-allocated locals
  var arguments = 0x427d84bd &lt;an Arguments&gt;#8#
  var d = 1
  var g = 0x32408091 &lt;undefined&gt;
  var h = 0x32408091 &lt;undefined&gt;
  var c = 0x427d84d9 &lt;JS Array[2]&gt;#9#
  var f = 0x32408091 &lt;undefined&gt;
  var e = 0x32408091 &lt;undefined&gt;
  // expression stack (top to bottom)
  [11] : 1
  [10] : 0
  [09] : 0x427d84bd &lt;an Arguments&gt;#8#
  [08] : 0x327a649d &lt;a CommandLineAPIImpl&gt;#0#
  [07] : 0x327b26f9 &lt;JS Function&gt;#10#
--------- s o u r c e   c o d e ---------
function (){??&quot;use strict&quot;;???if(%_IsConstructCall()){?return %NewObjectFromBound(b);?}?var c=%BoundFunctionGetBindings(b);??var d=%_ArgumentsLength();?if(d==0){?return %Apply(c[0],c[1],c,2,c.length-2);?}?if(c.length===2){?return %Apply(c[0],c[1],arguments,0,d);?}?var e=c.length-2;?var f=new InternalArray(e+...

-----------------------------------------
}

[6]: arguments adaptor frame: 1-&gt;0 {
  // actual arguments
  [00] : 0x427c5889 &lt;an HTMLDivElement&gt;#1#  // not passed to callee
}

[7]: /* anonymous */ [0x32408091 &lt;undefined&gt;:2] (this=0x3271b25d &lt;JS Global Object&gt;#3#) {  // stack-allocated locals
  var .result = 0x32408091 &lt;undefined&gt;  // expression stack (top to bottom)
  [03] : 0x427c5889 &lt;an HTMLDivElement&gt;#1#  [02] : 0x427d6565 &lt;a CommandLineAPI&gt;#2#
  [01] : 0x427d6f51 &lt;JS Function&gt;#11#
--------- s o u r c e   c o d e ---------
with ((window &amp;&amp; window.console &amp;&amp; window.console._commandLineAPI) || {}) {?getEventListeners(document.body.children[0])?}
-----------------------------------------
}

[8]: eval [native v8natives.js:170] (this=0x3271b25d &lt;JS Global Object&gt;#3#,a=0x427d804d &lt;String[122]\: with ((window &amp;&amp; window.console &amp;&amp; window.console._commandLineAPI) || {}) {\ngetEventListeners(document.body.children[0])\n}&gt;) {
  // stack-allocated locals
  var c = 0x324080c1 &lt;false&gt;
  var d = 0x427d8471 &lt;JS Function&gt;#12#
  var b = 0x3271b25d &lt;JS Global Object&gt;#3#
  // expression stack (top to bottom)
  [03] : 0x3271b25d &lt;JS Global Object&gt;#3#
--------- s o u r c e   c o d e ---------
function eval(a){?if(!(typeof(a)===&apos;string&apos;))return a;??var b=%GlobalReceiver(global);?var c=(global===b);???????if(c){?throw new $EvalError(&apos;The &quot;this&quot; value passed to eval must &apos;+?&apos;be the global object from which eval originated&apos;);?}??var d=%CompileString(a);?if(!(%_IsFunction(d)))return d;??return %_CallFunct...

-----------------------------------------
}

[9]: _evaluateOn [0x32408091 &lt;undefined&gt;:450] (this=0x42708129 &lt;JS Object&gt;#4#,evalFunction=0x32714fe5 &lt;JS Function eval&gt;#5#,object=0x3271b25d &lt;JS Global Object&gt;#3#,objectGroup=0x35812271 &lt;String[7]: console&gt;,expression=0x427d804d &lt;String[122]\: with ((window &amp;&amp; window.console &amp;&amp; window.console._commandLineAPI) || {}) {\ngetEventListeners(document.body.children[0])\n}&gt;,isEvalOnCallFrame=0x324080c1 &lt;false&gt;,injectCommandLineAPI=0x324080b1 &lt;true&gt;) {
  // stack-allocated locals
  var result = 0x32408091 &lt;undefined&gt;
  // expression stack (top to bottom)
  [07] : 0x427d804d &lt;String[122]\: with ((window &amp;&amp; window.console &amp;&amp; window.console._commandLineAPI) || {}) {\ngetEventListeners(document.body.children[0])\n}&gt;
  [06] : 0x3271b25d &lt;JS Global Object&gt;#3#
--------- s o u r c e   c o d e ---------
function (evalFunction, object, objectGroup, expression, isEvalOnCallFrame, injectCommandLineAPI)?    {?        // Only install command line api object for the time of evaluation.?        // Surround the expression in with statements to inject our command line API so that?        // the window object propert...
-----------------------------------------
}

[10]: _evaluateAndWrap [0x32408091 &lt;undefined&gt;:409] (this=0x42708129 &lt;JS Object&gt;#4#,evalFunction=0x32714fe5 &lt;JS Function eval&gt;#5#,object=0x3271b25d &lt;JS Global Object&gt;#3#,expression=0x427d653d &lt;String[44]: getEventListeners(document.body.children[0])&gt;,objectGroup=0x35812271 &lt;String[7]: console&gt;,isEvalOnCallFrame=0x324080c1 &lt;false&gt;,injectCommandLineAPI=0x324080b1 &lt;true&gt;,returnByValue=0x324080c1 &lt;false&gt;) {
  // expression stack (top to bottom)
  [13] : 0x324080b1 &lt;true&gt;
  [12] : 0x324080c1 &lt;false&gt;
  [11] : 0x427d804d &lt;String[122]\: with ((window &amp;&amp; window.console &amp;&amp; window.console._commandLineAPI) || {}) {\ngetEventListeners(document.body.children[0])\n}&gt;
  [10] : 0x35812271 &lt;String[7]: console&gt;
  [09] : 0x3271b25d &lt;JS Global Object&gt;#3#
  [08] : 0x32714fe5 &lt;JS Function eval&gt;#5#
  [07] : 0x42708129 &lt;JS Object&gt;#4#
  [06] : 0x42708129 &lt;JS Object&gt;#4#
  [05] : 0x427d6551 &lt;an Object&gt;#13#
--------- s o u r c e   c o d e ---------
function (evalFunction, object, expression, objectGroup, isEvalOnCallFrame, injectCommandLineAPI, returnByValue)?    {?        try {?            return { wasThrown: false,?                     result: this._wrapObject(this._evaluateOn(evalFunction, object, objectGroup, expression, isEvalOnCallFrame, injectCo...

-----------------------------------------
}

[11]: evaluate [0x32408091 &lt;undefined&gt;:345] (this=0x42708129 &lt;JS Object&gt;#4#,expression=0x427d653d &lt;String[44]: getEventListeners(document.body.children[0])&gt;,objectGroup=0x35812271 &lt;String[7]: console&gt;,injectCommandLineAPI=0x324080b1 &lt;true&gt;,returnByValue=0x324080c1 &lt;false&gt;) {
  // expression stack (top to bottom)
  [07] : 0x324080c1 &lt;false&gt;
  [06] : 0x324080b1 &lt;true&gt;
  [05] : 0x324080c1 &lt;false&gt;
  [04] : 0x35812271 &lt;String[7]: console&gt;
  [03] : 0x427d653d &lt;String[44]: getEventListeners(document.body.children[0])&gt;
  [02] : 0x3271b25d &lt;JS Global Object&gt;#3#
  [01] : 0x32714fe5 &lt;JS Function eval&gt;#5#
  [00] : 0x42708129 &lt;JS Object&gt;#4#
--------- s o u r c e   c o d e ---------
function (expression, objectGroup, injectCommandLineAPI, returnByValue)?    {?        return this._evaluateAndWrap(inspectedWindow.eval, inspectedWindow, expression, objectGroup, false, injectCommandLineAPI, returnByValue);?    }
-----------------------------------------
}

==== Key         ============================================

 #0# 0x327a649d: 0x327a649d &lt;a CommandLineAPIImpl&gt;
 #1# 0x427c5889: 0x427c5889 &lt;an HTMLDivElement&gt;
 #2# 0x427d6565: 0x427d6565 &lt;a CommandLineAPI&gt;
                $$: 0x427d6695 &lt;JS Function&gt;#14#
             clear: 0x427d6ea9 &lt;JS Function&gt;#15#
 getEventListeners: 0x427d6f51 &lt;JS Function&gt;#11#
                $x: 0x427d673d &lt;JS Function&gt;#16#
                 $: 0x427d65ed &lt;JS Function&gt;#17#
              copy: 0x427d6e01 &lt;JS Function&gt;#18#
           inspect: 0x427d6d39 &lt;JS Function&gt;#19#
   unmonitorEvents: 0x427d6c91 &lt;JS Function&gt;#20#
              keys: 0x427d6935 &lt;JS Function&gt;#21#
               dir: 0x427d67e5 &lt;JS Function&gt;#22#
           profile: 0x427d6a85 &lt;JS Function&gt;#23#
            dirxml: 0x427d688d &lt;JS Function&gt;#24#
        profileEnd: 0x427d6b2d &lt;JS Function&gt;#25#
                $_: 0x427c5889 &lt;an HTMLDivElement&gt;#1#
            values: 0x427d69dd &lt;JS Function&gt;#26#
     monitorEvents: 0x427d6be9 &lt;JS Function&gt;#27#
 #3# 0x3271b25d: 0x3271b25d &lt;JS Global Object&gt;
 #4# 0x42708129: 0x42708129 &lt;JS Object&gt;
     _objectGroups: 0x327a6485 &lt;an Object&gt;#28#
          _modules: 0x327a6491 &lt;an Object&gt;#29#
_idToWrappedObject: 0x327a646d &lt;an Object&gt;#30#
_commandLineAPIImpl: 0x327a649d &lt;a CommandLineAPIImpl&gt;#0#
_lastBoundObjectId: 20
_idToObjectGroupName: 0x327a6479 &lt;an Object&gt;#31#
       _lastResult: 0x427c5889 &lt;an HTMLDivElement&gt;#1#
 #5# 0x32714fe5: 0x32714fe5 &lt;JS Function eval&gt;
 #6# 0x327922f9: 0x327922f9 &lt;JS Function getEventListeners&gt;
 #7# 0x427082ad: 0x427082ad &lt;an InjectedScriptHost&gt;
 #8# 0x427d84bd: 0x427d84bd &lt;an Arguments&gt;
            length: 1
 #9# 0x427d84d9: 0x427d84d9 &lt;JS Array[2]&gt;
                 0: 0x327b26f9 &lt;JS Function&gt;#10#
                 1: 0x327a649d &lt;a CommandLineAPIImpl&gt;#0#
 #10# 0x327b26f9: 0x327b26f9 &lt;JS Function&gt;
 #11# 0x427d6f51: 0x427d6f51 &lt;JS Function&gt;
            length: 1
 #12# 0x427d8471: 0x427d8471 &lt;JS Function&gt;
 #13# 0x427d6551: 0x427d6551 &lt;an Object&gt;
         wasThrown: 0x324080c1 &lt;false&gt;
            result: 0x32408091 &lt;undefined&gt;
 #14# 0x427d6695: 0x427d6695 &lt;JS Function&gt;
            length: 0
 #15# 0x427d6ea9: 0x427d6ea9 &lt;JS Function&gt;
            length: 0
 #16# 0x427d673d: 0x427d673d &lt;JS Function&gt;
            length: 2
 #17# 0x427d65ed: 0x427d65ed &lt;JS Function&gt;
            length: 0
 #18# 0x427d6e01: 0x427d6e01 &lt;JS Function&gt;
            length: 1
 #19# 0x427d6d39: 0x427d6d39 &lt;JS Function&gt;
            length: 1
 #20# 0x427d6c91: 0x427d6c91 &lt;JS Function&gt;
            length: 2
 #21# 0x427d6935: 0x427d6935 &lt;JS Function&gt;
            length: 1
 #22# 0x427d67e5: 0x427d67e5 &lt;JS Function&gt;
            length: 0
 #23# 0x427d6a85: 0x427d6a85 &lt;JS Function&gt;
            length: 0
 #24# 0x427d688d: 0x427d688d &lt;JS Function&gt;
            length: 0
 #25# 0x427d6b2d: 0x427d6b2d &lt;JS Function&gt;
            length: 0
 #26# 0x427d69dd: 0x427d69dd &lt;JS Function&gt;
            length: 1
 #27# 0x427d6be9: 0x427d6be9 &lt;JS Function&gt;
            length: 2
 #28# 0x327a6485: 0x327a6485 &lt;an Object&gt;
 #29# 0x327a6491: 0x327a6491 &lt;an Object&gt;
 #30# 0x327a646d: 0x327a646d &lt;an Object&gt;
 #31# 0x327a6479: 0x327a6479 &lt;an Object&gt;
=====================</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694580</commentid>
    <comment_count>3</comment_count>
      <attachid>158238</attachid>
    <who name="Alice Boxhall">aboxhall</who>
    <bug_when>2012-08-14 00:02:29 -0700</bug_when>
    <thetext>Created attachment 158238
Layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695163</commentid>
    <comment_count>4</comment_count>
      <attachid>158372</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-14 11:09:25 -0700</bug_when>
    <thetext>Created attachment 158372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695164</commentid>
    <comment_count>5</comment_count>
      <attachid>158372</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-14 11:11:45 -0700</bug_when>
    <thetext>Comment on attachment 158372
Patch

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

&gt; Source/WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp:215
&gt; +            if (block.HasCaught() || function.IsEmpty())

I&apos;d return upon HasCaught and assert non empty function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695816</commentid>
    <comment_count>6</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-15 01:13:30 -0700</bug_when>
    <thetext>Committed r125654: &lt;http://trac.webkit.org/changeset/125654&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>158236</attachid>
            <date>2012-08-13 23:58:59 -0700</date>
            <delta_ts>2012-08-13 23:58:59 -0700</delta_ts>
            <desc>Test file</desc>
            <filename>badEventListener.html</filename>
            <type>text/html</type>
            <size>95</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sPgo8Ym9keT4KPGRpdiBvbmNsaWNrPSJJbnZhbGlkIGphdmFz
Y3JpcHQiPkNsaWNrIG1lPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>158238</attachid>
            <date>2012-08-14 00:02:29 -0700</date>
            <delta_ts>2012-08-14 00:02:29 -0700</delta_ts>
            <desc>Layout test</desc>
            <filename>getEventListeners-crash.html</filename>
            <type>text/html</type>
            <size>569</size>
            <attacher name="Alice Boxhall">aboxhall</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQ+Cgp2YXIgdGVzdCA9
IGZ1bmN0aW9uKCkKewogICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgicnVuVGVz
dHNJblBhZ2UoZ2V0RXZlbnRMaXN0ZW5lcnMpIiwgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3Qu
YmluZChJbnNwZWN0b3JUZXN0KSk7Cn0KCjwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+CjxkaXYgaWQ9ImJhZG9uY2xpY2siIG9uY2xpY2s9Im1hbGZvcm1lZCBqYXZh
c2NyaXB0Ij5DbGljayBtZTwvZGl2PgoKPHNjcmlwdD4KCmZ1bmN0aW9uIHJ1blRlc3RzSW5QYWdl
KGdldEV2ZW50TGlzdGVuZXJzKQp7CiAgICBnZXRFdmVudExpc3RlbmVycyhkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYmFkb25jbGljayIpKTsKfQoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158372</attachid>
            <date>2012-08-14 11:09:25 -0700</date>
            <delta_ts>2012-08-14 11:11:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93937-20120814220852.patch</filename>
            <type>text/plain</type>
            <size>7731</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZlZmJmMGZiYzRjZGYz
NzQ3ZmNlODIwNDA2ZjUxZWFiODIwNjg4NC4uOTExZTU4MGMwMDE0OGU5MjZiOGY2ZjZiNjZhNDBl
MTA2MzhiNzFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4LTE0ICBBbmRy
ZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ2FsbGluZyBnZXRFdmVudExpc3RlbmVycygpIG9uIGVsZW1lbnQgd2l0aCBtYWxmb3JtZWQg
amF2YXNjcmlwdCBldmVudCBsaXN0ZW5lcnMgY3Jhc2hlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5MzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGNoZWNrIGxpc3RlbmVyIGZ1bmN0aW9uIHRvIGJl
IG5vbi1udWxsIChoYXBwZW5zIHVwb24gYW4gZXhjZXB0aW9uIHdoaWxlIGNvbXBpbGluZyBhdHRy
aWJ1dGUgbGlzdGVuZXJzKQorCisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SlNMaXN0ZW5lckZ1bmN0aW9u
cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTTGlzdGVuZXJGdW5jdGlvbnMpOgorCiAy
MDEyLTA4LTEzICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjEyNTQwOCwgcmVtb3ZpbmcgYW5vdGhlciB1
c2FnZSBvZiBTVkdfRkVBVFVSRVMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggM2YwOTM1MjQwYWQz
NzliYzBhZDM3ZGY4M2QxZmNhZDEzYTRiOTk3MC4uZjBkOTNhYmRhYjdkY2YyZjFkNGE0Y2E3ZDk2
MDlkZmIzNDZkZWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMjAzLDYgKzIwMyw4IEBAIHN0
YXRpYyBKU0FycmF5KiBnZXRKU0xpc3RlbmVyRnVuY3Rpb25zKEV4ZWNTdGF0ZSogZXhlYywgRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zCiAgICAgICAgIGlmIChqc0xpc3RlbmVyLT5pc29sYXRlZFdv
cmxkKCkgIT0gY3VycmVudFdvcmxkKGV4ZWMpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzTGlzdGVuZXItPmpzRnVuY3Rpb24oZG9jdW1lbnQp
OworICAgICAgICBpZiAoIWZ1bmN0aW9uKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IEpTT2JqZWN0KiBsaXN0ZW5lckVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CiAg
ICAgICAgIGxpc3RlbmVyRW50cnktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgImxpc3RlbmVyIiksIGZ1bmN0aW9uKTsKICAgICAgICAgbGlzdGVuZXJFbnRy
eS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAidXNlQ2Fw
dHVyZSIpLCBqc0Jvb2xlYW4obGlzdGVuZXJJbmZvLmV2ZW50TGlzdGVuZXJWZWN0b3JbaV0udXNl
Q2FwdHVyZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggZjc3OTRhZTk1
ZDc1NjI0MjM3ZmZjYTNjNmFiNjMzNmI0NjQwOGNmZi4uMzYxMjNmMjU1NjcxMTRmYzZmMWRiYjVm
NDVkZTljMWJmNTQyMzQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0y
MDcsNyArMjA3LDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpBcnJheT4gZ2V0SlNMaXN0ZW5l
ckZ1bmN0aW9ucyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2CiAgICAgICAgIC8vIEhpZGUg
bGlzdGVuZXJzIGZyb20gb3RoZXIgY29udGV4dHMuCiAgICAgICAgIGlmIChjb250ZXh0ICE9IHY4
OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGZ1bmN0aW9uID0gdjhMaXN0ZW5lci0+Z2V0TGlzdGVuZXJP
YmplY3QoZG9jdW1lbnQpOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZnVuY3Rpb247
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIGdldExpc3RlbmVyT2JqZWN0KCkgbWF5IGNhdXNl
IEpTIGluIHRoZSBldmVudCBhdHRyaWJ1dGUgdG8gZ2V0IGNvbXBpbGVkLCBwb3RlbnRpYWxseSB1
bnN1Y2Nlc3NmdWxseS4KKyAgICAgICAgICAgIHY4OjpUcnlDYXRjaCBibG9jazsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uID0gdjhMaXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoZG9jdW1lbnQpOwor
ICAgICAgICAgICAgaWYgKGJsb2NrLkhhc0NhdWdodCgpIHx8IGZ1bmN0aW9uLklzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdD4gbGlzdGVuZXJFbnRyeSA9IHY4OjpPYmplY3Q6Ok5ldygpOwogICAgICAgICBs
aXN0ZW5lckVudHJ5LT5TZXQodjg6OlN0cmluZzo6TmV3KCJsaXN0ZW5lciIpLCBmdW5jdGlvbik7
CiAgICAgICAgIGxpc3RlbmVyRW50cnktPlNldCh2ODo6U3RyaW5nOjpOZXcoInVzZUNhcHR1cmUi
KSwgdjg6OkJvb2xlYW46Ok5ldyhsaXN0ZW5lckluZm8uZXZlbnRMaXN0ZW5lclZlY3RvcltpXS51
c2VDYXB0dXJlKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggODM2YjNmODc4NGJkNjE1YzM4YmY0NTcxMzM3Y2M4MzFmY2M5
YzRlZi4uNGMxMGJiZTg5NGQ3ZTU2NTRhMjFhYmFlNDU2YTY2N2VjZDZlODVkMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDEyLTA4LTE0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2FsbGluZyBnZXRFdmVudExpc3RlbmVy
cygpIG9uIGVsZW1lbnQgd2l0aCBtYWxmb3JtZWQgamF2YXNjcmlwdCBldmVudCBsaXN0ZW5lcnMg
Y3Jhc2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTM5MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IGFkZGVkIHRlc3QgZm9yIGNyYXNoIG9uIGludmFsaWQgc3ludGF4IGluIGFuIGF0dHJpYnV0ZSBK
UyBsaXN0ZW5lcjsKKyAgICAgICAgLSBhZGRlZCBjdXN0b20gZXhwZWN0YXRpb24gZm9yIGNocm9t
ZSBkdWUgdG8gSlMgZXJyb3IgbG9nZ2VkIHRvIGNvbnNvbGUgYnkgSlNDIHdoaWxlIGNvbXBpbGlu
ZyBhdHRyaWJ1dGUgbGlzdGVuZXI7CisKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9jb21t
YW5kLWxpbmUtYXBpLWdldEV2ZW50TGlzdGVuZXJzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLWdldEV2ZW50TGlzdGVuZXJzLmh0bWw6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yL2NvbnNvbGUvY29tbWFuZC1s
aW5lLWFwaS1nZXRFdmVudExpc3RlbmVycy1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktZ2V0RXZlbnRMaXN0ZW5l
cnMtZXhwZWN0ZWQudHh0LgorCiAyMDEyLTA4LTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBTa2lwIGluc3BlY3Rv
ciB0ZXN0cyB0aGF0IGhpdCBhc3NlcnRpb24gaW4gV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lcjo6
cmVzdW1lKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1h
bmQtbGluZS1hcGktZ2V0RXZlbnRMaXN0ZW5lcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUvY29tbWFuZC1saW5lLWFwaS1nZXRFdmVudExpc3RlbmVycy1leHBl
Y3RlZC50eHQKaW5kZXggMGQ3NDhlYzBhZDY1ZjU1ODdlYWFhYmQwZWI2MDVkOTgwN2E1M2UwZi4u
OTMyYWM4YzAwYmU4NWU3NGNjNGQwM2UxZDM4MTA3OWFkNTI1MTZhYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29tbWFuZC1saW5lLWFwaS1nZXRFdmVudExpc3Rl
bmVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29t
bWFuZC1saW5lLWFwaS1nZXRFdmVudExpc3RlbmVycy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw3
IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IFN5bnRheEVycm9yOiBFeHBlY3RlZCBhbiBp
ZGVudGlmaWVyIGJ1dCBmb3VuZCAnSmF2YVNjcmlwdCcgaW5zdGVhZAogVGVzdHMgZ2V0RXZlbnRM
aXN0ZW5lcnMoKSBtZXRob2Qgb2YgY29uc29sZSBjb21tYW5kIGxpbmUgQVBJLgogCi0KKyAKIC0g
aW5uZXIgLQoga2V5ZG93bjogewogICAgIDA6IHsKQEAgLTQ1LDYgKzQ2LDcgQEAgY2xpY2s6IHsK
ICAgICB9CiB9CiAtIGVtcHR5IC0KKy0gaW52YWxpZCAtCiAtIG9iamVjdCAtCiB1bmRlZmluZWQK
IC0gbnVsbCAtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb21t
YW5kLWxpbmUtYXBpLWdldEV2ZW50TGlzdGVuZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLWdldEV2ZW50TGlzdGVuZXJzLmh0bWwKaW5kZXgg
OTk0MTk3MWNlMGJhMzU1MjA0NWZkMWMwMGE0NmUyODE3YTFiMThjYy4uNDY1Mzk0YmE0YzA1ZTY4
NDUwYTAyNzRjZDAzZWU4ZWY0ODU1OWUyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUvY29tbWFuZC1saW5lLWFwaS1nZXRFdmVudExpc3RlbmVycy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktZ2V0RXZlbnRM
aXN0ZW5lcnMuaHRtbApAQCAtMjMsNyArMjMsNyBAQCBUZXN0cyBnZXRFdmVudExpc3RlbmVycygp
IG1ldGhvZCBvZiBjb25zb2xlIGNvbW1hbmQgbGluZSBBUEkuCiA8ZGl2IGlkPSJlbXB0eSI+CiA8
L2Rpdj4KIDxidXR0b24gaWQ9ImJ1dHRvbiIgb25jbGljaz0iYWxlcnQoMSkiIG9ubW91c2VvdmVy
PSJsaXN0ZW5lcjIoKSI+PC9idXR0b24+Ci0KKzxidXR0b24gaWQ9ImludmFsaWQiIG9uY2xpY2s9
IkludmFsaWQgSmF2YVNjcmlwdCI+PC9idXR0b24+CiA8c2NyaXB0PgogZnVuY3Rpb24gbGlzdGVu
ZXIxKCkKIHsKQEAgLTgwLDYgKzgwLDggQEAgZnVuY3Rpb24gcnVuVGVzdHNJblBhZ2UoZ2V0RXZl
bnRMaXN0ZW5lcnMpCiAgICAgZHVtcE9iamVjdChnZXRFdmVudExpc3RlbmVycyhkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiYnV0dG9uIikpKTsKICAgICBvdXRwdXQoIi0gZW1wdHkgLSIpOwogICAg
IGR1bXBPYmplY3QoZ2V0RXZlbnRMaXN0ZW5lcnMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVt
cHR5IikpKTsKKyAgICBvdXRwdXQoIi0gaW52YWxpZCAtIik7CisgICAgZHVtcE9iamVjdChnZXRF
dmVudExpc3RlbmVycyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW52YWxpZCIpKSk7CiAgICAg
b3V0cHV0KCItIG9iamVjdCAtIik7CiAgICAgb3V0cHV0KHR5cGVvZiBnZXRFdmVudExpc3RlbmVy
cyh7fSkpOwogICAgIG91dHB1dCgiLSBudWxsIC0iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktZ2V0
RXZlbnRMaXN0ZW5lcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vaW5zcGVjdG9yL2NvbnNvbGUvY29tbWFuZC1saW5lLWFwaS1nZXRFdmVudExpc3RlbmVycy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMwMDY1NWZjMWI2NTkyMDYzMGIzYTlmMmYxYTU3OWM0
OTg3ZWUyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktZ2V0RXZlbnRMaXN0ZW5lcnMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTcgQEAKK1Rlc3RzIGdldEV2ZW50TGlzdGVuZXJzKCkgbWV0
aG9kIG9mIGNvbnNvbGUgY29tbWFuZCBsaW5lIEFQSS4KKworIAorLSBpbm5lciAtCitrZXlkb3du
OiB7CisgICAgMDogeworICAgICAgICBsaXN0ZW5lcjogZnVuY3Rpb24gbGlzdGVuZXIxKCkgeyB9
CisgICAgICAgIHVzZUNhcHR1cmU6IGZhbHNlCisgICAgfQorICAgIDE6IHsKKyAgICAgICAgbGlz
dGVuZXI6IGZ1bmN0aW9uIGxpc3RlbmVyMigpIHsgfQorICAgICAgICB1c2VDYXB0dXJlOiB0cnVl
CisgICAgfQorfQorLSBvdXRlciAtCittb3VzZW1vdmU6IHsKKyAgICAwOiB7CisgICAgICAgIGxp
c3RlbmVyOiBmdW5jdGlvbiBsaXN0ZW5lcjEoKSB7IH0KKyAgICAgICAgdXNlQ2FwdHVyZTogZmFs
c2UKKyAgICB9Cit9CitrZXlkb3duOiB7CisgICAgMDogeworICAgICAgICBsaXN0ZW5lcjogZnVu
Y3Rpb24gbGlzdGVuZXIyKCkgeyB9CisgICAgICAgIHVzZUNhcHR1cmU6IHRydWUKKyAgICB9Cit9
Cittb3VzZWRvd246IHsKKyAgICAwOiB7CisgICAgICAgIGxpc3RlbmVyOiBmdW5jdGlvbiBsaXN0
ZW5lcjIoKSB7IH0KKyAgICAgICAgdXNlQ2FwdHVyZTogdHJ1ZQorICAgIH0KK30KKy0gYXR0cmli
dXRlIGV2ZW50IGxpc3RlbmVycyAtCittb3VzZW92ZXI6IHsKKyAgICAwOiB7CisgICAgICAgIGxp
c3RlbmVyOiBmdW5jdGlvbiBvbm1vdXNlb3ZlcihldmVudCkgeyBsaXN0ZW5lcjIoKSB9CisgICAg
ICAgIHVzZUNhcHR1cmU6IGZhbHNlCisgICAgfQorfQorY2xpY2s6IHsKKyAgICAwOiB7CisgICAg
ICAgIGxpc3RlbmVyOiBmdW5jdGlvbiBvbmNsaWNrKGV2ZW50KSB7IGFsZXJ0KDEpIH0KKyAgICAg
ICAgdXNlQ2FwdHVyZTogZmFsc2UKKyAgICB9Cit9CistIGVtcHR5IC0KKy0gaW52YWxpZCAtCist
IG9iamVjdCAtCit1bmRlZmluZWQKKy0gbnVsbCAtCit1bmRlZmluZWQKKy0gdW5kZWZpbmVkIC0K
K3VuZGVmaW5lZAorLSB3aW5kb3cgLQordW5kZWZpbmVkCisK
</data>
<flag name="review"
          id="168476"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>