<?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>77951</bug_id>
          
          <creation_ts>2012-02-07 02:04:03 -0800</creation_ts>
          <short_desc>Chrome crashes when attempting to add cue to track element</short_desc>
          <delta_ts>2012-02-13 16:06:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Sam Dutton">dutton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>arun.patole</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>550734</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Dutton">dutton</who>
    <bug_when>2012-02-07 02:04:03 -0800</bug_when>
    <thetext>Chromium bug filed first: http://code.google.com/p/chromium/issues/detail?id=112789

Chrome Version       : 18.0.1025.6 canary
URLs (if applicable) : http://www.samdutton.com/track/bug/addCue.html
OS version               : &lt;from About This Mac&gt;
Behavior in Safari 3.x/4.x (if applicable):
Behavior in Firefox 3.x (if applicable):
Behavior in Chrome for Windows:

What steps will reproduce the problem?
1. Go to http://www.samdutton.com/track/bug/addCue.html

or...

Run the following code from the Dev Tools console after loading http://www.samdutton.com/track/simple.html:

    var video = document.querySelector(&quot;video&quot;);	
    var newTrack = video.addTrack(&quot;subtitles&quot;, &quot;French subtitles&quot;, &quot;fr&quot;);
    newTrack.mode = 2;
    newTrack.addCue(new TextTrackCue(&quot;myId&quot;, 0.0, 20.0, &quot;Bonjour!&quot;));

What is the expected result?

Track would be added and cue rendered.


What happens instead?

Tab crashes. 


Comment from  imasaki@chromium.org below.


I could repro this issue with 18.0.1025.4 canary on MacOSX 10.7.2.

Here is crash trace:

Thread 0 *CRASHED* ( EXC_BAD_ACCESS / KERN_PROTECTION_FAILURE @ 0x00000004 )

0x014a4e48	 [Google Chrome Framework	 - ../../JavaScriptCore/wtf/Vector.h:514]	WebCore::TextTrackCueList::add
0x014a3031	 [Google Chrome Framework	 - TextTrack.cpp:211]	WebCore::TextTrack::addCue
0x01b0ffab	 [Google Chrome Framework	 - V8TextTrack.cpp:142]	WebCore::TextTrackInternal::addCueCallback
0x00ebf8c1	 [Google Chrome Framework	 - builtins.cc:1220]	v8::internal::Builtin_HandleApiCall
0x5d308735			
0x5d3efdaa			
0x5d31f1b8			
0x5d30b0a9			
0x00eded72	 [Google Chrome Framework	 + 0x00deed72]	v8::internal::Invoke(bool, v8::internal::Handle&lt;v8::internal::JSFunction&gt;, v8::internal::Handle&lt;v8::internal::Object&gt;, int, v8::internal::Handle&lt;v8::internal::Object&gt;*, bool*)
0x00ede9b3	 [Google Chrome Framework	 - execution.cc:170]	v8::internal::Execution::Call
0x00e95efe	 [Google Chrome Framework	 - api.cc:1584]	v8::Script::Run
0x0164403e	 [Google Chrome Framework	 - V8InjectedScriptHostCustom.cpp:82]	WebCore::V8InjectedScriptHost::evaluateCallback
0x00ebf8c1	 [Google Chrome Framework	 - builtins.cc:1220]	v8::internal::Builtin_HandleApiCall
0x5d308735			
0x5d3771e4			
0x5d376ec3			
0x5d376964			
0x5d31f1b8			
0x5d30b0a9			
0x00eded72	 [Google Chrome Framework	 + 0x00deed72]	v8::internal::Invoke(bool, v8::internal::Handle&lt;v8::internal::JSFunction&gt;, v8::internal::Handle&lt;v8::internal::Object&gt;, int, v8::internal::Handle&lt;v8::internal::Object&gt;*, bool*)
0x00ede9b3	 [Google Chrome Framework	 - execution.cc:170]	v8::internal::Execution::Call
0x00e9f1f0	 [Google Chrome Framework	 - api.cc:3603]	v8::Function::Call
0x01615e9b	 [Google Chrome Framework	 - ScriptFunctionCall.cpp:133]	WebCore::ScriptFunctionCall::call
0x017bb887	 [Google Chrome Framework	 - InjectedScript.cpp:211]	WebCore::InjectedScript::makeCall
0x017baece	 [Google Chrome Framework	 - InjectedScript.cpp:226]	WebCore::InjectedScript::makeEvalCall
0x017bae00	 [Google Chrome Framework	 - InjectedScript.cpp:66]	WebCore::InjectedScript::evaluate
0x017fa723	 [Google Chrome Framework	 - InspectorRuntimeAgent.cpp:100]	WebCore::InspectorRuntimeAgent::evaluate
0x01bf5aa2	 [Google Chrome Framework	 - InspectorBackendDispatcher.cpp:994]	WebCore::InspectorBackendDispatcherImpl::Runtime_evaluate
0x01c1356a	 [Google Chrome Framework	 - InspectorBackendDispatcher.cpp:4148]	WebCore::InspectorBackendDispatcherImpl::dispatch
0x017caa9e	 [Google Chrome Framework	 - InspectorController.cpp:329]	WebCore::InspectorController::dispatchMessageFromFrontend
...... (12 stack frames dropped.)
0x9bf3784e	 [CoreFoundation	 + 0x0001184e]	__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
0x9bf37205	 [CoreFoundation	 + 0x00011205]	__CFRunLoopDoSources0
0x9bf610d7	 [CoreFoundation	 + 0x0003b0d7]	__CFRunLoopRun
0x9bf608eb	 [CoreFoundation	 + 0x0003a8eb]	CFRunLoopRunSpecific
0x9bf60797	 [CoreFoundation	 + 0x0003a797]	CFRunLoopRunInMode
0x9225aa7e	 [HIToolbox	 + 0x00002a7e]	RunCurrentEventLoopInMode
0x92261d9a	 [HIToolbox	 + 0x00009d9a]	ReceiveNextEventCommon
0x92261c09	 [HIToolbox	 + 0x00009c09]	BlockUntilNextEventMatchingListInMode
0x92c9f03f	 [AppKit	 + 0x0000a03f]	_DPSNextEvent
0x92c9e8aa	 [AppKit	 + 0x000098aa]	-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
0x92c9ac21	 [AppKit	 + 0x00005c21]	-[NSApplication run]
0x008e88ec	 [Google Chrome Framework	 - message_pump_mac.mm:558]	base::MessagePumpNSApplication::DoRun
0x008e83eb	 [Google Chrome Framework	 - message_pump_mac.mm:179]	base::MessagePumpCFRunLoopBase::Run
0x0091217c	 [Google Chrome Framework	 - message_loop.cc:417]	MessageLoop::Run
0x022a4d27	 [Google Chrome Framework	 - renderer_main.cc:241]	RendererMain
0x008c5a8c	 [Google Chrome Framework	 - content_main.cc:264]	content::ContentMain
0x000f22a8	 [Google Chrome Framework	 - chrome_main.cc:32]	ChromeMain
0x000eaf57	 [Google Chrome Helper	 - chrome_exe_main_mac.cc:16]	main
0x000eaf15	 [Google Chrome Helper	 + 0x00000f15]	start
0x00000007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553897</commentid>
    <comment_count>1</comment_count>
    <who name="Arun Patole">arun.patole</who>
    <bug_when>2012-02-10 00:03:26 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt;     var newTrack = video.addTrack(&quot;subtitles&quot;, &quot;French subtitles&quot;, &quot;fr&quot;);
&gt;     newTrack.mode = 2;
&gt;     newTrack.addCue(new TextTrackCue(&quot;myId&quot;, 0.0, 20.0, &quot;Bonjour!&quot;));

addTrack() is now addTextTrack():
https://bugs.webkit.org/show_bug.cgi?id=77381

I think issue is that the text track list of cues is not set to an empty list when new text track is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553904</commentid>
    <comment_count>2</comment_count>
      <attachid>126469</attachid>
    <who name="Arun Patole">arun.patole</who>
    <bug_when>2012-02-10 00:10:26 -0800</bug_when>
    <thetext>Created attachment 126469
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554174</commentid>
    <comment_count>3</comment_count>
      <attachid>126469</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-10 10:28:01 -0800</bug_when>
    <thetext>Comment on attachment 126469
proposed patch

Seems reasonable.  I&apos;m not sure how much it matters if we create this object up-front or not.  How commonly are these cue objects used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554203</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-10 10:50:43 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)
&gt; &gt;     var newTrack = video.addTrack(&quot;subtitles&quot;, &quot;French subtitles&quot;, &quot;fr&quot;);
&gt; &gt;     newTrack.mode = 2;
&gt; &gt;     newTrack.addCue(new TextTrackCue(&quot;myId&quot;, 0.0, 20.0, &quot;Bonjour!&quot;));
&gt; 
&gt; addTrack() is now addTextTrack():
&gt; https://bugs.webkit.org/show_bug.cgi?id=77381
&gt; 
&gt; I think issue is that the text track list of cues is not set to an empty list when new text track is created.

No, the issue is that the TextTrackCueList is not allocated before it is used. Allocating it when the track is created is one option, allocating it just before it is used is another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554222</commentid>
    <comment_count>5</comment_count>
    <who name="Arun Patole">arun.patole</who>
    <bug_when>2012-02-10 11:07:30 -0800</bug_when>
    <thetext>&gt; No, the issue is that the TextTrackCueList is not allocated before it is used. Allocating it when the track is created is one option, allocating it just before it is used is another.

Spec says:
The addTextTrack(kind, label, language) method of media elements, when invoked, must run the following steps:
.....
.....
4. Create a new TextTrack object.

5. Create a new text track corresponding to the new object,
....and set its text track list of cues to an empty list...

http://www.whatwg.org/specs/web-apps/current-work/#dom-media-addtexttrack

So, IMO it should set to an empty list when text track is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554233</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-10 11:18:32 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; No, the issue is that the TextTrackCueList is not allocated before it is used. Allocating it when the track is created is one option, allocating it just before it is used is another.
&gt; 
&gt; Spec says:
&gt; The addTextTrack(kind, label, language) method of media elements, when invoked, must run the following steps:
&gt; .....
&gt; .....
&gt; 4. Create a new TextTrack object.
&gt; 
&gt; 5. Create a new text track corresponding to the new object,
&gt; ....and set its text track list of cues to an empty list...
&gt; 
&gt; http://www.whatwg.org/specs/web-apps/current-work/#dom-media-addtexttrack
&gt; 
&gt; So, IMO it should set to an empty list when text track is created.

We are splitting semantic hairs here, but &quot;and set its text track list of cues to an empty list&quot; it seems to me that 0 is a perfectly valid &quot;empty list&quot;. The bug is that the current code tries to *use* the nil (&quot;empty&quot;) list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554235</commentid>
    <comment_count>7</comment_count>
      <attachid>126469</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-10 11:20:11 -0800</bug_when>
    <thetext>Comment on attachment 126469
proposed patch

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

&gt; Source/WebCore/html/TextTrack.cpp:159
&gt; +    ASSERT(m_cues);

This is unnecessary. Because the list is allocated in the constructor, the only way for this to assert is if the allocation fails. The previous check was because the list was not allocated until it was used.

&gt; Source/WebCore/html/TextTrack.cpp:173
&gt; +    ASSERT(m_cues);

Ditto.

&gt; Source/WebCore/html/TextTrack.cpp:188
&gt; +    ASSERT(m_cues);

Ditto.

&gt; Source/WebCore/html/TextTrack.cpp:226
&gt; +    ASSERT(m_cues);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554259</commentid>
    <comment_count>8</comment_count>
    <who name="Arun Patole">arun.patole</who>
    <bug_when>2012-02-10 11:46:00 -0800</bug_when>
    <thetext>&gt; We are splitting semantic hairs here, but &quot;and set its text track list of cues to an empty list&quot; it seems to me that 0 is a perfectly valid &quot;empty list&quot;. The bug is that the current code tries to *use* the nil (&quot;empty&quot;) list.

Hi Eric,
Sorry if i have not understood it correctly, but when I locally reproduced this crash, I found that it was crashing because of null pointer m_cues and not because of the pointer to an empty list. Then I referred spec and found that it should be initialized to an empty list when track is created so i initialized it with TextTrackCueList::create().
&quot;if(m_cues)&quot; checks were removed and asserts were added before it use just to make sure that its non-null and it is not accidently made null at any other place. 
If you still think its wrong I will abandon this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554325</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-10 13:01:22 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; We are splitting semantic hairs here, but &quot;and set its text track list of cues to an empty list&quot; it seems to me that 0 is a perfectly valid &quot;empty list&quot;. The bug is that the current code tries to *use* the nil (&quot;empty&quot;) list.
&gt; 
&gt; Sorry if i have not understood it correctly, but when I locally reproduced this crash, I found that it was crashing because of null pointer m_cues and not because of the pointer to an empty list. Then I referred spec and found that it should be initialized to an empty list when track is created so i initialized it with TextTrackCueList::create().
&gt; &quot;if(m_cues)&quot; checks were removed and asserts were added before it use just to make sure that its non-null and it is not accidently made null at any other place. 
&gt; If you still think its wrong I will abandon this patch.

I was only trying to point out that the way we represent what the spec calls &quot;an empty list&quot; is an implementation detail. The current code *tries* to avoid allocating the list until it is needed, so in the current code nil represents what the spec calls &quot;an empty list&quot;. Clearly the current code is wrong, because it will crash if either addCue or removeCue is called. 

One way to fix this is to allocate it in the constructor as you have done. Another way would be to allocate the list in addCue and removeCue. The way you have done it is OK, it makes the code slightly simpler at the cost of more memory when we have a track with no cues. A track will probably have cues more times than not, so the memory saved is negligible.

I don&apos;t think the asserts are needed because it is unlikely that the list will be accidentally deleted, and the null checks have been removed so we will now crash immediately. I don&apos;t feel strongly about this, you can leave them in if you think they are useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554969</commentid>
    <comment_count>10</comment_count>
    <who name="Arun Patole">arun.patole</who>
    <bug_when>2012-02-12 20:23:38 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; &gt; We are splitting semantic hairs here, but &quot;and set its text track list of cues to an empty list&quot; it seems to me that 0 is a perfectly valid &quot;empty list&quot;. The bug is that the current code tries to *use* the nil (&quot;empty&quot;) list.
&gt; &gt; 
&gt; &gt; Sorry if i have not understood it correctly, but when I locally reproduced this crash, I found that it was crashing because of null pointer m_cues and not because of the pointer to an empty list. Then I referred spec and found that it should be initialized to an empty list when track is created so i initialized it with TextTrackCueList::create().
&gt; &gt; &quot;if(m_cues)&quot; checks were removed and asserts were added before it use just to make sure that its non-null and it is not accidently made null at any other place. 
&gt; &gt; If you still think its wrong I will abandon this patch.
&gt; 
&gt; I was only trying to point out that the way we represent what the spec calls &quot;an empty list&quot; is an implementation detail. The current code *tries* to avoid allocating the list until it is needed, so in the current code nil represents what the spec calls &quot;an empty list&quot;. Clearly the current code is wrong, because it will crash if either addCue or removeCue is called. 
&gt; 
&gt; One way to fix this is to allocate it in the constructor as you have done. Another way would be to allocate the list in addCue and removeCue. The way you have done it is OK, it makes the code slightly simpler at the cost of more memory when we have a track with no cues. A track will probably have cues more times than not, so the memory saved is negligible.
&gt; 
&gt; I don&apos;t think the asserts are needed because it is unlikely that the list will be accidentally deleted, and the null checks have been removed so we will now crash immediately. I don&apos;t feel strongly about this, you can leave them in if you think they are useful.
Ok thanks, I will upload the modified patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554976</commentid>
    <comment_count>11</comment_count>
    <who name="Arun Patole">arun.patole</who>
    <bug_when>2012-02-12 20:31:20 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 126469 [details])
&gt; Seems reasonable.  I&apos;m not sure how much it matters if we create this object up-front or not.  How commonly are these cue objects used?

Thanks for r+ Eric, almost all the times you will have tracks with cues so I think it shouldn&apos;t be an issue. I will upload the modified patch incorporating Eric Carlson&apos;s review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555093</commentid>
    <comment_count>12</comment_count>
      <attachid>126732</attachid>
    <who name="Arun Patole">arun.patole</who>
    <bug_when>2012-02-13 00:55:12 -0800</bug_when>
    <thetext>Created attachment 126732
updated patch

Allocating text track&apos;s text track list of cues before using it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555515</commentid>
    <comment_count>13</comment_count>
      <attachid>126732</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-13 13:30:51 -0800</bug_when>
    <thetext>Comment on attachment 126732
updated patch

Very nice simplification and refactoring, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555709</commentid>
    <comment_count>14</comment_count>
      <attachid>126732</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 16:06:41 -0800</bug_when>
    <thetext>Comment on attachment 126732
updated patch

Clearing flags on attachment: 126732

Committed r107632: &lt;http://trac.webkit.org/changeset/107632&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555710</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 16:06:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126469</attachid>
            <date>2012-02-10 00:10:26 -0800</date>
            <delta_ts>2012-02-13 00:55:12 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>chrome-addcue-crash.patch</filename>
            <type>text/plain</type>
            <size>6970</size>
            <attacher name="Arun Patole">arun.patole</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAyLTA5ICBBcnVuIFBh
dG9sZSAgPGJtZjgzNEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgQ2hyb21lIGNyYXNoZXMgd2hl
biBhdHRlbXB0aW5nIHRvIGFkZCBjdWUgdG8gdHJhY2sgZWxlbWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5NTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgdGV4dCB0cmFjayBsaXN0IG9mIGN1
ZXMgdG8gYW4gZW1wdHkgbGlzdCB3aGVuIG5ldyB0ZXh0IHRyYWNrIGlzIGNyZWF0ZWQuCisgICAg
ICAgIEFsc28gcmVwbGFjZWQgJ2lmKG1fY3VlcyknIGNoZWNrcyB3aXRoIGFzc2VydHMuCisKKyAg
ICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OlRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmN1ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphY3RpdmVDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6YWRkQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6cmVtb3ZlQ3Vl
KToKKwogMjAxMi0wMi0wOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmVwbGFjZSBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gd2l0aCBbQ2FsbFdpdGg9
U2NyaXB0QXJndW1lbnRzfENhbGxTdGFja10KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5j
cHAJKHJldmlzaW9uIDEwNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFRl
eHRUcmFjazo6bWV0YWRhdGFLCiAKIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFRleHRU
cmFja1R5cGUgdHlwZSkKICAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBUcmFja0Jhc2U6OlRleHRU
cmFjaykKKyAgICAsIG1fY3VlcyhUZXh0VHJhY2tDdWVMaXN0OjpjcmVhdGUoKSkKICAgICAsIG1f
bWVkaWFFbGVtZW50KDApCiAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFnZShs
YW5ndWFnZSkKQEAgLTE1NSwzNCArMTU2LDM3IEBAIFRleHRUcmFjazo6TW9kZSBUZXh0VHJhY2s6
Om1vZGUoKSBjb25zdAogCiBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmN1ZXMoKQogewot
ICAgIGlmICghbV9jdWVzKQotICAgICAgICBtX2N1ZXMgPSBUZXh0VHJhY2tDdWVMaXN0OjpjcmVh
dGUoKTsgICAgCisgICAgQVNTRVJUKG1fY3Vlcyk7CiAKICAgICAvLyA0LjguMTAuMTIuNSBJZiB0
aGUgdGV4dCB0cmFjayBtb2RlIC4uLiBpcyBub3QgdGhlIHRleHQgdHJhY2sgZGlzYWJsZWQgbW9k
ZSwKICAgICAvLyB0aGVuIHRoZSBjdWVzIGF0dHJpYnV0ZSBtdXN0IHJldHVybiBhIGxpdmUgVGV4
dFRyYWNrQ3VlTGlzdCBvYmplY3QgLi4uCiAgICAgLy8gT3RoZXJ3aXNlLCBpdCBtdXN0IHJldHVy
biBudWxsLiBXaGVuIGFuIG9iamVjdCBpcyByZXR1cm5lZCwgdGhlCiAgICAgLy8gc2FtZSBvYmpl
Y3QgbXVzdCBiZSByZXR1cm5lZCBlYWNoIHRpbWUuCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jZG9tLXRleHR0cmFjay1jdWVzCi0gICAg
aWYgKG1fY3VlcyAmJiBtX21vZGUgIT0gVGV4dFRyYWNrOjpESVNBQkxFRCkKKyAgICBpZiAobV9t
b2RlICE9IFRleHRUcmFjazo6RElTQUJMRUQpCiAgICAgICAgIHJldHVybiBtX2N1ZXMuZ2V0KCk7
CiAgICAgcmV0dXJuIDA7CiB9CiAKIFRleHRUcmFja0N1ZUxpc3QqIFRleHRUcmFjazo6YWN0aXZl
Q3VlcygpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1fY3Vlcyk7CisKICAgICAvLyA0LjguMTAuMTIu
NSBJZiB0aGUgdGV4dCB0cmFjayBtb2RlIC4uLiBpcyBub3QgdGhlIHRleHQgdHJhY2sgZGlzYWJs
ZWQgbW9kZSwKICAgICAvLyB0aGVuIHRoZSBhY3RpdmVDdWVzIGF0dHJpYnV0ZSBtdXN0IHJldHVy
biBhIGxpdmUgVGV4dFRyYWNrQ3VlTGlzdCBvYmplY3QgLi4uCiAgICAgLy8gLi4uIHdob3NlIGFj
dGl2ZSBmbGFnIHdhcyBzZXQgd2hlbiB0aGUgc2NyaXB0IHN0YXJ0ZWQsIGluIHRleHQgdHJhY2sg
Y3VlCiAgICAgLy8gb3JkZXIuIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gbnVsbC4gV2hlbiBh
biBvYmplY3QgaXMgcmV0dXJuZWQsIHRoZQogICAgIC8vIHNhbWUgb2JqZWN0IG11c3QgYmUgcmV0
dXJuZWQgZWFjaCB0aW1lLgogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvI2RvbS10ZXh0dHJhY2stYWN0aXZlY3VlcwotICAgIGlmIChtX2N1
ZXMgJiYgbV9tb2RlICE9IFRleHRUcmFjazo6RElTQUJMRUQpCisgICAgaWYgKG1fbW9kZSAhPSBU
ZXh0VHJhY2s6OkRJU0FCTEVEKQogICAgICAgICByZXR1cm4gbV9jdWVzLT5hY3RpdmVDdWVzKCk7
CiAgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgVGV4dFRyYWNrOjphZGRDdWUoUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWU+IHBycEN1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgQVNTRVJUKG1f
Y3Vlcyk7CisKICAgICBpZiAoIXBycEN1ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTksNiAr
MjIzLDggQEAgdm9pZCBUZXh0VHJhY2s6OmFkZEN1ZShQYXNzUmVmUHRyPFRleHRUcgogCiB2b2lk
IFRleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSogY3VlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKKyAgICBBU1NFUlQobV9jdWVzKTsKKwogICAgIGlmICghY3VlKQogICAgICAgICByZXR1
cm47CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzM2OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAyLTA5ICBBcnVuIFBhdG9s
ZSAgPGJtZjgzNEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgQ2hyb21lIGNyYXNoZXMgd2hlbiBh
dHRlbXB0aW5nIHRvIGFkZCBjdWUgdG8gdHJhY2sgZWxlbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5NTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIGFkZC1yZW1vdmUtY3VlLmh0bWwg
dG8gaGFuZGxlIGFkZGluZyBhIG5ldyBjdWUgdG8gdGhlIHRleHQgdHJhY2sgY3JlYXRlZCB3aXRo
IGFkZFRleHRUcmFjay4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1hZGQtcmVtb3ZlLWN1
ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stYWRkLXJlbW92ZS1j
dWUuaHRtbDoKKwogMjAxMi0wMi0wOSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgQWRkIFdlYlNvY2tldCBleHRlbnNpb24gc3VwcG9ydApJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXJlbW92ZS1jdWUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC1yZW1vdmUt
Y3VlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA2NzgwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2stYWRkLXJlbW92ZS1jdWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCwyMiBAQCBFWFBFQ1RFRCAoY3Vlc1sxXS5zdGFydFRpbWUgPT0gJzMxJykgT0sK
IEVYUEVDVEVEIChjdWVzWzJdLnN0YXJ0VGltZSA9PSAnMzMnKSBPSwogRVhQRUNURUQgKGN1ZXNb
M10uc3RhcnRUaW1lID09ICc2MScpIE9LCiAKKyoqKiBjcmVhdGUgYSBuZXcgY3VlIGFuZCBhZGQg
aXQgdG8gYSB0cmFjayBjcmVhdGVkIHdpdGggdmlkZW8uYWRkVGV4dFRyYWNrLCBtYWtlIHN1cmUg
aXQgaXMgaW5zZXJ0ZWQgY29ycmVjdGx5LgorUlVOKG5ld1RyYWNrID0gdmlkZW8uYWRkVGV4dFRy
YWNrKCJzdWJ0aXRsZXMiLCAiRnJlbmNoIHN1YnRpdGxlcyIsICJmciIpKQorUlVOKG5ld1RyYWNr
LmFkZEN1ZShuZXcgVGV4dFRyYWNrQ3VlKCJ0ZXN0IiwgMC4wLCAxLjAsICJUZXN0ISIpKSkKK1JV
TihuZXdDdWUgPSBuZXdUcmFjay5jdWVzWzBdKQorRVhQRUNURUQgKG5ld0N1ZS50cmFjayA9PSAn
W29iamVjdCBUZXh0VHJhY2tdJykgT0sKK0VYUEVDVEVEIChuZXdDdWUuaWQgPT0gJ3Rlc3QnKSBP
SworRVhQRUNURUQgKG5ld0N1ZS5zdGFydFRpbWUgPT0gJzAnKSBPSworRVhQRUNURUQgKG5ld0N1
ZS5lbmRUaW1lID09ICcxJykgT0sKK0VYUEVDVEVEIChuZXdDdWUucGF1c2VPbkV4aXQgPT0gJ2Zh
bHNlJykgT0sKK0VYUEVDVEVEIChuZXdDdWUuZGlyZWN0aW9uID09ICdob3Jpem9udGFsJykgT0sK
K0VYUEVDVEVEIChuZXdDdWUuc25hcFRvTGluZXMgPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKG5l
d0N1ZS5saW5lUG9zaXRpb24gPT0gJy0xJykgT0sKK0VYUEVDVEVEIChuZXdDdWUudGV4dFBvc2l0
aW9uID09ICc1MCcpIE9LCitFWFBFQ1RFRCAobmV3Q3VlLnNpemUgPT0gJzEwMCcpIE9LCitFWFBF
Q1RFRCAobmV3Q3VlLmFsaWdubWVudCA9PSAnbWlkZGxlJykgT0sKKwogKioqIFJlbW92ZSBhIGN1
ZSBjcmVhdGVkIHdpdGggYWRkQ3VlKCkuCiBSVU4odGVzdFRyYWNrLnRyYWNrLnJlbW92ZUN1ZSh0
ZXh0Q3VlKSkKIEVYUEVDVEVEICh0ZXh0Q3VlLnRyYWNrID09ICdudWxsJykgT0sKSW5kZXg6IExh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC1yZW1vdmUtY3VlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXJlbW92ZS1jdWUuaHRtbAko
cmV2aXNpb24gMTA2NzgwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXJl
bW92ZS1jdWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMjQgQEAKICAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZXNbMl0uc3RhcnRUaW1lIiwgMzMpOwogICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgiY3Vlc1szXS5zdGFydFRpbWUiLCA2MSk7CiAKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiogY3JlYXRlIGEgbmV3IGN1ZSBhbmQgYWRkIGl0
IHRvIGEgdHJhY2sgY3JlYXRlZCB3aXRoIHZpZGVvLmFkZFRleHRUcmFjaywgbWFrZSBzdXJlIGl0
IGlzIGluc2VydGVkIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVt
ZW50KCk7CisgICAgICAgICAgICAgICAgcnVuKCduZXdUcmFjayA9IHZpZGVvLmFkZFRleHRUcmFj
aygic3VidGl0bGVzIiwgIkZyZW5jaCBzdWJ0aXRsZXMiLCAiZnIiKScpOworICAgICAgICAgICAg
ICAgIG5ld1RyYWNrLm1vZGUgPSAyOworICAgICAgICAgICAgICAgIHJ1bignbmV3VHJhY2suYWRk
Q3VlKG5ldyBUZXh0VHJhY2tDdWUoInRlc3QiLCAwLjAsIDEuMCwgIlRlc3QhIikpJyk7CisgICAg
ICAgICAgICAgICAgcnVuKCduZXdDdWUgPSBuZXdUcmFjay5jdWVzWzBdJyk7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJuZXdDdWUudHJhY2siLCBuZXdUcmFjayk7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJuZXdDdWUuaWQiLCAidGVzdCIpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgibmV3Q3VlLnN0YXJ0VGltZSIsIDAuMCk7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJuZXdDdWUuZW5kVGltZSIsIDEuMCk7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJuZXdDdWUucGF1c2VPbkV4aXQiLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJuZXdDdWUuZGlyZWN0aW9uIiwgImhvcml6b250YWwiKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoIm5ld0N1ZS5zbmFwVG9MaW5lcyIsIHRydWUpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgibmV3Q3VlLmxpbmVQb3NpdGlvbiIsIC0xKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm5ld0N1ZS50ZXh0UG9zaXRpb24iLCA1MCk7CisgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJuZXdDdWUuc2l6ZSIsIDEwMCk7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJuZXdDdWUuYWxpZ25tZW50IiwgIm1pZGRsZSIpOworCiAgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KioqIFJlbW92ZSBhIGN1ZSBjcmVhdGVkIHdp
dGggYWRkQ3VlKCkuIik7CiAgICAgICAgICAgICAgICAgcnVuKCJ0ZXN0VHJhY2sudHJhY2sucmVt
b3ZlQ3VlKHRleHRDdWUpIik7CiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0ZXh0Q3Vl
LnRyYWNrIiwgbnVsbCk7Cg==
</data>
<flag name="review"
          id="128298"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126732</attachid>
            <date>2012-02-13 00:55:12 -0800</date>
            <delta_ts>2012-02-13 16:06:41 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>chrome-addcue-crash_2.patch</filename>
            <type>text/plain</type>
            <size>7234</size>
            <attacher name="Arun Patole">arun.patole</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzU0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAyLTEzICBBcnVuIFBh
dG9sZSAgPGJtZjgzNEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgQ2hyb21lIGNyYXNoZXMgd2hl
biBhdHRlbXB0aW5nIHRvIGFkZCBjdWUgdG8gdHJhY2sgZWxlbWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5NTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvY2F0ZSB0ZXh0IHRyYWNrJ3MgdGV4
dCB0cmFjayBsaXN0IG9mIGN1ZXMgYmVmb3JlIHVzaW5nIGl0LgorCisgICAgICAgICogaHRtbC9U
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpjdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFjazo6cmVtb3ZlQ3VlKTogcmV0dXJuIGlmIHRleHQgdHJhY2sgbGlzdCBvZiBjdWVzIGlzIG5v
dCBhbGxvY2F0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmVuc3VyZVRleHRUcmFj
a0N1ZUxpc3QpOkFkZGVkLgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrLmg6CisgICAgICAgIChU
ZXh0VHJhY2spOgorCiAyMDEyLTAyLTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShNRURJQV9TVFJFQU0pIGZyb20gTmF2aWdhdG9yLmgK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDEwNzUzNikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDE2
ICsxNTUsMTMgQEAgVGV4dFRyYWNrOjpNb2RlIFRleHRUcmFjazo6bW9kZSgpIGNvbnN0CiAKIFRl
eHRUcmFja0N1ZUxpc3QqIFRleHRUcmFjazo6Y3VlcygpCiB7Ci0gICAgaWYgKCFtX2N1ZXMpCi0g
ICAgICAgIG1fY3VlcyA9IFRleHRUcmFja0N1ZUxpc3Q6OmNyZWF0ZSgpOyAgICAKLQogICAgIC8v
IDQuOC4xMC4xMi41IElmIHRoZSB0ZXh0IHRyYWNrIG1vZGUgLi4uIGlzIG5vdCB0aGUgdGV4dCB0
cmFjayBkaXNhYmxlZCBtb2RlLAogICAgIC8vIHRoZW4gdGhlIGN1ZXMgYXR0cmlidXRlIG11c3Qg
cmV0dXJuIGEgbGl2ZSBUZXh0VHJhY2tDdWVMaXN0IG9iamVjdCAuLi4KICAgICAvLyBPdGhlcndp
c2UsIGl0IG11c3QgcmV0dXJuIG51bGwuIFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUK
ICAgICAvLyBzYW1lIG9iamVjdCBtdXN0IGJlIHJldHVybmVkIGVhY2ggdGltZS4KICAgICAvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tdGV4
dHRyYWNrLWN1ZXMKLSAgICBpZiAobV9jdWVzICYmIG1fbW9kZSAhPSBUZXh0VHJhY2s6OkRJU0FC
TEVEKQotICAgICAgICByZXR1cm4gbV9jdWVzLmdldCgpOworICAgIGlmIChtX21vZGUgIT0gVGV4
dFRyYWNrOjpESVNBQkxFRCkKKyAgICAgICAgcmV0dXJuIGVuc3VyZVRleHRUcmFja0N1ZUxpc3Qo
KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjA4LDcgKzIwNSw3IEBAIHZvaWQgVGV4dFRyYWNr
OjphZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHIKICAgICAvLyAzLiBJZiB0aGUgZ2l2ZW4gY3VlIGlz
IGFscmVhZHkgbGlzdGVkIGluIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0J3MgdGV4dAog
ICAgIC8vIHRyYWNrJ3MgdGV4dCB0cmFjayBsaXN0IG9mIGN1ZXMsIHRoZW4gdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3IgZXhjZXB0aW9uLgogICAgIC8vIDQuIEFkZCBjdWUgdG8gdGhlIG1ldGhv
ZCdzIFRleHRUcmFjayBvYmplY3QncyB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBsaXN0IG9mIGN1
ZXMuCi0gICAgaWYgKCFtX2N1ZXMtPmFkZChjdWUpKSB7CisgICAgaWYgKCFlbnN1cmVUZXh0VHJh
Y2tDdWVMaXN0KCktPmFkZChjdWUpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMzYsNyArMjMzLDcgQEAgdm9pZCBUZXh0VHJh
Y2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqCiAgICAgLy8gMi4gSWYgdGhlIGdpdmVuIGN1ZSBp
cyBub3QgY3VycmVudGx5IGxpc3RlZCBpbiB0aGUgbWV0aG9kJ3MgVGV4dFRyYWNrIAogICAgIC8v
IG9iamVjdCdzIHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIGxpc3Qgb2YgY3VlcywgdGhlbiB0aHJv
dyBhIE5vdEZvdW5kRXJyb3IgZXhjZXB0aW9uLgogICAgIC8vIDMuIFJlbW92ZSBjdWUgZnJvbSB0
aGUgbWV0aG9kJ3MgVGV4dFRyYWNrIG9iamVjdCdzIHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIGxp
c3Qgb2YgY3Vlcy4KLSAgICBpZiAoIW1fY3Vlcy0+cmVtb3ZlKGN1ZSkpIHsKKyAgICBpZiAoIW1f
Y3VlcyB8fCAhbV9jdWVzLT5yZW1vdmUoY3VlKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjcxLDYgKzI2OCwxNCBAQCB2b2lk
IFRleHRUcmFjazo6Y3VlRGlkQ2hhbmdlKFRleHRUcmFja0N1CiAgICAgbV9jbGllbnQtPnRleHRU
cmFja0FkZEN1ZSh0aGlzLCBjdWUpOwogfQogCitUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6
OmVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKQoreworICAgIGlmICghbV9jdWVzKQorICAgICAgICBt
X2N1ZXMgPSBUZXh0VHJhY2tDdWVMaXN0OjpjcmVhdGUoKTsKKworICAgIHJldHVybiBtX2N1ZXMu
Z2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrLmgJKHJldmlzaW9uIDEwNzUzNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKIAogcHJpdmF0ZToKKyAg
ICBUZXh0VHJhY2tDdWVMaXN0KiBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCk7CiAgICAgSFRNTE1l
ZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CiAgICAgU3RyaW5nIG1fa2luZDsKICAgICBTdHJp
bmcgbV9sYWJlbDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzU0MSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAyLTEzICBBcnVu
IFBhdG9sZSAgPGJtZjgzNEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgQ2hyb21lIGNyYXNoZXMg
d2hlbiBhdHRlbXB0aW5nIHRvIGFkZCBjdWUgdG8gdHJhY2sgZWxlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc5NTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIGFkZC1yZW1vdmUtY3Vl
Lmh0bWwgdG8gaGFuZGxlIGFkZGluZyBhIG5ldyBjdWUgdG8gdGhlIHRleHQgdHJhY2sgY3JlYXRl
ZCB3aXRoIGFkZFRleHRUcmFjay4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1hZGQtcmVt
b3ZlLWN1ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stYWRkLXJl
bW92ZS1jdWUuaHRtbDoKKwogMjAxMi0wMi0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFRoaXMgdGVzdCBpcyB0ZXN0aW5nIHRoZSBhcmd1bWVudCBoYW5kbGlu
ZyBiZWhhdmlvciBvZiB0aGlzIEFQSS4gIE5vdwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2stYWRkLXJlbW92ZS1jdWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC1yZW1vdmUtY3VlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTA3NTM2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXJlbW92
ZS1jdWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwyMiBAQCBFWFBF
Q1RFRCAoY3Vlc1sxXS5zdGFydFRpbWUgPT0gJzMxJykgT0sKIEVYUEVDVEVEIChjdWVzWzJdLnN0
YXJ0VGltZSA9PSAnMzMnKSBPSwogRVhQRUNURUQgKGN1ZXNbM10uc3RhcnRUaW1lID09ICc2MScp
IE9LCiAKKyoqKiBjcmVhdGUgYSBuZXcgY3VlIGFuZCBhZGQgaXQgdG8gYSB0cmFjayBjcmVhdGVk
IHdpdGggdmlkZW8uYWRkVGV4dFRyYWNrLCBtYWtlIHN1cmUgaXQgaXMgaW5zZXJ0ZWQgY29ycmVj
dGx5LgorUlVOKG5ld1RyYWNrID0gdmlkZW8uYWRkVGV4dFRyYWNrKCJzdWJ0aXRsZXMiLCAiRnJl
bmNoIHN1YnRpdGxlcyIsICJmciIpKQorUlVOKG5ld1RyYWNrLmFkZEN1ZShuZXcgVGV4dFRyYWNr
Q3VlKCJ0ZXN0IiwgMC4wLCAxLjAsICJUZXN0ISIpKSkKK1JVTihuZXdDdWUgPSBuZXdUcmFjay5j
dWVzWzBdKQorRVhQRUNURUQgKG5ld0N1ZS50cmFjayA9PSAnW29iamVjdCBUZXh0VHJhY2tdJykg
T0sKK0VYUEVDVEVEIChuZXdDdWUuaWQgPT0gJ3Rlc3QnKSBPSworRVhQRUNURUQgKG5ld0N1ZS5z
dGFydFRpbWUgPT0gJzAnKSBPSworRVhQRUNURUQgKG5ld0N1ZS5lbmRUaW1lID09ICcxJykgT0sK
K0VYUEVDVEVEIChuZXdDdWUucGF1c2VPbkV4aXQgPT0gJ2ZhbHNlJykgT0sKK0VYUEVDVEVEIChu
ZXdDdWUuZGlyZWN0aW9uID09ICdob3Jpem9udGFsJykgT0sKK0VYUEVDVEVEIChuZXdDdWUuc25h
cFRvTGluZXMgPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKG5ld0N1ZS5saW5lUG9zaXRpb24gPT0g
Jy0xJykgT0sKK0VYUEVDVEVEIChuZXdDdWUudGV4dFBvc2l0aW9uID09ICc1MCcpIE9LCitFWFBF
Q1RFRCAobmV3Q3VlLnNpemUgPT0gJzEwMCcpIE9LCitFWFBFQ1RFRCAobmV3Q3VlLmFsaWdubWVu
dCA9PSAnbWlkZGxlJykgT0sKKwogKioqIFJlbW92ZSBhIGN1ZSBjcmVhdGVkIHdpdGggYWRkQ3Vl
KCkuCiBSVU4odGVzdFRyYWNrLnRyYWNrLnJlbW92ZUN1ZSh0ZXh0Q3VlKSkKIEVYUEVDVEVEICh0
ZXh0Q3VlLnRyYWNrID09ICdudWxsJykgT0sKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RyYWNrLWFkZC1yZW1vdmUtY3VlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stYWRkLXJlbW92ZS1jdWUuaHRtbAkocmV2aXNpb24gMTA3NTM2KQorKysg
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXJlbW92ZS1jdWUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsMjQgQEAKICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImN1ZXNbMl0uc3RhcnRUaW1lIiwgMzMpOwogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
Y3Vlc1szXS5zdGFydFRpbWUiLCA2MSk7CiAKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
Ijxicj4qKiogY3JlYXRlIGEgbmV3IGN1ZSBhbmQgYWRkIGl0IHRvIGEgdHJhY2sgY3JlYXRlZCB3
aXRoIHZpZGVvLmFkZFRleHRUcmFjaywgbWFrZSBzdXJlIGl0IGlzIGluc2VydGVkIGNvcnJlY3Rs
eS4iKTsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgICAgICAg
ICAgcnVuKCduZXdUcmFjayA9IHZpZGVvLmFkZFRleHRUcmFjaygic3VidGl0bGVzIiwgIkZyZW5j
aCBzdWJ0aXRsZXMiLCAiZnIiKScpOworICAgICAgICAgICAgICAgIG5ld1RyYWNrLm1vZGUgPSAy
OworICAgICAgICAgICAgICAgIHJ1bignbmV3VHJhY2suYWRkQ3VlKG5ldyBUZXh0VHJhY2tDdWUo
InRlc3QiLCAwLjAsIDEuMCwgIlRlc3QhIikpJyk7CisgICAgICAgICAgICAgICAgcnVuKCduZXdD
dWUgPSBuZXdUcmFjay5jdWVzWzBdJyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJu
ZXdDdWUudHJhY2siLCBuZXdUcmFjayk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJu
ZXdDdWUuaWQiLCAidGVzdCIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgibmV3Q3Vl
LnN0YXJ0VGltZSIsIDAuMCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJuZXdDdWUu
ZW5kVGltZSIsIDEuMCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJuZXdDdWUucGF1
c2VPbkV4aXQiLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJuZXdDdWUu
ZGlyZWN0aW9uIiwgImhvcml6b250YWwiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
Im5ld0N1ZS5zbmFwVG9MaW5lcyIsIHRydWUpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgibmV3Q3VlLmxpbmVQb3NpdGlvbiIsIC0xKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoIm5ld0N1ZS50ZXh0UG9zaXRpb24iLCA1MCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJuZXdDdWUuc2l6ZSIsIDEwMCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJu
ZXdDdWUuYWxpZ25tZW50IiwgIm1pZGRsZSIpOworCiAgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCI8YnI+KioqIFJlbW92ZSBhIGN1ZSBjcmVhdGVkIHdpdGggYWRkQ3VlKCkuIik7CiAgICAg
ICAgICAgICAgICAgcnVuKCJ0ZXN0VHJhY2sudHJhY2sucmVtb3ZlQ3VlKHRleHRDdWUpIik7CiAg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0ZXh0Q3VlLnRyYWNrIiwgbnVsbCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>