<?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>68429</bug_id>
          
          <creation_ts>2011-09-20 00:45:53 -0700</creation_ts>
          <short_desc>[WIN] Remove dependency on pthread from MachineStackMarker</short_desc>
          <delta_ts>2012-08-06 23:33:32 -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>JavaScriptCore</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>
          
          <blocked>68046</blocked>
    
    <blocked>88300</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>hausmann</cc>
    
    <cc>joel.dillon</cc>
    
    <cc>levin+threading</cc>
    
    <cc>mark.salisbury</cc>
    
    <cc>oliver</cc>
    
    <cc>thomas</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>469938</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-09-20 00:45:53 -0700</bug_when>
    <thetext>Use WTF::ThreadSpecific instead of pthread_key_t in JSC::MachineThreads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469940</commentid>
    <comment_count>1</comment_count>
      <attachid>107972</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-09-20 00:49:20 -0700</bug_when>
    <thetext>Created attachment 107972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469948</commentid>
    <comment_count>2</comment_count>
      <attachid>107973</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-09-20 01:14:07 -0700</bug_when>
    <thetext>Created attachment 107973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469949</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 01:16:36 -0700</bug_when>
    <thetext>Attachment 107973 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/heap/MachineStackMarker.cpp:152:  Missing space inside { }.  [whitespace/braces] [5]
Source/JavaScriptCore/heap/MachineStackMarker.cpp:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/JavaScriptCore/heap/MachineStackMarker.cpp:158:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 3 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>469952</commentid>
    <comment_count>4</comment_count>
      <attachid>107975</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-09-20 01:23:13 -0700</bug_when>
    <thetext>Created attachment 107975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504763</commentid>
    <comment_count>5</comment_count>
      <attachid>115566</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-11-17 05:00:54 -0800</bug_when>
    <thetext>Created attachment 115566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504765</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 05:03:39 -0800</bug_when>
    <thetext>Attachment 115566 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/ThreadSpecificWin.cpp:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/JavaScriptCore/wtf/ThreadSpecific.h:122:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/ThreadSpecific.h:123:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/ThreadSpecific.h:124:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/ThreadSpecific.h:125:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 5 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>504776</commentid>
    <comment_count>7</comment_count>
      <attachid>115566</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-17 05:30:29 -0800</bug_when>
    <thetext>Comment on attachment 115566
Patch

Attachment 115566 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10510175</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504782</commentid>
    <comment_count>8</comment_count>
      <attachid>115566</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-17 05:49:48 -0800</bug_when>
    <thetext>Comment on attachment 115566
Patch

Attachment 115566 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10509165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504784</commentid>
    <comment_count>9</comment_count>
      <attachid>115572</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-11-17 05:58:20 -0800</bug_when>
    <thetext>Created attachment 115572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504787</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 06:05:54 -0800</bug_when>
    <thetext>Attachment 115572 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/ThreadSpecific.h:51:  &quot;pthread.h&quot; already included at Source/JavaScriptCore/wtf/ThreadSpecific.h:48  [build/include] [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>517781</commentid>
    <comment_count>11</comment_count>
      <attachid>115572</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2011-12-08 14:13:55 -0800</bug_when>
    <thetext>Comment on attachment 115572
Patch

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

&gt; Source/JavaScriptCore/heap/MachineStackMarker.cpp:148
&gt; +        WTF::ThreadSpecificKeyDelete(m_threadSpecific);

Why do you prefix with WTF here, but not in other cases in this file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561090</commentid>
    <comment_count>12</comment_count>
      <attachid>128011</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-02-21 11:38:10 -0800</bug_when>
    <thetext>Created attachment 128011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562397</commentid>
    <comment_count>13</comment_count>
      <attachid>128011</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-02-22 14:34:43 -0800</bug_when>
    <thetext>Comment on attachment 128011
Patch

Why can&apos;t we use WTF::ThreadSpecific (like the bug title suggests)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562401</commentid>
    <comment_count>14</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-02-22 14:37:19 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 128011 [details])
&gt; Why can&apos;t we use WTF::ThreadSpecific (like the bug title suggests)?
&quot;missing&quot; constructor: http://trac.webkit.org/browser/trunk/Source/JavaScriptCore/wtf/ThreadSpecific.h?rev=107587#L79</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562490</commentid>
    <comment_count>15</comment_count>
      <attachid>128011</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-22 16:00:32 -0800</bug_when>
    <thetext>Comment on attachment 128011
Patch

I wonder if this use of pthread_key_delete is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563099</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-02-23 07:22:01 -0800</bug_when>
    <thetext>It would be great not to have to introduce a new threading abstraction. If we can find a way to make WTF::ThreadSpecific work, that would be ideal. It sounds like we could use it if we don&apos;t need to support the existing pthread_key_delete behavior. Alexey and the JSC folks are the experts here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570955</commentid>
    <comment_count>17</comment_count>
    <who name="Thomas Fletcher">thomas</who>
    <bug_when>2012-03-05 12:37:27 -0800</bug_when>
    <thetext>Is there any thought on this?  Currently this is one of the WinCE build breakers.  If we can&apos;t use the ThreadSpecific class then is the desired direction to use the Win32 API for thread specific key creation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572052</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Salisbury">mark.salisbury</who>
    <bug_when>2012-03-06 12:15:04 -0800</bug_when>
    <thetext>I&apos;m interested in this too.  I have pthreads compiling for WinCE (not tested yet), but it would be nice to have the flexibility to not use pthreads on WinCE since the project is not being maintained.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573211</commentid>
    <comment_count>19</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-03-07 13:59:23 -0800</bug_when>
    <thetext>*raises hand to show interest*

Peter, any thoughts on the use of ThreadSpecific based on Adam&apos;s comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573692</commentid>
    <comment_count>20</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-03-08 00:37:10 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; *raises hand to show interest*
&gt; 
&gt; Peter, any thoughts on the use of ThreadSpecific based on Adam&apos;s comments?

Since I do not see any Peter in the CC list, I think that you mean PATRICK.

Please don&apos;t get me wrong, but here some points:
*) It is nice to get a &quot;i want this too&quot; every day, but since we are an open source project everybody can post a patch.
*) It is hard do post a &quot;correct&quot; patch, when nobody says what&apos;s the &quot;correct&quot; way.
*) The original authors of the pthread stuff i want to remove do not show much participation here. (first patch is from 2011-09)
*) It&apos;s windows only.
*) pthread works _somehow_ on windows so no real need in the moment. That it implies additional dependencies for other ports like Qt on windows too isn&apos;t a problem for the Apple folks.
*) Like everybody else who works on WebKit in his free time, I prefer changes which get into trunk and make (more) fun to work on.

If someone tells me the way to go, I&apos;m willing to write a patch and post it for review here.
*) Extending the current ThreadSpecific with a Destructor makes the current code even more tricky (unreadable) or adds additional Maps and Sets, which make threads more constable.
*) IMHO MachineStackMarker needs some (bigger) changes to fit into the ThreadSpecific concept, since the current code does not use the pthread_key_t as a thread specific storage. It&apos;s used to detect when a thread ends.

Once again: Please don&apos;t get me wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573816</commentid>
    <comment_count>21</comment_count>
    <who name="Thomas Fletcher">thomas</who>
    <bug_when>2012-03-08 07:15:45 -0800</bug_when>
    <thetext>Well if the goal is to simply remove the blatant pthread dependency in MachineStackMarker then I am happy to provide a patch that addresses that issue so that you can continue to build for Windows platforms without the requirement of a pthread cover library on top of the native threading API.

My comment was less of a &quot;hand up +1&quot; than a question about how can we get this issue solved and moving forward ... and how can I help with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573826</commentid>
    <comment_count>22</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-03-08 07:45:27 -0800</bug_when>
    <thetext>One again: The last comment wasn&apos;t agains anybody! (more a general &quot;problem&quot; with this bug)

I had a discussion with Simon this morning about this in IRC and he agreed, that there is no easy/simple and clean solution. If we want a clean solution (and at WebKit we usually go this way) we need to investigate more on this issue. Of course is it possible to change only MachineStackMarker, but we should investigate a clean and generic solution, since we&apos;ll have similar requirements in FastMalloc too, if we want to get rid complete pthread stuff on windows.

(In reply to comment #21)
&gt; ... and how can I help with that.
Look into the code and post an idea how to solve this here. I&apos;d suggest that we agree on a solution first (what code do we ant to change/extend) so we avoid any (hard and useless) patch creation. But feel free to do it like you want. :-)

Maybe Simon has an idea of a clean solution in the meantime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591814</commentid>
    <comment_count>23</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2012-03-29 19:08:57 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; One again: The last comment wasn&apos;t agains anybody! (more a general &quot;problem&quot; with this bug)
&gt; 
&gt; I had a discussion with Simon this morning about this in IRC and he agreed, that there is no easy/simple and clean solution. If we want a clean solution (and at WebKit we usually go this way) we need to investigate more on this issue. Of course is it possible to change only MachineStackMarker, but we should investigate a clean and generic solution, since we&apos;ll have similar requirements in FastMalloc too, if we want to get rid complete pthread stuff on windows.
&gt; 
&gt; (In reply to comment #21)
&gt; &gt; ... and how can I help with that.
&gt; Look into the code and post an idea how to solve this here. I&apos;d suggest that we agree on a solution first (what code do we ant to change/extend) so we avoid any (hard and useless) patch creation. But feel free to do it like you want. :-)
&gt; 
&gt; Maybe Simon has an idea of a clean solution in the meantime?

So I&apos;ve hit this issue as well and wanted to make a potentially ill-informed comment.

So the rub with ThreadSpecific boils down to the destructor not being implemented for a very good reason, undefined behavior. But something like a pthreads implementation of ThreadSpecific would end up calling pthread_key_delete as MachineThreads does in its destructor. The fact that pthread_key_delete is called this way makes it seem like this is okay here because of some knowledge on the lifetime of the pthread_key.

So why not create something like ThreadSpecific&lt;T&gt; but with a destructor. So like a std::unique_ptr we know that only one thing owns it and we don&apos;t need to reference count it or do anything funky when determining when to delete it.

Forgive me if I&apos;m missing some larger issue as I&apos;m a relative newbie with this codebase. I&apos;m currently blocked on this issue so I figured I&apos;d chime in.

Cheers,
Don</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614085</commentid>
    <comment_count>24</comment_count>
    <who name="Joel Dillon">joel.dillon</who>
    <bug_when>2012-05-02 01:21:18 -0700</bug_when>
    <thetext>As an alternate suggestion, perhaps we could consider using

http://locklessinc.com/articles/pthreads_on_windows/

for Windows? It&apos;s implemented entirely in a header file and is BSD licensed, meaning

a) it works for both 32 and 64 bit platforms without problems (whereas there is no precompiled 64 bit version of pthreads-win32, as the name suggests).

and

b) it can be shipped with WebKit as source instead of being an external dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614145</commentid>
    <comment_count>25</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-05-02 03:10:57 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; As an alternate suggestion, perhaps we could consider using
&gt; 
&gt; http://locklessinc.com/articles/pthreads_on_windows/
&gt; 
&gt; for Windows? It&apos;s implemented entirely in a header file and is BSD licensed, meaning

Does it work? IMHO it can&apos;t: Threads are created vie CreateThread(), so there is no place where the pthread code for &quot;on thread exit&quot; can be executed. When used as DLL there are some tricks for this, since DLLs get informed about such events and can handle them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614214</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-05-02 05:54:07 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; As an alternate suggestion, perhaps we could consider using
&gt; &gt; 
&gt; &gt; http://locklessinc.com/articles/pthreads_on_windows/
&gt; &gt; 
&gt; &gt; for Windows? It&apos;s implemented entirely in a header file and is BSD licensed, meaning
&gt; 
&gt; Does it work? IMHO it can&apos;t: Threads are created vie CreateThread(), so there is no place where the pthread code for &quot;on thread exit&quot; can be executed. When used as DLL there are some tricks for this, since DLLs get informed about such events and can handle them.

Since WebKit itself is a DLL, it could make a callback into the pthread implementation whenever a thread is created/destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614237</commentid>
    <comment_count>27</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-05-02 06:27:49 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Since WebKit itself is a DLL, it could make a callback into the pthread implementation whenever a thread is created/destroyed.

But then we need additonal ugly DLL hooks in the WebKit DLL and it won&apos;t work when sb does static builds. IMHO it doesn&apos;t make much sense to implement any &quot;workarounds&quot; like DLL hooks when there is an easy way to put it into the &quot;normal&quot; codebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668841</commentid>
    <comment_count>28</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-07-13 04:08:52 -0700</bug_when>
    <thetext>The more I look into this the more I like Patrick&apos;s patch.

MachineStackMarker is using two key aspects of the underlying TLS platform API:

    1) Get notified when the thread exits
    2) Store just a pointer in the TLS (no ownership assumed, no deletion required)

When the thread that owns MachineStackMarker exits, then it will just destroy the TLS key to &quot;unsubscribe&quot; from any thread-termination notification. The destruction does not require any data deletion, because of (2).


The WTF::ThreadSpecific interface is designed to store and own a piece of data - it allocates the template parameter T implicitly per thread and it also destroy the per-thread instance.

Aspect (1) of MachineStackMarker could theoretically be mapped to the destructor of a wrapping type in MachineStackMarker, but there is no mechanism in ThreadSpecific to &quot;unsubscribe&quot; from termination deletion.

It would be possible to just solve this with another indirection inside MachineStackMarker, but it comes at the price of the ThreadSpecific remaining alive until all the threads have terminated that were ever &quot;adopted&quot;. So in a scenario with two long living threads, one creating and deleting MachineStackMarker instances and the other thread ending up using the JSC instance from time to time, we end up with slowly eating up TLS keys.

One solution I see is to introduce a pointer specific specialization of ThreadSpecific (T*) that would _just_ store a pointer and would allow for a callback when the thread terminates. But that would be a C++/template interface to what Patrick already does with a few helper functions in his patch. And it would make the ThreadSpecific API slightly inconsistent depending on the specialization.

Alexey, Adam: Would you be willing to reconsider Patrick&apos;s patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684464</commentid>
    <comment_count>29</comment_count>
      <attachid>128011</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-01 12:27:52 -0700</bug_when>
    <thetext>Comment on attachment 128011
Patch

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

&gt; Source/JavaScriptCore/wtf/ThreadSpecific.h:170
&gt; +class ThreadSpecificKeyValue;

&quot;KeyValue&quot; is a very confusing name phrase. Our typical style is to use the word &quot;platform&quot;: &quot;PlatformThreadSpecificKey&quot;.

&gt; Source/JavaScriptCore/wtf/ThreadSpecific.h:176
&gt; +void ThreadSpecificKeyCreate(ThreadSpecificKey*, void (*)(void *));
&gt; +void ThreadSpecificKeyDelete(ThreadSpecificKey);
&gt; +void ThreadSpecificSet(ThreadSpecificKey, void*);
&gt; +void* ThreadSpecificGet(ThreadSpecificKey);

Capitalization here doesn&apos;t match WebKit style.

&gt; Source/JavaScriptCore/wtf/ThreadSpecificWin.cpp:60
&gt; +        while (*next != this) {
&gt; +            ASSERT(*next);
&gt; +            next = &amp;(*next)-&gt;m_next;
&gt; +        }
&gt; +        *next = (*next)-&gt;m_next;

Linear search is so 1960s. Please use a doubly linked list with O(1) removal time.

&gt; Source/JavaScriptCore/wtf/ThreadSpecificWin.cpp:84
&gt; +    static ThreadSpecificKeyValue* m_first;

WebKit style is to use the &quot;s_&quot; prefix for static data. &quot;m_&quot; means &quot;member&quot; data. Please don&apos;t call static data member data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685134</commentid>
    <comment_count>30</comment_count>
      <attachid>156016</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-08-02 02:21:13 -0700</bug_when>
    <thetext>Created attachment 156016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685654</commentid>
    <comment_count>31</comment_count>
      <attachid>156016</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-02 12:10:00 -0700</bug_when>
    <thetext>Comment on attachment 156016
Patch

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

&gt; Source/WTF/wtf/ThreadSpecificWin.cpp:128
&gt; +        key-&gt;callDestructor();
&gt; +        key = key-&gt;next();

Do we expect the destructor to delete the PlatformThreadSpecificKey by calling threadSpecificKeyDelete()? If so, we need to fetch next() before calling the destructor, to avoid dereferencing deleted memory. If not, who do we expect to call threadSpecificKeyDelete()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685944</commentid>
    <comment_count>32</comment_count>
      <attachid>156016</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-08-02 16:04:33 -0700</bug_when>
    <thetext>Comment on attachment 156016
Patch

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

&gt;&gt; Source/WTF/wtf/ThreadSpecificWin.cpp:128
&gt;&gt; +        key = key-&gt;next();
&gt; 
&gt; Do we expect the destructor to delete the PlatformThreadSpecificKey by calling threadSpecificKeyDelete()? If so, we need to fetch next() before calling the destructor, to avoid dereferencing deleted memory. If not, who do we expect to call threadSpecificKeyDelete()?

PlatformThreadSpecificKey will be created via threadSpecificKeyCreate and deleted via threadSpecificKeyDelete. The caller of threadSpecificKeyCreate is responsible to free it via threadSpecificKeyDelete. This is the same behavior as with pthread_key_create and pthread_key_delete. callDestructor() will call the the destructor function provided by threadSpecificKeyCreate, which is stored in m_destructor. The responsibility for freeing objects should be the same as in the pthread implementation. The only difference is, that the thread specific value won&apos;t be set to NULL and there is no &quot;PTHREAD_DESTRUCTOR_ITERATIONS&quot;.
To be honest: I&apos;m not 100% happy with this API, but I want to get rid of the (silently introduced) pthread dependency. I&apos;m open to change it follow up patches (if there are any good ideas), but I (and other) want this landed, because it&apos;s a blocker since 2011(!). The main idea behind this patch is, that it only adds an abstraction to the existing pthread functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686763</commentid>
    <comment_count>33</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-03 08:26:53 -0700</bug_when>
    <thetext>&gt; The main idea behind this patch is, that it only adds an abstraction to the existing pthread functions.

I don&apos;t think you understood my comment. I&apos;m not contesting the goal of this patch. I&apos;m saying the implementation seems to have a &quot;use after free&quot; bug in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686784</commentid>
    <comment_count>34</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-08-03 08:46:09 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; &gt; The main idea behind this patch is, that it only adds an abstraction to the existing pthread functions.
&gt; 
&gt; I don&apos;t think you understood my comment. I&apos;m not contesting the goal of this patch. I&apos;m saying the implementation seems to have a &quot;use after free&quot; bug in it.

key-&gt;callDestructor() does not free key. key stays valid until threadSpecificKeyDelete() gets called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687160</commentid>
    <comment_count>35</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-03 14:34:24 -0700</bug_when>
    <thetext>&gt; key-&gt;callDestructor() does not free key. key stays valid until threadSpecificKeyDelete() gets called.

What happens if a destructor calls threadSpecificKeyDelete()?

From the pthread_key_delete man page:

&quot;The pthread_key_delete() function is callable from within destructor functions.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687426</commentid>
    <comment_count>36</comment_count>
      <attachid>156527</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-08-04 01:20:49 -0700</bug_when>
    <thetext>Created attachment 156527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688542</commentid>
    <comment_count>37</comment_count>
      <attachid>156527</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-06 16:30:19 -0700</bug_when>
    <thetext>Comment on attachment 156527
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688602</commentid>
    <comment_count>38</comment_count>
      <attachid>156527</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 17:29:30 -0700</bug_when>
    <thetext>Comment on attachment 156527
Patch

Clearing flags on attachment: 156527

Committed r124823: &lt;http://trac.webkit.org/changeset/124823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688603</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 17:29:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688869</commentid>
    <comment_count>40</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-06 23:33:32 -0700</bug_when>
    <thetext>Thank you Geoffrey and Patrick!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107972</attachid>
            <date>2011-09-20 00:49:20 -0700</date>
            <delta_ts>2011-09-20 01:14:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68429.patch</filename>
            <type>text/plain</type>
            <size>7040</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUwOTUyNTguLjkxZWZiNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTA5LTIwICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBXVEY6OlRocmVhZFNwZWNp
ZmljIGluc3RlYWQgb2YgcHRocmVhZF9rZXlfdCBpbiBKU0M6Ok1hY2hpbmVUaHJlYWRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXVEY6OlRocmVh
ZFNwZWNpZmljIHRvIG1ha2UgdGhlIGNvZGUgbW9yZSBwb3J0YWJsZS4KKworICAgICAgICAqIGhl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6
OkFkZGVkVGhyZWFkczo6QWRkZWRUaHJlYWRzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVh
ZHM6OkFkZGVkVGhyZWFkczo6fkFkZGVkVGhyZWFkcyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVU
aHJlYWRzOjpBZGRlZFRocmVhZHM6OmFkZCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRz
OjpNYWNoaW5lVGhyZWFkcyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjp0aHJlYWRT
cGVjaWZpYyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFk
KToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OmdhdGhlckZyb21PdGhlclRocmVhZCk6
CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyk6
CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKwogMjAxMS0wOS0xMyAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlSklUOjpz
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKE5vZGVJbmRleCwgTm9kZUluZGV4KSBzaG91bGQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCmluZGV4
IGM4NDBlMmMuLjNjMzYxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcApAQCAtMzQsNiArMzQsMTAgQEAKICNkZWZpbmUgV1RGX1VT
RV9QVEhSRUFEUyAxCiAjZW5kaWYKIAorI2lmIFVTRShQVEhSRUFEUykKKyNpbmNsdWRlIDxwdGhy
ZWFkLmg+CisjZW5kaWYKKwogI2lmIE9TKERBUldJTikKIAogI2luY2x1ZGUgPG1hY2gvbWFjaF9p
bml0Lmg+CkBAIC0xNDcsMTMgKzE1MSwzMSBAQCBwdWJsaWM6CiAgICAgdm9pZCogc3RhY2tCYXNl
OwogfTsKIAorY2xhc3MgTWFjaGluZVRocmVhZHM6OkFkZGVkVGhyZWFkcyB7CitwdWJsaWM6Cisg
ICAgQWRkZWRUaHJlYWRzKCkge30KKyAgICB+QWRkZWRUaHJlYWRzKCkgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fbWFjaGluZVRocmVhZHMuc2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICBtX21hY2hpbmVUaHJlYWRzW2ldLT5yZW1vdmVDdXJyZW50VGhyZWFkKCk7CisgICAgfQor
CisgICAgYm9vbCBhZGQoTWFjaGluZVRocmVhZHMqIHZhbHVlKSB7CisgICAgICAgIGlmIChtX21h
Y2hpbmVUaHJlYWRzLmNvbnRhaW5zKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgbV9tYWNoaW5lVGhyZWFkcy5hcHBlbmQodmFsdWUpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPE1hY2hpbmVUaHJlYWRzKiwgMT4g
bV9tYWNoaW5lVGhyZWFkczsKK307CisKICNlbmRpZgogCiBNYWNoaW5lVGhyZWFkczo6TWFjaGlu
ZVRocmVhZHMoSGVhcCogaGVhcCkKICAgICA6IG1faGVhcChoZWFwKQogI2lmIEVOQUJMRShKU0Nf
TVVMVElQTEVfVEhSRUFEUykKICAgICAsIG1fcmVnaXN0ZXJlZFRocmVhZHMoMCkKLSAgICAsIG1f
dGhyZWFkU3BlY2lmaWMoMCkKICNlbmRpZgogewogfQpAQCAtMTYxLDExICsxODMsNiBAQCBNYWNo
aW5lVGhyZWFkczo6TWFjaGluZVRocmVhZHMoSGVhcCogaGVhcCkKIE1hY2hpbmVUaHJlYWRzOjp+
TWFjaGluZVRocmVhZHMoKQogewogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKLSAg
ICBpZiAobV90aHJlYWRTcGVjaWZpYykgewotICAgICAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tl
eV9kZWxldGUobV90aHJlYWRTcGVjaWZpYyk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3Is
ICFlcnJvcik7Ci0gICAgfQotCiAgICAgTXV0ZXhMb2NrZXIgcmVnaXN0ZXJlZFRocmVhZHNMb2Nr
KG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CiAgICAgZm9yIChUaHJlYWQqIHQgPSBtX3JlZ2lz
dGVyZWRUaHJlYWRzOyB0OykgewogICAgICAgICBUaHJlYWQqIG5leHQgPSB0LT5uZXh0OwpAQCAt
MTc3LDYgKzE5NCwxMiBAQCBNYWNoaW5lVGhyZWFkczo6fk1hY2hpbmVUaHJlYWRzKCkKIAogI2lm
IEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKIAorTWFjaGluZVRocmVhZHM6OlRocmVhZFNw
ZWNpZmljVHlwZSYgTWFjaGluZVRocmVhZHM6OnRocmVhZFNwZWNpZmljKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFRocmVhZFNwZWNpZmljVHlwZSwgc3RhdGljVGhyZWFkU3BlY2lmaWMs
ICgpKTsKKyAgICByZXR1cm4gc3RhdGljVGhyZWFkU3BlY2lmaWM7Cit9CisKIHN0YXRpYyBpbmxp
bmUgUGxhdGZvcm1UaHJlYWQgZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkKIHsKICNpZiBPUyhE
QVJXSU4pCkBAIC0xOTAsMjIgKzIxMywxNSBAQCBzdGF0aWMgaW5saW5lIFBsYXRmb3JtVGhyZWFk
IGdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpCiAKIHZvaWQgTWFjaGluZVRocmVhZHM6Om1ha2VV
c2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCkKIHsKLSAgICBpZiAobV90aHJlYWRTcGVjaWZpYykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfY3JlYXRlKCZt
X3RocmVhZFNwZWNpZmljLCByZW1vdmVUaHJlYWQpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAg
Q1JBU0goKTsKIH0KIAogdm9pZCBNYWNoaW5lVGhyZWFkczo6YWRkQ3VycmVudFRocmVhZCgpCiB7
CiAgICAgQVNTRVJUKCFtX2hlYXAtPmdsb2JhbERhdGEoKS0+ZXhjbHVzaXZlVGhyZWFkIHx8IG1f
aGVhcC0+Z2xvYmFsRGF0YSgpLT5leGNsdXNpdmVUaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsK
IAotICAgIGlmICghbV90aHJlYWRTcGVjaWZpYyB8fCBwdGhyZWFkX2dldHNwZWNpZmljKG1fdGhy
ZWFkU3BlY2lmaWMpKQorICAgIGlmICghdGhyZWFkU3BlY2lmaWMoKS0+YWRkKHRoaXMpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBwdGhyZWFkX3NldHNwZWNpZmljKG1fdGhyZWFkU3BlY2lmaWMs
IHRoaXMpOwogICAgIFRocmVhZCogdGhyZWFkID0gbmV3IFRocmVhZChwdGhyZWFkX3NlbGYoKSwg
Z2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCksIG1faGVhcC0+Z2xvYmFsRGF0YSgpLT5zdGFjaygp
Lm9yaWdpbigpKTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011
dGV4KTsKQEAgLTIxNCwxMiArMjMwLDYgQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6YWRkQ3VycmVu
dFRocmVhZCgpCiAgICAgbV9yZWdpc3RlcmVkVGhyZWFkcyA9IHRocmVhZDsKIH0KIAotdm9pZCBN
YWNoaW5lVGhyZWFkczo6cmVtb3ZlVGhyZWFkKHZvaWQqIHApCi17Ci0gICAgaWYgKHApCi0gICAg
ICAgIHN0YXRpY19jYXN0PE1hY2hpbmVUaHJlYWRzKj4ocCktPnJlbW92ZUN1cnJlbnRUaHJlYWQo
KTsKLX0KLQogdm9pZCBNYWNoaW5lVGhyZWFkczo6cmVtb3ZlQ3VycmVudFRocmVhZCgpCiB7CiAg
ICAgcHRocmVhZF90IGN1cnJlbnRQb3NpeFRocmVhZCA9IHB0aHJlYWRfc2VsZigpOwpAQCAtNDY2
LDI3ICs0NzYsMjMgQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6Z2F0aGVyQ29uc2VydmF0aXZlUm9v
dHMoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3QKICAgICBnYXRoZXJGcm9tQ3Vy
cmVudFRocmVhZChjb25zZXJ2YXRpdmVSb290cywgc3RhY2tDdXJyZW50KTsKIAogI2lmIEVOQUJM
RShKU0NfTVVMVElQTEVfVEhSRUFEUykKLQotICAgIGlmIChtX3RocmVhZFNwZWNpZmljKSB7Ci0K
LSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOworICAg
IE11dGV4TG9ja2VyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKIAogI2lmbmRlZiBO
REVCVUcKLSAgICAgICAgLy8gRm9yYmlkIG1hbGxvYyBkdXJpbmcgdGhlIGdhdGhlciBwaGFzZS4g
VGhlIGdhdGhlciBwaGFzZSBzdXNwZW5kcwotICAgICAgICAvLyB0aHJlYWRzLCBzbyBhIG1hbGxv
YyBkdXJpbmcgZ2F0aGVyIHdvdWxkIHJpc2sgYSBkZWFkbG9jayB3aXRoIGEKLSAgICAgICAgLy8g
dGhyZWFkIHRoYXQgaGFkIGJlZW4gc3VzcGVuZGVkIHdoaWxlIGhvbGRpbmcgdGhlIG1hbGxvYyBs
b2NrLgotICAgICAgICBmYXN0TWFsbG9jRm9yYmlkKCk7Ci0jZW5kaWYKLSAgICAgICAgLy8gSXQg
aXMgc2FmZSB0byBhY2Nlc3MgdGhlIHJlZ2lzdGVyZWRUaHJlYWRzIGxpc3QsIGJlY2F1c2Ugd2Ug
ZWFybGllciBhc3NlcnRlZCB0aGF0IGxvY2tzIGFyZSBiZWluZyBoZWxkLAotICAgICAgICAvLyBh
bmQgc2luY2UgdGhpcyBpcyBhIHNoYXJlZCBoZWFwLCB0aGV5IGFyZSByZWFsIGxvY2tzLgotICAg
ICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdpc3RlcmVkVGhyZWFkczsgdGhyZWFkOyB0
aHJlYWQgPSB0aHJlYWQtPm5leHQpIHsKLSAgICAgICAgICAgIGlmICghcHRocmVhZF9lcXVhbCh0
aHJlYWQtPnBvc2l4VGhyZWFkLCBwdGhyZWFkX3NlbGYoKSkpCi0gICAgICAgICAgICAgICAgZ2F0
aGVyRnJvbU90aGVyVGhyZWFkKGNvbnNlcnZhdGl2ZVJvb3RzLCB0aHJlYWQpOwotICAgICAgICB9
CisgICAgLy8gRm9yYmlkIG1hbGxvYyBkdXJpbmcgdGhlIGdhdGhlciBwaGFzZS4gVGhlIGdhdGhl
ciBwaGFzZSBzdXNwZW5kcworICAgIC8vIHRocmVhZHMsIHNvIGEgbWFsbG9jIGR1cmluZyBnYXRo
ZXIgd291bGQgcmlzayBhIGRlYWRsb2NrIHdpdGggYQorICAgIC8vIHRocmVhZCB0aGF0IGhhZCBi
ZWVuIHN1c3BlbmRlZCB3aGlsZSBob2xkaW5nIHRoZSBtYWxsb2MgbG9jay4KKyAgICBmYXN0TWFs
bG9jRm9yYmlkKCk7CisjZW5kaWYKKyAgICAvLyBJdCBpcyBzYWZlIHRvIGFjY2VzcyB0aGUgcmVn
aXN0ZXJlZFRocmVhZHMgbGlzdCwgYmVjYXVzZSB3ZSBlYXJsaWVyIGFzc2VydGVkIHRoYXQgbG9j
a3MgYXJlIGJlaW5nIGhlbGQsCisgICAgLy8gYW5kIHNpbmNlIHRoaXMgaXMgYSBzaGFyZWQgaGVh
cCwgdGhleSBhcmUgcmVhbCBsb2Nrcy4KKyAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdp
c3RlcmVkVGhyZWFkczsgdGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQpIHsKKyAgICAgICAg
aWYgKCFwdGhyZWFkX2VxdWFsKHRocmVhZC0+cG9zaXhUaHJlYWQsIHB0aHJlYWRfc2VsZigpKSkK
KyAgICAgICAgICAgIGdhdGhlckZyb21PdGhlclRocmVhZChjb25zZXJ2YXRpdmVSb290cywgdGhy
ZWFkKTsKKyAgICB9CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBmYXN0TWFsbG9jQWxsb3coKTsK
KyAgICBmYXN0TWFsbG9jQWxsb3coKTsKICNlbmRpZgotICAgIH0KICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCmluZGV4IGM4
MTRhYzUuLjQwNjE0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
Y2hpbmVTdGFja01hcmtlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hp
bmVTdGFja01hcmtlci5oCkBAIC0yMywxMiArMjMsOSBAQAogI2RlZmluZSBNYWNoaW5lVGhyZWFk
c19oCiAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
U3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCi0jaWYg
RU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNlbmRp
ZgotCiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEhlYXA7CkBAIC01MiwxMCArNDksMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAg
ICAgICAgIGNsYXNzIFRocmVhZDsKKyAgICAgICAgY2xhc3MgQWRkZWRUaHJlYWRzOwogCi0gICAg
ICAgIHN0YXRpYyB2b2lkIHJlbW92ZVRocmVhZCh2b2lkKik7CiAgICAgICAgIHZvaWQgcmVtb3Zl
Q3VycmVudFRocmVhZCgpOwogCisgICAgICAgIHR5cGVkZWYgV1RGOjpUaHJlYWRTcGVjaWZpYzxB
ZGRlZFRocmVhZHM+IFRocmVhZFNwZWNpZmljVHlwZTsKKyAgICAgICAgc3RhdGljIFRocmVhZFNw
ZWNpZmljVHlwZSYgdGhyZWFkU3BlY2lmaWMoKTsKKwogICAgICAgICB2b2lkIGdhdGhlckZyb21P
dGhlclRocmVhZChDb25zZXJ2YXRpdmVSb290cyYsIFRocmVhZCopOwogI2VuZGlmCiAKQEAgLTY0
LDcgKzY0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJF
QURTKQogICAgICAgICBNdXRleCBtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXg7CiAgICAgICAgIFRo
cmVhZCogbV9yZWdpc3RlcmVkVGhyZWFkczsKLSAgICAgICAgcHRocmVhZF9rZXlfdCBtX3RocmVh
ZFNwZWNpZmljOwogI2VuZGlmCiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107973</attachid>
            <date>2011-09-20 01:14:07 -0700</date>
            <delta_ts>2011-09-20 01:23:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68429.patch</filename>
            <type>text/plain</type>
            <size>6775</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDIzNmNmYTcuLjQyZTEyMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTA5LTIwICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBXVEY6OlRocmVhZFNwZWNp
ZmljIGluc3RlYWQgb2YgcHRocmVhZF9rZXlfdCBpbiBKU0M6Ok1hY2hpbmVUaHJlYWRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXVEY6OlRocmVh
ZFNwZWNpZmljIHRvIG1ha2UgdGhlIGNvZGUgbW9yZSBwb3J0YWJsZS4KKworICAgICAgICAqIGhl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6
OkFkZGVkVGhyZWFkczo6QWRkZWRUaHJlYWRzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVh
ZHM6OkFkZGVkVGhyZWFkczo6fkFkZGVkVGhyZWFkcyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVU
aHJlYWRzOjpBZGRlZFRocmVhZHM6OmFkZCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRz
OjpNYWNoaW5lVGhyZWFkcyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjp0aHJlYWRT
cGVjaWZpYyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFk
KToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OmdhdGhlckZyb21PdGhlclRocmVhZCk6
CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyk6
CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKwogMjAxMS0wOS0xOSAgTWFy
ayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0
b1ByaW1pdGl2ZSBmcm9tIEpTQ2VsbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggZjkxYjhkOS4uMzhhZmJmZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0z
NCw2ICszNCwxMCBAQAogI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDEKICNlbmRpZgogCisjaWYg
VVNFKFBUSFJFQURTKQorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCiAjaWYgT1MoREFS
V0lOKQogCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KQEAgLTE0MywyMCArMTQ3LDMzIEBA
IHB1YmxpYzoKICAgICB2b2lkKiBzdGFja0Jhc2U7CiB9OwogCitjbGFzcyBNYWNoaW5lVGhyZWFk
czo6QWRkZWRUaHJlYWRzIHsKK3B1YmxpYzoKKyAgICBBZGRlZFRocmVhZHMoKSB7fQorICAgIH5B
ZGRlZFRocmVhZHMoKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9tYWNoaW5l
VGhyZWFkcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fbWFjaGluZVRocmVhZHNbaV0tPnJl
bW92ZUN1cnJlbnRUaHJlYWQoKTsKKyAgICB9CisKKyAgICBib29sIGFkZChNYWNoaW5lVGhyZWFk
cyogdmFsdWUpIHsKKyAgICAgICAgaWYgKG1fbWFjaGluZVRocmVhZHMuY29udGFpbnModmFsdWUp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX21hY2hpbmVUaHJlYWRzLmFw
cGVuZCh2YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBWZWN0b3I8TWFjaGluZVRocmVhZHMqLCAxPiBtX21hY2hpbmVUaHJlYWRzOworfTsKKwogTWFj
aGluZVRocmVhZHM6Ok1hY2hpbmVUaHJlYWRzKEhlYXAqIGhlYXApCiAgICAgOiBtX2hlYXAoaGVh
cCkKICAgICAsIG1fcmVnaXN0ZXJlZFRocmVhZHMoMCkKLSAgICAsIG1fdGhyZWFkU3BlY2lmaWMo
MCkKIHsKIH0KIAogTWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhyZWFkcygpCiB7Ci0gICAgaWYg
KG1fdGhyZWFkU3BlY2lmaWMpIHsKLSAgICAgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfZGVs
ZXRlKG1fdGhyZWFkU3BlY2lmaWMpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCAhZXJy
b3IpOwotICAgIH0KLQogICAgIE11dGV4TG9ja2VyIHJlZ2lzdGVyZWRUaHJlYWRzTG9jayhtX3Jl
Z2lzdGVyZWRUaHJlYWRzTXV0ZXgpOwogICAgIGZvciAoVGhyZWFkKiB0ID0gbV9yZWdpc3RlcmVk
VGhyZWFkczsgdDspIHsKICAgICAgICAgVGhyZWFkKiBuZXh0ID0gdC0+bmV4dDsKQEAgLTE2NSw2
ICsxODIsMTIgQEAgTWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhyZWFkcygpCiAgICAgfQogfQog
CitNYWNoaW5lVGhyZWFkczo6VGhyZWFkU3BlY2lmaWNUeXBlJiBNYWNoaW5lVGhyZWFkczo6dGhy
ZWFkU3BlY2lmaWMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGhyZWFkU3BlY2lmaWNU
eXBlLCBzdGF0aWNUaHJlYWRTcGVjaWZpYywgKCkpOworICAgIHJldHVybiBzdGF0aWNUaHJlYWRT
cGVjaWZpYzsKK30KKwogc3RhdGljIGlubGluZSBQbGF0Zm9ybVRocmVhZCBnZXRDdXJyZW50UGxh
dGZvcm1UaHJlYWQoKQogewogI2lmIE9TKERBUldJTikKQEAgLTE3OCwyMiArMjAxLDE1IEBAIHN0
YXRpYyBpbmxpbmUgUGxhdGZvcm1UaHJlYWQgZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkKIAog
dm9pZCBNYWNoaW5lVGhyZWFkczo6bWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKQogewot
ICAgIGlmIChtX3RocmVhZFNwZWNpZmljKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnQgZXJy
b3IgPSBwdGhyZWFkX2tleV9jcmVhdGUoJm1fdGhyZWFkU3BlY2lmaWMsIHJlbW92ZVRocmVhZCk7
Ci0gICAgaWYgKGVycm9yKQotICAgICAgICBDUkFTSCgpOwogfQogCiB2b2lkIE1hY2hpbmVUaHJl
YWRzOjphZGRDdXJyZW50VGhyZWFkKCkKIHsKICAgICBBU1NFUlQoIW1faGVhcC0+Z2xvYmFsRGF0
YSgpLT5leGNsdXNpdmVUaHJlYWQgfHwgbV9oZWFwLT5nbG9iYWxEYXRhKCktPmV4Y2x1c2l2ZVRo
cmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOwogCi0gICAgaWYgKCFtX3RocmVhZFNwZWNpZmljIHx8
IHB0aHJlYWRfZ2V0c3BlY2lmaWMobV90aHJlYWRTcGVjaWZpYykpCisgICAgaWYgKCF0aHJlYWRT
cGVjaWZpYygpLT5hZGQodGhpcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIHB0aHJlYWRfc2V0
c3BlY2lmaWMobV90aHJlYWRTcGVjaWZpYywgdGhpcyk7CiAgICAgVGhyZWFkKiB0aHJlYWQgPSBu
ZXcgVGhyZWFkKHB0aHJlYWRfc2VsZigpLCBnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKSwgbV9o
ZWFwLT5nbG9iYWxEYXRhKCktPnN0YWNrKCkub3JpZ2luKCkpOwogCiAgICAgTXV0ZXhMb2NrZXIg
bG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOwpAQCAtMjAyLDEyICsyMTgsNiBAQCB2b2lk
IE1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKCkKICAgICBtX3JlZ2lzdGVyZWRUaHJl
YWRzID0gdGhyZWFkOwogfQogCi12b2lkIE1hY2hpbmVUaHJlYWRzOjpyZW1vdmVUaHJlYWQodm9p
ZCogcCkKLXsKLSAgICBpZiAocCkKLSAgICAgICAgc3RhdGljX2Nhc3Q8TWFjaGluZVRocmVhZHMq
PihwKS0+cmVtb3ZlQ3VycmVudFRocmVhZCgpOwotfQotCiB2b2lkIE1hY2hpbmVUaHJlYWRzOjpy
ZW1vdmVDdXJyZW50VGhyZWFkKCkKIHsKICAgICBwdGhyZWFkX3QgY3VycmVudFBvc2l4VGhyZWFk
ID0gcHRocmVhZF9zZWxmKCk7CkBAIC00NzIsMjYgKzQ4MiwyMyBAQCB2b2lkIE1hY2hpbmVUaHJl
YWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0
aXZlUm9vdAogewogICAgIGdhdGhlckZyb21DdXJyZW50VGhyZWFkKGNvbnNlcnZhdGl2ZVJvb3Rz
LCBzdGFja0N1cnJlbnQpOwogCi0gICAgaWYgKG1fdGhyZWFkU3BlY2lmaWMpIHsKLQotICAgICAg
ICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CisgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOwogCiAjaWZuZGVmIE5ERUJVRwot
ICAgICAgICAvLyBGb3JiaWQgbWFsbG9jIGR1cmluZyB0aGUgZ2F0aGVyIHBoYXNlLiBUaGUgZ2F0
aGVyIHBoYXNlIHN1c3BlbmRzCi0gICAgICAgIC8vIHRocmVhZHMsIHNvIGEgbWFsbG9jIGR1cmlu
ZyBnYXRoZXIgd291bGQgcmlzayBhIGRlYWRsb2NrIHdpdGggYQotICAgICAgICAvLyB0aHJlYWQg
dGhhdCBoYWQgYmVlbiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyB0aGUgbWFsbG9jIGxvY2suCi0g
ICAgICAgIGZhc3RNYWxsb2NGb3JiaWQoKTsKKyAgICAvLyBGb3JiaWQgbWFsbG9jIGR1cmluZyB0
aGUgZ2F0aGVyIHBoYXNlLiBUaGUgZ2F0aGVyIHBoYXNlIHN1c3BlbmRzCisgICAgLy8gdGhyZWFk
cywgc28gYSBtYWxsb2MgZHVyaW5nIGdhdGhlciB3b3VsZCByaXNrIGEgZGVhZGxvY2sgd2l0aCBh
CisgICAgLy8gdGhyZWFkIHRoYXQgaGFkIGJlZW4gc3VzcGVuZGVkIHdoaWxlIGhvbGRpbmcgdGhl
IG1hbGxvYyBsb2NrLgorICAgIGZhc3RNYWxsb2NGb3JiaWQoKTsKICNlbmRpZgotICAgICAgICAv
LyBJdCBpcyBzYWZlIHRvIGFjY2VzcyB0aGUgcmVnaXN0ZXJlZFRocmVhZHMgbGlzdCwgYmVjYXVz
ZSB3ZSBlYXJsaWVyIGFzc2VydGVkIHRoYXQgbG9ja3MgYXJlIGJlaW5nIGhlbGQsCi0gICAgICAg
IC8vIGFuZCBzaW5jZSB0aGlzIGlzIGEgc2hhcmVkIGhlYXAsIHRoZXkgYXJlIHJlYWwgbG9ja3Mu
Ci0gICAgICAgIGZvciAoVGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJl
YWQ7IHRocmVhZCA9IHRocmVhZC0+bmV4dCkgewotICAgICAgICAgICAgaWYgKCFwdGhyZWFkX2Vx
dWFsKHRocmVhZC0+cG9zaXhUaHJlYWQsIHB0aHJlYWRfc2VsZigpKSkKLSAgICAgICAgICAgICAg
ICBnYXRoZXJGcm9tT3RoZXJUaHJlYWQoY29uc2VydmF0aXZlUm9vdHMsIHRocmVhZCk7Ci0gICAg
ICAgIH0KKyAgICAvLyBJdCBpcyBzYWZlIHRvIGFjY2VzcyB0aGUgcmVnaXN0ZXJlZFRocmVhZHMg
bGlzdCwgYmVjYXVzZSB3ZSBlYXJsaWVyIGFzc2VydGVkIHRoYXQgbG9ja3MgYXJlIGJlaW5nIGhl
bGQsCisgICAgLy8gYW5kIHNpbmNlIHRoaXMgaXMgYSBzaGFyZWQgaGVhcCwgdGhleSBhcmUgcmVh
bCBsb2Nrcy4KKyAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdpc3RlcmVkVGhyZWFkczsg
dGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQpIHsKKyAgICAgICAgaWYgKCFwdGhyZWFkX2Vx
dWFsKHRocmVhZC0+cG9zaXhUaHJlYWQsIHB0aHJlYWRfc2VsZigpKSkKKyAgICAgICAgICAgIGdh
dGhlckZyb21PdGhlclRocmVhZChjb25zZXJ2YXRpdmVSb290cywgdGhyZWFkKTsKKyAgICB9CiAj
aWZuZGVmIE5ERUJVRwotICAgICAgICBmYXN0TWFsbG9jQWxsb3coKTsKKyAgICBmYXN0TWFsbG9j
QWxsb3coKTsKICNlbmRpZgotICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCmluZGV4IDY5YzQ1
MzcuLjRlOTIzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hp
bmVTdGFja01hcmtlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVT
dGFja01hcmtlci5oCkBAIC0yMiw4ICsyMiw4IEBACiAjaWZuZGVmIE1hY2hpbmVUaHJlYWRzX2gK
ICNkZWZpbmUgTWFjaGluZVRocmVhZHNfaAogCi0jaW5jbHVkZSA8cHRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNDYsMTYgKzQ2LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdhdGhlckZy
b21DdXJyZW50VGhyZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiwgdm9pZCogc3RhY2tDdXJyZW50KTsK
IAogICAgICAgICBjbGFzcyBUaHJlYWQ7CisgICAgICAgIGNsYXNzIEFkZGVkVGhyZWFkczsKIAot
ICAgICAgICBzdGF0aWMgdm9pZCByZW1vdmVUaHJlYWQodm9pZCopOwogICAgICAgICB2b2lkIHJl
bW92ZUN1cnJlbnRUaHJlYWQoKTsKIAorICAgICAgICB0eXBlZGVmIFdURjo6VGhyZWFkU3BlY2lm
aWM8QWRkZWRUaHJlYWRzPiBUaHJlYWRTcGVjaWZpY1R5cGU7CisgICAgICAgIHN0YXRpYyBUaHJl
YWRTcGVjaWZpY1R5cGUmIHRocmVhZFNwZWNpZmljKCk7CisKICAgICAgICAgdm9pZCBnYXRoZXJG
cm9tT3RoZXJUaHJlYWQoQ29uc2VydmF0aXZlUm9vdHMmLCBUaHJlYWQqKTsKIAogICAgICAgICBI
ZWFwKiBtX2hlYXA7CiAgICAgICAgIE11dGV4IG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleDsKICAg
ICAgICAgVGhyZWFkKiBtX3JlZ2lzdGVyZWRUaHJlYWRzOwotICAgICAgICBwdGhyZWFkX2tleV90
IG1fdGhyZWFkU3BlY2lmaWM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107975</attachid>
            <date>2011-09-20 01:23:13 -0700</date>
            <delta_ts>2011-11-17 05:00:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68429.patch</filename>
            <type>text/plain</type>
            <size>6786</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDIzNmNmYTcuLjQyZTEyMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTA5LTIwICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBXVEY6OlRocmVhZFNwZWNp
ZmljIGluc3RlYWQgb2YgcHRocmVhZF9rZXlfdCBpbiBKU0M6Ok1hY2hpbmVUaHJlYWRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXVEY6OlRocmVh
ZFNwZWNpZmljIHRvIG1ha2UgdGhlIGNvZGUgbW9yZSBwb3J0YWJsZS4KKworICAgICAgICAqIGhl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6
OkFkZGVkVGhyZWFkczo6QWRkZWRUaHJlYWRzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVh
ZHM6OkFkZGVkVGhyZWFkczo6fkFkZGVkVGhyZWFkcyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVU
aHJlYWRzOjpBZGRlZFRocmVhZHM6OmFkZCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRz
OjpNYWNoaW5lVGhyZWFkcyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjp0aHJlYWRT
cGVjaWZpYyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFk
KToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OmdhdGhlckZyb21PdGhlclRocmVhZCk6
CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyk6
CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKwogMjAxMS0wOS0xOSAgTWFy
ayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0
b1ByaW1pdGl2ZSBmcm9tIEpTQ2VsbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggZjkxYjhkOS4uNDNiZmQzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0z
NCw2ICszNCwxMCBAQAogI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDEKICNlbmRpZgogCisjaWYg
VVNFKFBUSFJFQURTKQorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCiAjaWYgT1MoREFS
V0lOKQogCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KQEAgLTE0MywyMCArMTQ3LDM1IEBA
IHB1YmxpYzoKICAgICB2b2lkKiBzdGFja0Jhc2U7CiB9OwogCitjbGFzcyBNYWNoaW5lVGhyZWFk
czo6QWRkZWRUaHJlYWRzIHsKK3B1YmxpYzoKKyAgICBBZGRlZFRocmVhZHMoKSB7IH0KKyAgICB+
QWRkZWRUaHJlYWRzKCkKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9t
YWNoaW5lVGhyZWFkcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fbWFjaGluZVRocmVhZHNb
aV0tPnJlbW92ZUN1cnJlbnRUaHJlYWQoKTsKKyAgICB9CisKKyAgICBib29sIGFkZChNYWNoaW5l
VGhyZWFkcyogdmFsdWUpCisgICAgeworICAgICAgICBpZiAobV9tYWNoaW5lVGhyZWFkcy5jb250
YWlucyh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1fbWFjaGlu
ZVRocmVhZHMuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitw
cml2YXRlOgorICAgIFZlY3RvcjxNYWNoaW5lVGhyZWFkcyosIDE+IG1fbWFjaGluZVRocmVhZHM7
Cit9OworCiBNYWNoaW5lVGhyZWFkczo6TWFjaGluZVRocmVhZHMoSGVhcCogaGVhcCkKICAgICA6
IG1faGVhcChoZWFwKQogICAgICwgbV9yZWdpc3RlcmVkVGhyZWFkcygwKQotICAgICwgbV90aHJl
YWRTcGVjaWZpYygwKQogewogfQogCiBNYWNoaW5lVGhyZWFkczo6fk1hY2hpbmVUaHJlYWRzKCkK
IHsKLSAgICBpZiAobV90aHJlYWRTcGVjaWZpYykgewotICAgICAgICBpbnQgZXJyb3IgPSBwdGhy
ZWFkX2tleV9kZWxldGUobV90aHJlYWRTcGVjaWZpYyk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
ZXJyb3IsICFlcnJvcik7Ci0gICAgfQotCiAgICAgTXV0ZXhMb2NrZXIgcmVnaXN0ZXJlZFRocmVh
ZHNMb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CiAgICAgZm9yIChUaHJlYWQqIHQgPSBt
X3JlZ2lzdGVyZWRUaHJlYWRzOyB0OykgewogICAgICAgICBUaHJlYWQqIG5leHQgPSB0LT5uZXh0
OwpAQCAtMTY1LDYgKzE4NCwxMiBAQCBNYWNoaW5lVGhyZWFkczo6fk1hY2hpbmVUaHJlYWRzKCkK
ICAgICB9CiB9CiAKK01hY2hpbmVUaHJlYWRzOjpUaHJlYWRTcGVjaWZpY1R5cGUmIE1hY2hpbmVU
aHJlYWRzOjp0aHJlYWRTcGVjaWZpYygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUaHJl
YWRTcGVjaWZpY1R5cGUsIHN0YXRpY1RocmVhZFNwZWNpZmljLCAoKSk7CisgICAgcmV0dXJuIHN0
YXRpY1RocmVhZFNwZWNpZmljOworfQorCiBzdGF0aWMgaW5saW5lIFBsYXRmb3JtVGhyZWFkIGdl
dEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpCiB7CiAjaWYgT1MoREFSV0lOKQpAQCAtMTc4LDIyICsy
MDMsMTUgQEAgc3RhdGljIGlubGluZSBQbGF0Zm9ybVRocmVhZCBnZXRDdXJyZW50UGxhdGZvcm1U
aHJlYWQoKQogCiB2b2lkIE1hY2hpbmVUaHJlYWRzOjptYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhy
ZWFkcygpCiB7Ci0gICAgaWYgKG1fdGhyZWFkU3BlY2lmaWMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgmbV90aHJlYWRTcGVjaWZpYywgcmVt
b3ZlVGhyZWFkKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIENSQVNIKCk7CiB9CiAKIHZvaWQg
TWFjaGluZVRocmVhZHM6OmFkZEN1cnJlbnRUaHJlYWQoKQogewogICAgIEFTU0VSVCghbV9oZWFw
LT5nbG9iYWxEYXRhKCktPmV4Y2x1c2l2ZVRocmVhZCB8fCBtX2hlYXAtPmdsb2JhbERhdGEoKS0+
ZXhjbHVzaXZlVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CiAKLSAgICBpZiAoIW1fdGhyZWFk
U3BlY2lmaWMgfHwgcHRocmVhZF9nZXRzcGVjaWZpYyhtX3RocmVhZFNwZWNpZmljKSkKKyAgICBp
ZiAoIXRocmVhZFNwZWNpZmljKCktPmFkZCh0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cHRocmVhZF9zZXRzcGVjaWZpYyhtX3RocmVhZFNwZWNpZmljLCB0aGlzKTsKICAgICBUaHJlYWQq
IHRocmVhZCA9IG5ldyBUaHJlYWQocHRocmVhZF9zZWxmKCksIGdldEN1cnJlbnRQbGF0Zm9ybVRo
cmVhZCgpLCBtX2hlYXAtPmdsb2JhbERhdGEoKS0+c3RhY2soKS5vcmlnaW4oKSk7CiAKICAgICBN
dXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CkBAIC0yMDIsMTIgKzIy
MCw2IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmFkZEN1cnJlbnRUaHJlYWQoKQogICAgIG1fcmVn
aXN0ZXJlZFRocmVhZHMgPSB0aHJlYWQ7CiB9CiAKLXZvaWQgTWFjaGluZVRocmVhZHM6OnJlbW92
ZVRocmVhZCh2b2lkKiBwKQotewotICAgIGlmIChwKQotICAgICAgICBzdGF0aWNfY2FzdDxNYWNo
aW5lVGhyZWFkcyo+KHApLT5yZW1vdmVDdXJyZW50VGhyZWFkKCk7Ci19Ci0KIHZvaWQgTWFjaGlu
ZVRocmVhZHM6OnJlbW92ZUN1cnJlbnRUaHJlYWQoKQogewogICAgIHB0aHJlYWRfdCBjdXJyZW50
UG9zaXhUaHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKQEAgLTQ3MiwyNiArNDg0LDIzIEBAIHZvaWQg
TWFjaGluZVRocmVhZHM6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3Rz
JiBjb25zZXJ2YXRpdmVSb290CiB7CiAgICAgZ2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQoY29uc2Vy
dmF0aXZlUm9vdHMsIHN0YWNrQ3VycmVudCk7CiAKLSAgICBpZiAobV90aHJlYWRTcGVjaWZpYykg
ewotCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsK
KyAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CiAKICNpZm5k
ZWYgTkRFQlVHCi0gICAgICAgIC8vIEZvcmJpZCBtYWxsb2MgZHVyaW5nIHRoZSBnYXRoZXIgcGhh
c2UuIFRoZSBnYXRoZXIgcGhhc2Ugc3VzcGVuZHMKLSAgICAgICAgLy8gdGhyZWFkcywgc28gYSBt
YWxsb2MgZHVyaW5nIGdhdGhlciB3b3VsZCByaXNrIGEgZGVhZGxvY2sgd2l0aCBhCi0gICAgICAg
IC8vIHRocmVhZCB0aGF0IGhhZCBiZWVuIHN1c3BlbmRlZCB3aGlsZSBob2xkaW5nIHRoZSBtYWxs
b2MgbG9jay4KLSAgICAgICAgZmFzdE1hbGxvY0ZvcmJpZCgpOworICAgIC8vIEZvcmJpZCBtYWxs
b2MgZHVyaW5nIHRoZSBnYXRoZXIgcGhhc2UuIFRoZSBnYXRoZXIgcGhhc2Ugc3VzcGVuZHMKKyAg
ICAvLyB0aHJlYWRzLCBzbyBhIG1hbGxvYyBkdXJpbmcgZ2F0aGVyIHdvdWxkIHJpc2sgYSBkZWFk
bG9jayB3aXRoIGEKKyAgICAvLyB0aHJlYWQgdGhhdCBoYWQgYmVlbiBzdXNwZW5kZWQgd2hpbGUg
aG9sZGluZyB0aGUgbWFsbG9jIGxvY2suCisgICAgZmFzdE1hbGxvY0ZvcmJpZCgpOwogI2VuZGlm
Ci0gICAgICAgIC8vIEl0IGlzIHNhZmUgdG8gYWNjZXNzIHRoZSByZWdpc3RlcmVkVGhyZWFkcyBs
aXN0LCBiZWNhdXNlIHdlIGVhcmxpZXIgYXNzZXJ0ZWQgdGhhdCBsb2NrcyBhcmUgYmVpbmcgaGVs
ZCwKLSAgICAgICAgLy8gYW5kIHNpbmNlIHRoaXMgaXMgYSBzaGFyZWQgaGVhcCwgdGhleSBhcmUg
cmVhbCBsb2Nrcy4KLSAgICAgICAgZm9yIChUaHJlYWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRo
cmVhZHM7IHRocmVhZDsgdGhyZWFkID0gdGhyZWFkLT5uZXh0KSB7Ci0gICAgICAgICAgICBpZiAo
IXB0aHJlYWRfZXF1YWwodGhyZWFkLT5wb3NpeFRocmVhZCwgcHRocmVhZF9zZWxmKCkpKQotICAg
ICAgICAgICAgICAgIGdhdGhlckZyb21PdGhlclRocmVhZChjb25zZXJ2YXRpdmVSb290cywgdGhy
ZWFkKTsKLSAgICAgICAgfQorICAgIC8vIEl0IGlzIHNhZmUgdG8gYWNjZXNzIHRoZSByZWdpc3Rl
cmVkVGhyZWFkcyBsaXN0LCBiZWNhdXNlIHdlIGVhcmxpZXIgYXNzZXJ0ZWQgdGhhdCBsb2NrcyBh
cmUgYmVpbmcgaGVsZCwKKyAgICAvLyBhbmQgc2luY2UgdGhpcyBpcyBhIHNoYXJlZCBoZWFwLCB0
aGV5IGFyZSByZWFsIGxvY2tzLgorICAgIGZvciAoVGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVy
ZWRUaHJlYWRzOyB0aHJlYWQ7IHRocmVhZCA9IHRocmVhZC0+bmV4dCkgeworICAgICAgICBpZiAo
IXB0aHJlYWRfZXF1YWwodGhyZWFkLT5wb3NpeFRocmVhZCwgcHRocmVhZF9zZWxmKCkpKQorICAg
ICAgICAgICAgZ2F0aGVyRnJvbU90aGVyVGhyZWFkKGNvbnNlcnZhdGl2ZVJvb3RzLCB0aHJlYWQp
OworICAgIH0KICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGZhc3RNYWxsb2NBbGxvdygpOworICAg
IGZhc3RNYWxsb2NBbGxvdygpOwogI2VuZGlmCi0gICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01h
cmtlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgK
aW5kZXggNjljNDUzNy4uNGU5MjMwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmgKQEAgLTIyLDggKzIyLDggQEAKICNpZm5kZWYgTWFjaGlu
ZVRocmVhZHNfaAogI2RlZmluZSBNYWNoaW5lVGhyZWFkc19oCiAKLSNpbmNsdWRlIDxwdGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNw
ZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC00NiwxNiArNDYsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZ2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQoQ29uc2VydmF0aXZlUm9vdHMmLCB2b2lkKiBzdGFj
a0N1cnJlbnQpOwogCiAgICAgICAgIGNsYXNzIFRocmVhZDsKKyAgICAgICAgY2xhc3MgQWRkZWRU
aHJlYWRzOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlbW92ZVRocmVhZCh2b2lkKik7CiAgICAg
ICAgIHZvaWQgcmVtb3ZlQ3VycmVudFRocmVhZCgpOwogCisgICAgICAgIHR5cGVkZWYgV1RGOjpU
aHJlYWRTcGVjaWZpYzxBZGRlZFRocmVhZHM+IFRocmVhZFNwZWNpZmljVHlwZTsKKyAgICAgICAg
c3RhdGljIFRocmVhZFNwZWNpZmljVHlwZSYgdGhyZWFkU3BlY2lmaWMoKTsKKwogICAgICAgICB2
b2lkIGdhdGhlckZyb21PdGhlclRocmVhZChDb25zZXJ2YXRpdmVSb290cyYsIFRocmVhZCopOwog
CiAgICAgICAgIEhlYXAqIG1faGVhcDsKICAgICAgICAgTXV0ZXggbV9yZWdpc3RlcmVkVGhyZWFk
c011dGV4OwogICAgICAgICBUaHJlYWQqIG1fcmVnaXN0ZXJlZFRocmVhZHM7Ci0gICAgICAgIHB0
aHJlYWRfa2V5X3QgbV90aHJlYWRTcGVjaWZpYzsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115566</attachid>
            <date>2011-11-17 05:00:54 -0800</date>
            <delta_ts>2011-11-17 05:58:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68429b.patch</filename>
            <type>text/plain</type>
            <size>8193</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGIyMzA0ZmMuLmUwODE5YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTE3ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSU5dIFJlbW92ZSBkZXBlbmRl
bmN5IG9uIHB0aHJlYWQgZnJvbSBNYWNoaW5lU3RhY2tNYXJrZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MDQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHB0aHJlYWQgVExTIGZ1bmN0
aW9uYWxpdHkgd2l0aCBuYXR2aWUgd2luZG93cyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBoZWFw
L01hY2hpbmVTdGFja01hcmtlci5jcHA6IFVzZSB0aGUgbmV3IGZ1bmN0aW9ucyBpbnN0ZWFkIG9m
IHB0aHJlYWQgZGlyZWN0bHkuCisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoK
KyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkU3Bl
Y2lmaWNLZXlDcmVhdGUpOiBBZGRlZCB3cmFwcGVyIGFyb3VuZCBwdGhyZWFkX2tleV9jcmVhdGUu
CisgICAgICAgIChXVEY6OlRocmVhZFNwZWNpZmljS2V5RGVsZXRlKTogQWRkZWQgd3JhcHBlciBh
cm91bmQgcHRocmVhZF9rZXlfZGVsZXRlLgorICAgICAgICAoV1RGOjpUaHJlYWRTcGVjaWZpY1Nl
dCk6IEFkZGVkIHdyYXBwZXIgYXJvdW5kIHB0aHJlYWRfc2V0c3BlY2lmaWMuCisgICAgICAgIChX
VEY6OlRocmVhZFNwZWNpZmljR2V0KTogQWRkZWQgd3JhcHBlciBhcm91bmQgcHRocmVhZF9nZXRz
cGVjaWZpYy4KKyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWNXaW4uY3BwOgorCiAyMDExLTEx
LTE2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIExheW91
dFRlc3RzIGZvciBEZWJ1ZyBCdWlsZHMgQ3Jhc2hlcyBpbiBKYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJJbnRlcnByZXRlci5jcHAoMTg1KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggODA1YzYzNC4uZDkyMTY5MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0x
NDQsMTAgKzE0NCw4IEBAIE1hY2hpbmVUaHJlYWRzOjpNYWNoaW5lVGhyZWFkcyhIZWFwKiBoZWFw
KQogCiBNYWNoaW5lVGhyZWFkczo6fk1hY2hpbmVUaHJlYWRzKCkKIHsKLSAgICBpZiAobV90aHJl
YWRTcGVjaWZpYykgewotICAgICAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tleV9kZWxldGUobV90
aHJlYWRTcGVjaWZpYyk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFlcnJvcik7Ci0g
ICAgfQorICAgIGlmIChtX3RocmVhZFNwZWNpZmljKQorICAgICAgICBXVEY6OlRocmVhZFNwZWNp
ZmljS2V5RGVsZXRlKG1fdGhyZWFkU3BlY2lmaWMpOwogCiAgICAgTXV0ZXhMb2NrZXIgcmVnaXN0
ZXJlZFRocmVhZHNMb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CiAgICAgZm9yIChUaHJl
YWQqIHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0OykgewpAQCAtMTg0LDE5ICsxODIsMTcgQEAg
dm9pZCBNYWNoaW5lVGhyZWFkczo6bWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKQogICAg
IGlmIChtX3RocmVhZFNwZWNpZmljKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgZXJyb3Ig
PSBwdGhyZWFkX2tleV9jcmVhdGUoJm1fdGhyZWFkU3BlY2lmaWMsIHJlbW92ZVRocmVhZCk7Ci0g
ICAgaWYgKGVycm9yKQotICAgICAgICBDUkFTSCgpOworICAgIFRocmVhZFNwZWNpZmljS2V5Q3Jl
YXRlKCZtX3RocmVhZFNwZWNpZmljLCByZW1vdmVUaHJlYWQpOwogfQogCiB2b2lkIE1hY2hpbmVU
aHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKCkKIHsKICAgICBBU1NFUlQoIW1faGVhcC0+Z2xvYmFs
RGF0YSgpLT5leGNsdXNpdmVUaHJlYWQgfHwgbV9oZWFwLT5nbG9iYWxEYXRhKCktPmV4Y2x1c2l2
ZVRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOwogCi0gICAgaWYgKCFtX3RocmVhZFNwZWNpZmlj
IHx8IHB0aHJlYWRfZ2V0c3BlY2lmaWMobV90aHJlYWRTcGVjaWZpYykpCisgICAgaWYgKCFtX3Ro
cmVhZFNwZWNpZmljIHx8IFRocmVhZFNwZWNpZmljR2V0KG1fdGhyZWFkU3BlY2lmaWMpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBwdGhyZWFkX3NldHNwZWNpZmljKG1fdGhyZWFkU3BlY2lmaWMs
IHRoaXMpOworICAgIFRocmVhZFNwZWNpZmljU2V0KG1fdGhyZWFkU3BlY2lmaWMsIHRoaXMpOwog
ICAgIFRocmVhZCogdGhyZWFkID0gbmV3IFRocmVhZChnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQo
KSwgbV9oZWFwLT5nbG9iYWxEYXRhKCktPnN0YWNrKCkub3JpZ2luKCkpOwogCiAgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAppbmRleCA2OWM0NTM3Li4yYTk0ZGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJr
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
aApAQCAtMjIsOCArMjIsOCBAQAogI2lmbmRlZiBNYWNoaW5lVGhyZWFkc19oCiAjZGVmaW5lIE1h
Y2hpbmVUaHJlYWRzX2gKIAotI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU1LDcgKzU1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhlYXAqIG1faGVhcDsKICAgICAgICAgTXV0
ZXggbV9yZWdpc3RlcmVkVGhyZWFkc011dGV4OwogICAgICAgICBUaHJlYWQqIG1fcmVnaXN0ZXJl
ZFRocmVhZHM7Ci0gICAgICAgIHB0aHJlYWRfa2V5X3QgbV90aHJlYWRTcGVjaWZpYzsKKyAgICAg
ICAgV1RGOjpUaHJlYWRTcGVjaWZpY0tleSBtX3RocmVhZFNwZWNpZmljOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRTcGVjaWZpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZp
Yy5oCmluZGV4IDk0MDNkNzEuLmQ1MTBmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZFNwZWNpZmljLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
OSBKaWFuIExpIDxqaWFubGlAY2hyb21pdW0ub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDExIFBh
dHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTEzLDYgKzExNCw0NiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCisj
aWYgIVVTRShQVEhSRUFEUykgJiYgIVBMQVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oR1RLKSAmJiBP
UyhXSU5ET1dTKQorCitjbGFzcyBUaHJlYWRTcGVjaWZpY0tleVZhbHVlOwordHlwZWRlZiBUaHJl
YWRTcGVjaWZpY0tleVZhbHVlKiBUaHJlYWRTcGVjaWZpY0tleTsKKwordm9pZCBUaHJlYWRTcGVj
aWZpY0tleUNyZWF0ZShUaHJlYWRTcGVjaWZpY0tleSoga2V5LCB2b2lkICgqZGVzdHJ1Y3Rvciko
dm9pZCAqKSk7Cit2b2lkIFRocmVhZFNwZWNpZmljS2V5RGVsZXRlKFRocmVhZFNwZWNpZmljS2V5
IGtleSk7Cit2b2lkIFRocmVhZFNwZWNpZmljU2V0KFRocmVhZFNwZWNpZmljS2V5IGtleSwgdm9p
ZCogZGF0YSk7Cit2b2lkKiBUaHJlYWRTcGVjaWZpY0dldChUaHJlYWRTcGVjaWZpY0tleSBrZXkp
OworCisjZWxzZQorCit0eXBlZGVmIHB0aHJlYWRfa2V5X3QgVGhyZWFkU3BlY2lmaWNLZXk7CisK
K3ZvaWQgVGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoVGhyZWFkU3BlY2lmaWNLZXkqIGtleSwgdm9p
ZCAoKmRlc3RydWN0b3IpKHZvaWQgKikpCit7CisgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlf
Y3JlYXRlKGtleSwgZGVzdHJ1Y3Rvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICBDUkFTSCgp
OworfQorCit2b2lkIFRocmVhZFNwZWNpZmljS2V5RGVsZXRlKFRocmVhZFNwZWNpZmljS2V5IGtl
eSkKK3sKKyAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tleV9kZWxldGUoa2V5KTsKKyAgICBpZiAo
ZXJyb3IpCisgICAgICAgIENSQVNIKCk7Cit9CisKK3ZvaWQgVGhyZWFkU3BlY2lmaWNTZXQoVGhy
ZWFkU3BlY2lmaWNLZXkga2V5LCB2b2lkKiB2YWx1ZSkKK3sKKyAgICBwdGhyZWFkX3NldHNwZWNp
ZmljKGtleSwgdmFsdWUpOworfQorCit2b2lkKiBUaHJlYWRTcGVjaWZpY0dldChUaHJlYWRTcGVj
aWZpY0tleSBrZXkpCit7CisgICAgcmV0dXJuIHB0aHJlYWRfZ2V0c3BlY2lmaWMoa2V5KTsKK30K
KworI2VuZGlmCisKICNpZiBVU0UoUFRIUkVBRFMpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5s
aW5lIFRocmVhZFNwZWNpZmljPFQ+OjpUaHJlYWRTcGVjaWZpYygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljV2luLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWNXaW4uY3BwCmluZGV4IGQ3Mjk5NmEuLjk4MDZi
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWNX
aW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWNXaW4u
Y3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBKaWFuIExpIDxq
aWFubGlAY2hyb21pdW0ub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDExIFBhdHJpY2sgR2Fuc3Rl
cmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTksMTUgKzIw
LDczIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiVGhyZWFkU3Bl
Y2lmaWMuaCIKIAotI2lmIFVTRShQVEhSRUFEUykKLSNlcnJvciBUaGlzIGZpbGUgc2hvdWxkIG5v
dCBiZSBjb21waWxlZCBieSBwb3J0cyB0aGF0IGRvIG5vdCB1c2UgV2luZG93cyBuYXRpdmUgVGhy
ZWFkU3BlY2lmaWMgaW1wbGVtZW50YXRpb24uCi0jZW5kaWYKKyNpbmNsdWRlICJTdGRMaWJFeHRy
YXMuaCIKKyNpbmNsdWRlICJUaHJlYWRpbmdQcmltaXRpdmVzLmgiCisKKyNpZiAhVVNFKFBUSFJF
QURTKQogCiBuYW1lc3BhY2UgV1RGIHsKIAorc3RhdGljIE11dGV4JiBkZXN0cnVjdG9yc011dGV4
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBzdGF0aWNNdXRleCwgKCkpOwor
ICAgIHJldHVybiBzdGF0aWNNdXRleDsKK30KKworY2xhc3MgVGhyZWFkU3BlY2lmaWNLZXlWYWx1
ZQoreworcHVibGljOgorICAgIFRocmVhZFNwZWNpZmljS2V5VmFsdWUodm9pZCAoKmRlc3RydWN0
b3IpKHZvaWQgKikpCisgICAgICAgIDogbV9kZXN0cnVjdG9yKGRlc3RydWN0b3IpCisgICAgewor
ICAgICAgICBtX3Rsc0tleSA9IFRsc0FsbG9jKCk7CisgICAgICAgIGlmIChtX3Rsc0tleSA9PSBU
TFNfT1VUX09GX0lOREVYRVMpCisgICAgICAgICAgICBDUkFTSCgpOworCisgICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihkZXN0cnVjdG9yc011dGV4KCkpOworICAgICAgICBtX25leHQgPSBtX2Zp
cnN0OworICAgICAgICBtX2ZpcnN0ID0gdGhpczsKKyAgICB9CisKKyAgICB+VGhyZWFkU3BlY2lm
aWNLZXlWYWx1ZSgpCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZGVzdHJ1Y3Rv
cnNNdXRleCgpKTsKKyAgICAgICAgVGhyZWFkU3BlY2lmaWNLZXlWYWx1ZSoqIG5leHQgPSAmbV9m
aXJzdDsKKyAgICAgICAgd2hpbGUgKCpuZXh0ICE9IHRoaXMpIHsKKyAgICAgICAgICAgIEFTU0VS
VCgqbmV4dCk7CisgICAgICAgICAgICBuZXh0ID0gJigqbmV4dCktPm1fbmV4dDsKKyAgICAgICAg
fQorICAgICAgICAqbmV4dCA9ICgqbmV4dCktPm1fbmV4dDsKKworICAgICAgICBUbHNGcmVlKG1f
dGxzS2V5KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFZhbHVlKHZvaWQqIGRhdGEpIHsgVGxzU2V0
VmFsdWUobV90bHNLZXksIGRhdGEpOyB9CisgICAgdm9pZCogdmFsdWUoKSB7IHJldHVybiBUbHNH
ZXRWYWx1ZShtX3Rsc0tleSk7IH0KKworICAgIHN0YXRpYyB2b2lkIGNhbGxEZXN0cnVjdG9ycygp
CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZGVzdHJ1Y3RvcnNNdXRleCgpKTsK
KyAgICAgICAgVGhyZWFkU3BlY2lmaWNLZXlWYWx1ZSogbmV4dCA9IG1fZmlyc3Q7CisgICAgICAg
IHdoaWxlIChuZXh0KSB7CisgICAgICAgICAgICBpZiAodm9pZCogZGF0YSA9IG5leHQtPnZhbHVl
KCkpCisgICAgICAgICAgICAgICAgbmV4dC0+bV9kZXN0cnVjdG9yKGRhdGEpOworICAgICAgICAg
ICAgbmV4dCA9IG5leHQtPm1fbmV4dDsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAg
ICB2b2lkICgqbV9kZXN0cnVjdG9yKSh2b2lkICopOworICAgIERXT1JEIG1fdGxzS2V5OworICAg
IFRocmVhZFNwZWNpZmljS2V5VmFsdWUqIG1fbmV4dDsKKworICAgIHN0YXRpYyBUaHJlYWRTcGVj
aWZpY0tleVZhbHVlKiBtX2ZpcnN0OworfTsKKworVGhyZWFkU3BlY2lmaWNLZXlWYWx1ZSogVGhy
ZWFkU3BlY2lmaWNLZXlWYWx1ZTo6bV9maXJzdCA9IDA7CisKIGxvbmcmIHRsc0tleUNvdW50KCkK
IHsKICAgICBzdGF0aWMgbG9uZyBjb3VudDsKQEAgLTQwLDYgKzk5LDI2IEBAIERXT1JEKiB0bHNL
ZXlzKCkKICAgICByZXR1cm4ga2V5czsKIH0KIAordm9pZCBUaHJlYWRTcGVjaWZpY0tleUNyZWF0
ZShUaHJlYWRTcGVjaWZpY0tleSoga2V5LCB2b2lkICgqZGVzdHJ1Y3Rvcikodm9pZCAqKSkKK3sK
KyAgICAqa2V5ID0gbmV3IFRocmVhZFNwZWNpZmljS2V5VmFsdWUoZGVzdHJ1Y3Rvcik7Cit9CisK
K3ZvaWQgVGhyZWFkU3BlY2lmaWNLZXlEZWxldGUoVGhyZWFkU3BlY2lmaWNLZXkga2V5KQorewor
ICAgIGRlbGV0ZSBrZXk7Cit9CisKK3ZvaWQgVGhyZWFkU3BlY2lmaWNTZXQoVGhyZWFkU3BlY2lm
aWNLZXkga2V5LCB2b2lkKiBkYXRhKQoreworICAgIGtleS0+c2V0VmFsdWUoZGF0YSk7Cit9CisK
K3ZvaWQqIFRocmVhZFNwZWNpZmljR2V0KFRocmVhZFNwZWNpZmljS2V5IGtleSkKK3sKKyAgICBy
ZXR1cm4ga2V5LT52YWx1ZSgpOworfQorCiB2b2lkIFRocmVhZFNwZWNpZmljVGhyZWFkRXhpdCgp
CiB7CiAgICAgZm9yIChsb25nIGkgPSAwOyBpIDwgdGxzS2V5Q291bnQoKTsgaSsrKSB7CkBAIC00
OCw2ICsxMjcsMTAgQEAgdm9pZCBUaHJlYWRTcGVjaWZpY1RocmVhZEV4aXQoKQogICAgICAgICBp
ZiAoZGF0YSkKICAgICAgICAgICAgIGRhdGEtPmRlc3RydWN0b3IoZGF0YSk7CiAgICAgfQorCisg
ICAgVGhyZWFkU3BlY2lmaWNLZXlWYWx1ZTo6Y2FsbERlc3RydWN0b3JzKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gIVVTRShQVEhSRUFEUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115572</attachid>
            <date>2011-11-17 05:58:20 -0800</date>
            <delta_ts>2012-02-21 11:38:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68429-20111117145817.patch</filename>
            <type>text/plain</type>
            <size>8695</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NDU1NDcxMzYyMjUyMTVmMjE1NmRkNWIxMmE2ZjE4ZWY1OGMyNGQwLi4yZGVmOTE0NzhiN2RkNDE1
ZDI5MmU5ZjgwMWRmMDkyOWY1MGVlYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMS0xMS0xNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBbV0lOXSBSZW1vdmUgZGVwZW5kZW5jeSBvbiBwdGhyZWFkIGZyb20g
TWFjaGluZVN0YWNrTWFya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02ODQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCBwdGhyZWFkIFRMUyBmdW5jdGlvbmFsaXR5IHdpdGggbmF0dmll
IHdpbmRvd3MgZnVuY3Rpb25zLgorCisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwOiBVc2UgdGhlIG5ldyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBwdGhyZWFkIGRpcmVjdGx5Lgor
ICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6CisgICAgICAgICogd3RmL1RocmVh
ZFNwZWNpZmljLmg6CisgICAgICAgIChXVEY6OlRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKTogQWRk
ZWQgd3JhcHBlciBhcm91bmQgcHRocmVhZF9rZXlfY3JlYXRlLgorICAgICAgICAoV1RGOjpUaHJl
YWRTcGVjaWZpY0tleURlbGV0ZSk6IEFkZGVkIHdyYXBwZXIgYXJvdW5kIHB0aHJlYWRfa2V5X2Rl
bGV0ZS4KKyAgICAgICAgKFdURjo6VGhyZWFkU3BlY2lmaWNTZXQpOiBBZGRlZCB3cmFwcGVyIGFy
b3VuZCBwdGhyZWFkX3NldHNwZWNpZmljLgorICAgICAgICAoV1RGOjpUaHJlYWRTcGVjaWZpY0dl
dCk6IEFkZGVkIHdyYXBwZXIgYXJvdW5kIHB0aHJlYWRfZ2V0c3BlY2lmaWMuCisgICAgICAgICog
d3RmL1RocmVhZFNwZWNpZmljV2luLmNwcDoKKwogMjAxMS0xMS0xNSAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIENvZGUgYmxvY2sgamV0dGlzb25pbmcgc2hvdWxk
IGJlIHBhcnQgb2YgdGhlIEdDJ3MgdHJhbnNpdGl2ZSBjbG9zdXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCA4MDVjNjM0ZmI4
ZmViYTNhMmM0Y2Y1M2M3NGMwZjNiZDEwNzJmNzA3Li5kOTIxNjkzYzZkYjQ3YjBiN2QwM2IxOTNl
OGY1NmIxOTI3YmM0NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YWNoaW5lU3RhY2tNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
Y2hpbmVTdGFja01hcmtlci5jcHAKQEAgLTE0NCwxMCArMTQ0LDggQEAgTWFjaGluZVRocmVhZHM6
Ok1hY2hpbmVUaHJlYWRzKEhlYXAqIGhlYXApCiAKIE1hY2hpbmVUaHJlYWRzOjp+TWFjaGluZVRo
cmVhZHMoKQogewotICAgIGlmIChtX3RocmVhZFNwZWNpZmljKSB7Ci0gICAgICAgIGludCBlcnJv
ciA9IHB0aHJlYWRfa2V5X2RlbGV0ZShtX3RocmVhZFNwZWNpZmljKTsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChlcnJvciwgIWVycm9yKTsKLSAgICB9CisgICAgaWYgKG1fdGhyZWFkU3BlY2lmaWMp
CisgICAgICAgIFdURjo6VGhyZWFkU3BlY2lmaWNLZXlEZWxldGUobV90aHJlYWRTcGVjaWZpYyk7
CiAKICAgICBNdXRleExvY2tlciByZWdpc3RlcmVkVGhyZWFkc0xvY2sobV9yZWdpc3RlcmVkVGhy
ZWFkc011dGV4KTsKICAgICBmb3IgKFRocmVhZCogdCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHQ7
KSB7CkBAIC0xODQsMTkgKzE4MiwxNyBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjptYWtlVXNhYmxl
RnJvbU11bHRpcGxlVGhyZWFkcygpCiAgICAgaWYgKG1fdGhyZWFkU3BlY2lmaWMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgmbV90aHJlYWRT
cGVjaWZpYywgcmVtb3ZlVGhyZWFkKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIENSQVNIKCk7
CisgICAgVGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJm1fdGhyZWFkU3BlY2lmaWMsIHJlbW92ZVRo
cmVhZCk7CiB9CiAKIHZvaWQgTWFjaGluZVRocmVhZHM6OmFkZEN1cnJlbnRUaHJlYWQoKQogewog
ICAgIEFTU0VSVCghbV9oZWFwLT5nbG9iYWxEYXRhKCktPmV4Y2x1c2l2ZVRocmVhZCB8fCBtX2hl
YXAtPmdsb2JhbERhdGEoKS0+ZXhjbHVzaXZlVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CiAK
LSAgICBpZiAoIW1fdGhyZWFkU3BlY2lmaWMgfHwgcHRocmVhZF9nZXRzcGVjaWZpYyhtX3RocmVh
ZFNwZWNpZmljKSkKKyAgICBpZiAoIW1fdGhyZWFkU3BlY2lmaWMgfHwgVGhyZWFkU3BlY2lmaWNH
ZXQobV90aHJlYWRTcGVjaWZpYykpCiAgICAgICAgIHJldHVybjsKIAotICAgIHB0aHJlYWRfc2V0
c3BlY2lmaWMobV90aHJlYWRTcGVjaWZpYywgdGhpcyk7CisgICAgVGhyZWFkU3BlY2lmaWNTZXQo
bV90aHJlYWRTcGVjaWZpYywgdGhpcyk7CiAgICAgVGhyZWFkKiB0aHJlYWQgPSBuZXcgVGhyZWFk
KGdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpLCBtX2hlYXAtPmdsb2JhbERhdGEoKS0+c3RhY2so
KS5vcmlnaW4oKSk7CiAKICAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNN
dXRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3Rh
Y2tNYXJrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtl
ci5oCmluZGV4IDY5YzQ1MzdiZGFiZWY2NGJkM2YwMDg4YjFlNGU2ODRlOTJmZWJlMmQuLjJhOTRk
ZTA5NjZhM2E1MWViYWNkMWQ1ZTg5MTVjNDNjOTY1ODE1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCkBAIC0yMiw4ICsyMiw4IEBACiAj
aWZuZGVmIE1hY2hpbmVUaHJlYWRzX2gKICNkZWZpbmUgTWFjaGluZVRocmVhZHNfaAogCi0jaW5j
bHVkZSA8cHRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSGVhcCogbV9oZWFwOwogICAgICAgICBNdXRleCBtX3JlZ2lzdGVyZWRUaHJlYWRz
TXV0ZXg7CiAgICAgICAgIFRocmVhZCogbV9yZWdpc3RlcmVkVGhyZWFkczsKLSAgICAgICAgcHRo
cmVhZF9rZXlfdCBtX3RocmVhZFNwZWNpZmljOworICAgICAgICBXVEY6OlRocmVhZFNwZWNpZmlj
S2V5IG1fdGhyZWFkU3BlY2lmaWM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKaW5kZXggOTQwM2Q3MWVhZmYz
NTFlMzU4YjIxZjI5OWVhYTZiZGQzNzU2NjBjOS4uZjI1NzEzNmE4NjE0NTNjMDE4ZDk3MTk5OTAw
ODAyODNlMWJjMDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRTcGVjaWZpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lm
aWMuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEppYW4gTGkgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGF0cmljayBHYW5zdGVy
ZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Nyw2ICs0OCw3IEBACiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2VsaWYgUExBVEZPUk0oUVQp
CiAjaW5jbHVkZSA8UVRocmVhZFN0b3JhZ2U+CisjaW5jbHVkZSA8cHRocmVhZC5oPgogI2VsaWYg
UExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGdsaWIuaD4KICNlbGlmIE9TKFdJTkRPV1MpCkBAIC0x
MTMsNiArMTE1LDQ2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKKyNpZiAhVVNFKFBUSFJFQURT
KSAmJiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9STShHVEspICYmIE9TKFdJTkRPV1MpCisKK2Ns
YXNzIFRocmVhZFNwZWNpZmljS2V5VmFsdWU7Cit0eXBlZGVmIFRocmVhZFNwZWNpZmljS2V5VmFs
dWUqIFRocmVhZFNwZWNpZmljS2V5OworCit2b2lkIFRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKFRo
cmVhZFNwZWNpZmljS2V5Kiwgdm9pZCAoKikodm9pZCAqKSk7Cit2b2lkIFRocmVhZFNwZWNpZmlj
S2V5RGVsZXRlKFRocmVhZFNwZWNpZmljS2V5KTsKK3ZvaWQgVGhyZWFkU3BlY2lmaWNTZXQoVGhy
ZWFkU3BlY2lmaWNLZXksIHZvaWQqKTsKK3ZvaWQqIFRocmVhZFNwZWNpZmljR2V0KFRocmVhZFNw
ZWNpZmljS2V5KTsKKworI2Vsc2UKKwordHlwZWRlZiBwdGhyZWFkX2tleV90IFRocmVhZFNwZWNp
ZmljS2V5OworCitpbmxpbmUgdm9pZCBUaHJlYWRTcGVjaWZpY0tleUNyZWF0ZShUaHJlYWRTcGVj
aWZpY0tleSoga2V5LCB2b2lkICgqZGVzdHJ1Y3Rvcikodm9pZCAqKSkKK3sKKyAgICBpbnQgZXJy
b3IgPSBwdGhyZWFkX2tleV9jcmVhdGUoa2V5LCBkZXN0cnVjdG9yKTsKKyAgICBpZiAoZXJyb3Ip
CisgICAgICAgIENSQVNIKCk7Cit9CisKK2lubGluZSB2b2lkIFRocmVhZFNwZWNpZmljS2V5RGVs
ZXRlKFRocmVhZFNwZWNpZmljS2V5IGtleSkKK3sKKyAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tl
eV9kZWxldGUoa2V5KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIENSQVNIKCk7Cit9CisKK2lu
bGluZSB2b2lkIFRocmVhZFNwZWNpZmljU2V0KFRocmVhZFNwZWNpZmljS2V5IGtleSwgdm9pZCog
dmFsdWUpCit7CisgICAgcHRocmVhZF9zZXRzcGVjaWZpYyhrZXksIHZhbHVlKTsKK30KKworaW5s
aW5lIHZvaWQqIFRocmVhZFNwZWNpZmljR2V0KFRocmVhZFNwZWNpZmljS2V5IGtleSkKK3sKKyAg
ICByZXR1cm4gcHRocmVhZF9nZXRzcGVjaWZpYyhrZXkpOworfQorCisjZW5kaWYKKwogI2lmIFVT
RShQVEhSRUFEUykKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGhyZWFkU3BlY2lmaWM8
VD46OlRocmVhZFNwZWNpZmljKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkU3BlY2lmaWNXaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRTcGVjaWZpY1dpbi5jcHAKaW5kZXggZDcyOTk2YTdhMGNhMDIzOWExNDYxMThkM2UwNWIxZTY4
MWFkNTYzMS4uZTRlMTc0NTk4NjE0Y2ViNDEyYzE5NTVmODY0MmNlYzYzYmFhMjZmMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpY1dpbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpY1dpbi5jcHAKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEppYW4gTGkgPGppYW5saUBjaHJv
bWl1bS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9n
YUBwYXJvZ2EuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xOSwxNSArMjAsNzIgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJUaHJlYWRTcGVjaWZpYy5oIgog
Ci0jaWYgVVNFKFBUSFJFQURTKQotI2Vycm9yIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGNvbXBp
bGVkIGJ5IHBvcnRzIHRoYXQgZG8gbm90IHVzZSBXaW5kb3dzIG5hdGl2ZSBUaHJlYWRTcGVjaWZp
YyBpbXBsZW1lbnRhdGlvbi4KLSNlbmRpZgorI2luY2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2lu
Y2x1ZGUgIlRocmVhZGluZ1ByaW1pdGl2ZXMuaCIKKworI2lmICFVU0UoUFRIUkVBRFMpCiAKIG5h
bWVzcGFjZSBXVEYgewogCitzdGF0aWMgTXV0ZXgmIGRlc3RydWN0b3JzTXV0ZXgoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHN0YXRpY011dGV4LCAoKSk7CisgICAgcmV0dXJu
IHN0YXRpY011dGV4OworfQorCitjbGFzcyBUaHJlYWRTcGVjaWZpY0tleVZhbHVlIHsKK3B1Ymxp
YzoKKyAgICBUaHJlYWRTcGVjaWZpY0tleVZhbHVlKHZvaWQgKCpkZXN0cnVjdG9yKSh2b2lkICop
KQorICAgICAgICA6IG1fZGVzdHJ1Y3RvcihkZXN0cnVjdG9yKQorICAgIHsKKyAgICAgICAgbV90
bHNLZXkgPSBUbHNBbGxvYygpOworICAgICAgICBpZiAobV90bHNLZXkgPT0gVExTX09VVF9PRl9J
TkRFWEVTKQorICAgICAgICAgICAgQ1JBU0goKTsKKworICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIoZGVzdHJ1Y3RvcnNNdXRleCgpKTsKKyAgICAgICAgbV9uZXh0ID0gbV9maXJzdDsKKyAgICAg
ICAgbV9maXJzdCA9IHRoaXM7CisgICAgfQorCisgICAgflRocmVhZFNwZWNpZmljS2V5VmFsdWUo
KQorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGRlc3RydWN0b3JzTXV0ZXgoKSk7
CisgICAgICAgIFRocmVhZFNwZWNpZmljS2V5VmFsdWUqKiBuZXh0ID0gJm1fZmlyc3Q7CisgICAg
ICAgIHdoaWxlICgqbmV4dCAhPSB0aGlzKSB7CisgICAgICAgICAgICBBU1NFUlQoKm5leHQpOwor
ICAgICAgICAgICAgbmV4dCA9ICYoKm5leHQpLT5tX25leHQ7CisgICAgICAgIH0KKyAgICAgICAg
Km5leHQgPSAoKm5leHQpLT5tX25leHQ7CisKKyAgICAgICAgVGxzRnJlZShtX3Rsc0tleSk7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRWYWx1ZSh2b2lkKiBkYXRhKSB7IFRsc1NldFZhbHVlKG1fdGxz
S2V5LCBkYXRhKTsgfQorICAgIHZvaWQqIHZhbHVlKCkgeyByZXR1cm4gVGxzR2V0VmFsdWUobV90
bHNLZXkpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBjYWxsRGVzdHJ1Y3RvcnMoKQorICAgIHsKKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGRlc3RydWN0b3JzTXV0ZXgoKSk7CisgICAgICAgIFRo
cmVhZFNwZWNpZmljS2V5VmFsdWUqIG5leHQgPSBtX2ZpcnN0OworICAgICAgICB3aGlsZSAobmV4
dCkgeworICAgICAgICAgICAgaWYgKHZvaWQqIGRhdGEgPSBuZXh0LT52YWx1ZSgpKQorICAgICAg
ICAgICAgICAgIG5leHQtPm1fZGVzdHJ1Y3RvcihkYXRhKTsKKyAgICAgICAgICAgIG5leHQgPSBu
ZXh0LT5tX25leHQ7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCAoKm1f
ZGVzdHJ1Y3Rvcikodm9pZCAqKTsKKyAgICBEV09SRCBtX3Rsc0tleTsKKyAgICBUaHJlYWRTcGVj
aWZpY0tleVZhbHVlKiBtX25leHQ7CisKKyAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWNLZXlWYWx1
ZSogbV9maXJzdDsKK307CisKK1RocmVhZFNwZWNpZmljS2V5VmFsdWUqIFRocmVhZFNwZWNpZmlj
S2V5VmFsdWU6Om1fZmlyc3QgPSAwOworCiBsb25nJiB0bHNLZXlDb3VudCgpCiB7CiAgICAgc3Rh
dGljIGxvbmcgY291bnQ7CkBAIC00MCw2ICs5OCwyNiBAQCBEV09SRCogdGxzS2V5cygpCiAgICAg
cmV0dXJuIGtleXM7CiB9CiAKK3ZvaWQgVGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoVGhyZWFkU3Bl
Y2lmaWNLZXkqIGtleSwgdm9pZCAoKmRlc3RydWN0b3IpKHZvaWQgKikpCit7CisgICAgKmtleSA9
IG5ldyBUaHJlYWRTcGVjaWZpY0tleVZhbHVlKGRlc3RydWN0b3IpOworfQorCit2b2lkIFRocmVh
ZFNwZWNpZmljS2V5RGVsZXRlKFRocmVhZFNwZWNpZmljS2V5IGtleSkKK3sKKyAgICBkZWxldGUg
a2V5OworfQorCit2b2lkIFRocmVhZFNwZWNpZmljU2V0KFRocmVhZFNwZWNpZmljS2V5IGtleSwg
dm9pZCogZGF0YSkKK3sKKyAgICBrZXktPnNldFZhbHVlKGRhdGEpOworfQorCit2b2lkKiBUaHJl
YWRTcGVjaWZpY0dldChUaHJlYWRTcGVjaWZpY0tleSBrZXkpCit7CisgICAgcmV0dXJuIGtleS0+
dmFsdWUoKTsKK30KKwogdm9pZCBUaHJlYWRTcGVjaWZpY1RocmVhZEV4aXQoKQogewogICAgIGZv
ciAobG9uZyBpID0gMDsgaSA8IHRsc0tleUNvdW50KCk7IGkrKykgewpAQCAtNDgsNiArMTI2LDEw
IEBAIHZvaWQgVGhyZWFkU3BlY2lmaWNUaHJlYWRFeGl0KCkKICAgICAgICAgaWYgKGRhdGEpCiAg
ICAgICAgICAgICBkYXRhLT5kZXN0cnVjdG9yKGRhdGEpOwogICAgIH0KKworICAgIFRocmVhZFNw
ZWNpZmljS2V5VmFsdWU6OmNhbGxEZXN0cnVjdG9ycygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKKworI2VuZGlmIC8vICFVU0UoUFRIUkVBRFMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128011</attachid>
            <date>2012-02-21 11:38:10 -0800</date>
            <delta_ts>2012-08-02 02:21:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68429-20120221203807.patch</filename>
            <type>text/plain</type>
            <size>8602</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGY0ZTBhMjcyYjM5MzQ4MzMxYTRkMTQxYTQ2YzljM2NlNThiMTJkLi42MzJjOWRiZGNiNWEwZmUz
ZjYyMDA3ODM0ZDUxMTNiODczMzRjY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMi0wMi0yMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBbV0lOXSBSZW1vdmUgZGVwZW5kZW5jeSBvbiBwdGhyZWFkIGZyb20g
TWFjaGluZVN0YWNrTWFya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02ODQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCBwdGhyZWFkIFRMUyBmdW5jdGlvbmFsaXR5IHdpdGggbmF0aXZl
IHdpbmRvd3MgZnVuY3Rpb25zLgorCisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwOiBVc2UgdGhlIG5ldyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBwdGhyZWFkIGRpcmVjdGx5Lgor
ICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6CisgICAgICAgICogd3RmL1RocmVh
ZFNwZWNpZmljLmg6CisgICAgICAgIChXVEY6OlRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKTogQWRk
ZWQgd3JhcHBlciBhcm91bmQgcHRocmVhZF9rZXlfY3JlYXRlLgorICAgICAgICAoV1RGOjpUaHJl
YWRTcGVjaWZpY0tleURlbGV0ZSk6IEFkZGVkIHdyYXBwZXIgYXJvdW5kIHB0aHJlYWRfa2V5X2Rl
bGV0ZS4KKyAgICAgICAgKFdURjo6VGhyZWFkU3BlY2lmaWNTZXQpOiBBZGRlZCB3cmFwcGVyIGFy
b3VuZCBwdGhyZWFkX3NldHNwZWNpZmljLgorICAgICAgICAoV1RGOjpUaHJlYWRTcGVjaWZpY0dl
dCk6IEFkZGVkIHdyYXBwZXIgYXJvdW5kIHB0aHJlYWRfZ2V0c3BlY2lmaWMuCisgICAgICAgICog
d3RmL1RocmVhZFNwZWNpZmljV2luLmNwcDoKKwogMjAxMi0wMi0yMSAgUm9sYW5kIFRha2FjcyAg
PHRha2Fjcy5yb2xhbmRAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBVbm5lY2Vzc2FyeSBw
cmVwcm9jZXNzb3IgbWFjcm9zIGluIE1haW5UaHJlYWQuaC9jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCmluZGV4IGZkODI4ZDVkZTgz
ZWJmMDU3MmU1MDllYjIyYzZjZTUxYmYyM2Y0YzYuLjNhYmNkNTJhZmQ3MGM2MjE5ZDQ0ZmEyNGI2
MjZiOTRkNzIxNjQyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
Y2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmNwcApAQCAtMTQwLDEwICsxNDAsOCBAQCBNYWNoaW5lVGhyZWFkczo6
TWFjaGluZVRocmVhZHMoSGVhcCogaGVhcCkKIAogTWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhy
ZWFkcygpCiB7Ci0gICAgaWYgKG1fdGhyZWFkU3BlY2lmaWMpIHsKLSAgICAgICAgaW50IGVycm9y
ID0gcHRocmVhZF9rZXlfZGVsZXRlKG1fdGhyZWFkU3BlY2lmaWMpOwotICAgICAgICBBU1NFUlRf
VU5VU0VEKGVycm9yLCAhZXJyb3IpOwotICAgIH0KKyAgICBpZiAobV90aHJlYWRTcGVjaWZpYykK
KyAgICAgICAgVGhyZWFkU3BlY2lmaWNLZXlEZWxldGUobV90aHJlYWRTcGVjaWZpYyk7CiAKICAg
ICBNdXRleExvY2tlciByZWdpc3RlcmVkVGhyZWFkc0xvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011
dGV4KTsKICAgICBmb3IgKFRocmVhZCogdCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHQ7KSB7CkBA
IC0xODAsMTkgKzE3OCwxNyBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjptYWtlVXNhYmxlRnJvbU11
bHRpcGxlVGhyZWFkcygpCiAgICAgaWYgKG1fdGhyZWFkU3BlY2lmaWMpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgmbV90aHJlYWRTcGVjaWZp
YywgcmVtb3ZlVGhyZWFkKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIENSQVNIKCk7CisgICAg
VGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJm1fdGhyZWFkU3BlY2lmaWMsIHJlbW92ZVRocmVhZCk7
CiB9CiAKIHZvaWQgTWFjaGluZVRocmVhZHM6OmFkZEN1cnJlbnRUaHJlYWQoKQogewogICAgIEFT
U0VSVCghbV9oZWFwLT5nbG9iYWxEYXRhKCktPmV4Y2x1c2l2ZVRocmVhZCB8fCBtX2hlYXAtPmds
b2JhbERhdGEoKS0+ZXhjbHVzaXZlVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CiAKLSAgICBp
ZiAoIW1fdGhyZWFkU3BlY2lmaWMgfHwgcHRocmVhZF9nZXRzcGVjaWZpYyhtX3RocmVhZFNwZWNp
ZmljKSkKKyAgICBpZiAoIW1fdGhyZWFkU3BlY2lmaWMgfHwgVGhyZWFkU3BlY2lmaWNHZXQobV90
aHJlYWRTcGVjaWZpYykpCiAgICAgICAgIHJldHVybjsKIAotICAgIHB0aHJlYWRfc2V0c3BlY2lm
aWMobV90aHJlYWRTcGVjaWZpYywgdGhpcyk7CisgICAgVGhyZWFkU3BlY2lmaWNTZXQobV90aHJl
YWRTcGVjaWZpYywgdGhpcyk7CiAgICAgVGhyZWFkKiB0aHJlYWQgPSBuZXcgVGhyZWFkKGdldEN1
cnJlbnRQbGF0Zm9ybVRocmVhZCgpLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSk7
CiAKICAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCmluZGV4IDBm
NWE0YzNhYTJlZjBkNjVhMTA4ZDMxMDlkZDc0ZGRiYmFjYWYxZWEuLjIyMDlmOTdlOWY4NGNiMTdm
ZmYyM2FlNzVhOWIwNjRkYTJhNzE3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hY2hpbmVTdGFja01hcmtlci5oCkBAIC0yMiw4ICsyMiw4IEBACiAjaWZuZGVmIE1hY2hp
bmVUaHJlYWRzX2gKICNkZWZpbmUgTWFjaGluZVRocmVhZHNfaAogCi0jaW5jbHVkZSA8cHRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
cGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVh
cCogbV9oZWFwOwogICAgICAgICBNdXRleCBtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXg7CiAgICAg
ICAgIFRocmVhZCogbV9yZWdpc3RlcmVkVGhyZWFkczsKLSAgICAgICAgcHRocmVhZF9rZXlfdCBt
X3RocmVhZFNwZWNpZmljOworICAgICAgICBXVEY6OlRocmVhZFNwZWNpZmljS2V5IG1fdGhyZWFk
U3BlY2lmaWM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKaW5kZXggZjIwYTNmM2RmNTBhYjVhODY4NTU2ODQz
MjFmYjcyMDk3NmNiODYyZi4uNGQ4MTA4NTA0NjIwOWZiOTEzYzZiZTlmYjRlZmU1YzlhZjgxNjFm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaApAQCAtMSw2
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEppYW4gTGkgPGppYW5saUBjaHJvbWl1
bS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBw
YXJvZ2EuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDIsNiArMTAz
LDMzIEBAIHByaXZhdGU6CiB9OwogCiAjaWYgVVNFKFBUSFJFQURTKQorCit0eXBlZGVmIHB0aHJl
YWRfa2V5X3QgVGhyZWFkU3BlY2lmaWNLZXk7CisKK2lubGluZSB2b2lkIFRocmVhZFNwZWNpZmlj
S2V5Q3JlYXRlKFRocmVhZFNwZWNpZmljS2V5KiBrZXksIHZvaWQgKCpkZXN0cnVjdG9yKSh2b2lk
ICopKQoreworICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2NyZWF0ZShrZXksIGRlc3RydWN0
b3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgQ1JBU0goKTsKK30KKworaW5saW5lIHZvaWQg
VGhyZWFkU3BlY2lmaWNLZXlEZWxldGUoVGhyZWFkU3BlY2lmaWNLZXkga2V5KQoreworICAgIGlu
dCBlcnJvciA9IHB0aHJlYWRfa2V5X2RlbGV0ZShrZXkpOworICAgIGlmIChlcnJvcikKKyAgICAg
ICAgQ1JBU0goKTsKK30KKworaW5saW5lIHZvaWQgVGhyZWFkU3BlY2lmaWNTZXQoVGhyZWFkU3Bl
Y2lmaWNLZXkga2V5LCB2b2lkKiB2YWx1ZSkKK3sKKyAgICBwdGhyZWFkX3NldHNwZWNpZmljKGtl
eSwgdmFsdWUpOworfQorCitpbmxpbmUgdm9pZCogVGhyZWFkU3BlY2lmaWNHZXQoVGhyZWFkU3Bl
Y2lmaWNLZXkga2V5KQoreworICAgIHJldHVybiBwdGhyZWFkX2dldHNwZWNpZmljKGtleSk7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGhyZWFkU3BlY2lmaWM8VD46OlRocmVh
ZFNwZWNpZmljKCkKIHsKQEAgLTEzOSw2ICsxNjcsMTQgQEAgY29uc3QgaW50IGtNYXhUbHNLZXlT
aXplID0gMjU2OwogbG9uZyYgdGxzS2V5Q291bnQoKTsKIERXT1JEKiB0bHNLZXlzKCk7CiAKK2Ns
YXNzIFRocmVhZFNwZWNpZmljS2V5VmFsdWU7Cit0eXBlZGVmIFRocmVhZFNwZWNpZmljS2V5VmFs
dWUqIFRocmVhZFNwZWNpZmljS2V5OworCit2b2lkIFRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKFRo
cmVhZFNwZWNpZmljS2V5Kiwgdm9pZCAoKikodm9pZCAqKSk7Cit2b2lkIFRocmVhZFNwZWNpZmlj
S2V5RGVsZXRlKFRocmVhZFNwZWNpZmljS2V5KTsKK3ZvaWQgVGhyZWFkU3BlY2lmaWNTZXQoVGhy
ZWFkU3BlY2lmaWNLZXksIHZvaWQqKTsKK3ZvaWQqIFRocmVhZFNwZWNpZmljR2V0KFRocmVhZFNw
ZWNpZmljS2V5KTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGlubGluZSBUaHJlYWRTcGVjaWZp
YzxUPjo6VGhyZWFkU3BlY2lmaWMoKQogICAgIDogbV9pbmRleCgtMSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWNXaW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpY1dpbi5jcHAKaW5kZXggZDcyOTk2YTdhMGNh
MDIzOWExNDYxMThkM2UwNWIxZTY4MWFkNTYzMS4uNjFhNTk0MjUxYjEwZTBmZjdmYjJiMzI2OTAy
ODY5ZDdiODEzMmQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRTcGVjaWZpY1dpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRT
cGVjaWZpY1dpbi5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5
IEppYW4gTGkgPGppYW5saUBjaHJvbWl1bS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0
cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0xOSwxNSArMjAsNzIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRl
ICJUaHJlYWRTcGVjaWZpYy5oIgogCi0jaWYgVVNFKFBUSFJFQURTKQotI2Vycm9yIFRoaXMgZmls
ZSBzaG91bGQgbm90IGJlIGNvbXBpbGVkIGJ5IHBvcnRzIHRoYXQgZG8gbm90IHVzZSBXaW5kb3dz
IG5hdGl2ZSBUaHJlYWRTcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KLSNlbmRpZgorI2luY2x1ZGUg
IlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgIlRocmVhZGluZ1ByaW1pdGl2ZXMuaCIKKworI2lm
ICFVU0UoUFRIUkVBRFMpCiAKIG5hbWVzcGFjZSBXVEYgewogCitzdGF0aWMgTXV0ZXgmIGRlc3Ry
dWN0b3JzTXV0ZXgoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHN0YXRpY011
dGV4LCAoKSk7CisgICAgcmV0dXJuIHN0YXRpY011dGV4OworfQorCitjbGFzcyBUaHJlYWRTcGVj
aWZpY0tleVZhbHVlIHsKK3B1YmxpYzoKKyAgICBUaHJlYWRTcGVjaWZpY0tleVZhbHVlKHZvaWQg
KCpkZXN0cnVjdG9yKSh2b2lkICopKQorICAgICAgICA6IG1fZGVzdHJ1Y3RvcihkZXN0cnVjdG9y
KQorICAgIHsKKyAgICAgICAgbV90bHNLZXkgPSBUbHNBbGxvYygpOworICAgICAgICBpZiAobV90
bHNLZXkgPT0gVExTX09VVF9PRl9JTkRFWEVTKQorICAgICAgICAgICAgQ1JBU0goKTsKKworICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIoZGVzdHJ1Y3RvcnNNdXRleCgpKTsKKyAgICAgICAgbV9u
ZXh0ID0gbV9maXJzdDsKKyAgICAgICAgbV9maXJzdCA9IHRoaXM7CisgICAgfQorCisgICAgflRo
cmVhZFNwZWNpZmljS2V5VmFsdWUoKQorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KGRlc3RydWN0b3JzTXV0ZXgoKSk7CisgICAgICAgIFRocmVhZFNwZWNpZmljS2V5VmFsdWUqKiBu
ZXh0ID0gJm1fZmlyc3Q7CisgICAgICAgIHdoaWxlICgqbmV4dCAhPSB0aGlzKSB7CisgICAgICAg
ICAgICBBU1NFUlQoKm5leHQpOworICAgICAgICAgICAgbmV4dCA9ICYoKm5leHQpLT5tX25leHQ7
CisgICAgICAgIH0KKyAgICAgICAgKm5leHQgPSAoKm5leHQpLT5tX25leHQ7CisKKyAgICAgICAg
VGxzRnJlZShtX3Rsc0tleSk7CisgICAgfQorCisgICAgdm9pZCBzZXRWYWx1ZSh2b2lkKiBkYXRh
KSB7IFRsc1NldFZhbHVlKG1fdGxzS2V5LCBkYXRhKTsgfQorICAgIHZvaWQqIHZhbHVlKCkgeyBy
ZXR1cm4gVGxzR2V0VmFsdWUobV90bHNLZXkpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBjYWxsRGVz
dHJ1Y3RvcnMoKQorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGRlc3RydWN0b3Jz
TXV0ZXgoKSk7CisgICAgICAgIFRocmVhZFNwZWNpZmljS2V5VmFsdWUqIG5leHQgPSBtX2ZpcnN0
OworICAgICAgICB3aGlsZSAobmV4dCkgeworICAgICAgICAgICAgaWYgKHZvaWQqIGRhdGEgPSBu
ZXh0LT52YWx1ZSgpKQorICAgICAgICAgICAgICAgIG5leHQtPm1fZGVzdHJ1Y3RvcihkYXRhKTsK
KyAgICAgICAgICAgIG5leHQgPSBuZXh0LT5tX25leHQ7CisgICAgICAgIH0KKyAgICB9CisKK3By
aXZhdGU6CisgICAgdm9pZCAoKm1fZGVzdHJ1Y3Rvcikodm9pZCAqKTsKKyAgICBEV09SRCBtX3Rs
c0tleTsKKyAgICBUaHJlYWRTcGVjaWZpY0tleVZhbHVlKiBtX25leHQ7CisKKyAgICBzdGF0aWMg
VGhyZWFkU3BlY2lmaWNLZXlWYWx1ZSogbV9maXJzdDsKK307CisKK1RocmVhZFNwZWNpZmljS2V5
VmFsdWUqIFRocmVhZFNwZWNpZmljS2V5VmFsdWU6Om1fZmlyc3QgPSAwOworCiBsb25nJiB0bHNL
ZXlDb3VudCgpCiB7CiAgICAgc3RhdGljIGxvbmcgY291bnQ7CkBAIC00MCw2ICs5OCwyNiBAQCBE
V09SRCogdGxzS2V5cygpCiAgICAgcmV0dXJuIGtleXM7CiB9CiAKK3ZvaWQgVGhyZWFkU3BlY2lm
aWNLZXlDcmVhdGUoVGhyZWFkU3BlY2lmaWNLZXkqIGtleSwgdm9pZCAoKmRlc3RydWN0b3IpKHZv
aWQgKikpCit7CisgICAgKmtleSA9IG5ldyBUaHJlYWRTcGVjaWZpY0tleVZhbHVlKGRlc3RydWN0
b3IpOworfQorCit2b2lkIFRocmVhZFNwZWNpZmljS2V5RGVsZXRlKFRocmVhZFNwZWNpZmljS2V5
IGtleSkKK3sKKyAgICBkZWxldGUga2V5OworfQorCit2b2lkIFRocmVhZFNwZWNpZmljU2V0KFRo
cmVhZFNwZWNpZmljS2V5IGtleSwgdm9pZCogZGF0YSkKK3sKKyAgICBrZXktPnNldFZhbHVlKGRh
dGEpOworfQorCit2b2lkKiBUaHJlYWRTcGVjaWZpY0dldChUaHJlYWRTcGVjaWZpY0tleSBrZXkp
Cit7CisgICAgcmV0dXJuIGtleS0+dmFsdWUoKTsKK30KKwogdm9pZCBUaHJlYWRTcGVjaWZpY1Ro
cmVhZEV4aXQoKQogewogICAgIGZvciAobG9uZyBpID0gMDsgaSA8IHRsc0tleUNvdW50KCk7IGkr
KykgewpAQCAtNDgsNiArMTI2LDEwIEBAIHZvaWQgVGhyZWFkU3BlY2lmaWNUaHJlYWRFeGl0KCkK
ICAgICAgICAgaWYgKGRhdGEpCiAgICAgICAgICAgICBkYXRhLT5kZXN0cnVjdG9yKGRhdGEpOwog
ICAgIH0KKworICAgIFRocmVhZFNwZWNpZmljS2V5VmFsdWU6OmNhbGxEZXN0cnVjdG9ycygpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vICFVU0UoUFRIUkVBRFMpCg==
</data>
<flag name="review"
          id="130289"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156016</attachid>
            <date>2012-08-02 02:21:13 -0700</date>
            <delta_ts>2012-08-04 01:20:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68429c.patch</filename>
            <type>text/plain</type>
            <size>9858</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDBlNDY4MDIuLjgyNWVlYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA4LTAyICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSU5dIFJlbW92ZSBkZXBlbmRl
bmN5IG9uIHB0aHJlYWQgZnJvbSBNYWNoaW5lU3RhY2tNYXJrZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDI5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2luZG93cyBoYXMgbm8gc3VwcG9ydCBmb3Ig
Y2FsbGluZyBhIGRlc3RydWN0b3IgZm9yIHRocmVhZCBzcGVjaWZpYyBkYXRhLgorICAgICAgICBT
aW5jZSB3ZSBuZWVkIG1vcmUgY29udHJvbCBvdmVyIGNyZWF0aW5nIGFuZCBkZWxldGluZyB0aHJl
YWQgc3BlY2lmaWMga2V5cworICAgICAgICB3ZSBjYW4gbm90IHNpbXBseSBleHRlbmQgV1RGOjpU
aHJlYWRTcGVjaWZpYyB3aXRoIHRoaXMgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBbGwgdGhy
ZWFkIHNwZWNpZmljIGtleXMgY3JlYXRlZCB2aWEgdGhlIG5ldyBBUEkgZ2V0IHN0b3JlZCBpbiBh
IGxpc3QuCisgICAgICAgIEFmdGVyIGEgdGhyZWFkIGZ1bmN0aW9uIGZpbmlzaGVkIHdlIGl0ZXJh
dGUgb3ZlciB0aGlzIGxpc3QgYW5kIGNhbGwKKyAgICAgICAgdGhlIHJlZ2lzdGVyZWQgZGVzdHJ1
Y3RvciBmb3IgZXZlcnkgaXRlbSBpZiBuZWVkZWQuCisKKyAgICAgICAgKiBoZWFwL01hY2hpbmVT
dGFja01hcmtlci5jcHA6ICBVc2UgdGhlIG5ldyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBwdGhyZWFk
IGRpcmVjdGx5LgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6fk1hY2hpbmVUaHJlYWRz
KToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6Om1ha2VVc2FibGVGcm9tTXVsdGlwbGVU
aHJlYWRzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OmFkZEN1cnJlbnRUaHJlYWQp
OgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6CisgICAgICAgIChNYWNoaW5l
VGhyZWFkcyk6CisKIDIwMTItMDgtMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggN2ViNTc0Ny4uNTM3YTM0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCkBAIC0xNDEsMTAgKzE0MSw4IEBAIE1hY2hpbmVUaHJlYWRzOjpNYWNoaW5lVGhyZWFkcyhI
ZWFwKiBoZWFwKQogCiBNYWNoaW5lVGhyZWFkczo6fk1hY2hpbmVUaHJlYWRzKCkKIHsKLSAgICBp
ZiAobV90aHJlYWRTcGVjaWZpYykgewotICAgICAgICBpbnQgZXJyb3IgPSBwdGhyZWFkX2tleV9k
ZWxldGUobV90aHJlYWRTcGVjaWZpYyk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFl
cnJvcik7Ci0gICAgfQorICAgIGlmIChtX3RocmVhZFNwZWNpZmljKQorICAgICAgICB0aHJlYWRT
cGVjaWZpY0tleURlbGV0ZShtX3RocmVhZFNwZWNpZmljKTsKIAogICAgIE11dGV4TG9ja2VyIHJl
Z2lzdGVyZWRUaHJlYWRzTG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXgpOwogICAgIGZvciAo
VGhyZWFkKiB0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsgdDspIHsKQEAgLTE4MSwxOSArMTc5LDE3
IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6Om1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCkK
ICAgICBpZiAobV90aHJlYWRTcGVjaWZpYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGVy
cm9yID0gcHRocmVhZF9rZXlfY3JlYXRlKCZtX3RocmVhZFNwZWNpZmljLCByZW1vdmVUaHJlYWQp
OwotICAgIGlmIChlcnJvcikKLSAgICAgICAgQ1JBU0goKTsKKyAgICB0aHJlYWRTcGVjaWZpY0tl
eUNyZWF0ZSgmbV90aHJlYWRTcGVjaWZpYywgcmVtb3ZlVGhyZWFkKTsKIH0KIAogdm9pZCBNYWNo
aW5lVGhyZWFkczo6YWRkQ3VycmVudFRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFtX2hlYXAtPmds
b2JhbERhdGEoKS0+ZXhjbHVzaXZlVGhyZWFkIHx8IG1faGVhcC0+Z2xvYmFsRGF0YSgpLT5leGNs
dXNpdmVUaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKIAotICAgIGlmICghbV90aHJlYWRTcGVj
aWZpYyB8fCBwdGhyZWFkX2dldHNwZWNpZmljKG1fdGhyZWFkU3BlY2lmaWMpKQorICAgIGlmICgh
bV90aHJlYWRTcGVjaWZpYyB8fCB0aHJlYWRTcGVjaWZpY0dldChtX3RocmVhZFNwZWNpZmljKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcHRocmVhZF9zZXRzcGVjaWZpYyhtX3RocmVhZFNwZWNp
ZmljLCB0aGlzKTsKKyAgICB0aHJlYWRTcGVjaWZpY1NldChtX3RocmVhZFNwZWNpZmljLCB0aGlz
KTsKICAgICBUaHJlYWQqIHRocmVhZCA9IG5ldyBUaHJlYWQoZ2V0Q3VycmVudFBsYXRmb3JtVGhy
ZWFkKCksIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdpbigpKTsKIAogICAgIE11dGV4TG9j
a2VyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKaW5kZXggNWM3NzA1Zi4uM2Q0YWEyMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgK
QEAgLTIyLDggKzIyLDggQEAKICNpZm5kZWYgTWFjaGluZVRocmVhZHNfaAogI2RlZmluZSBNYWNo
aW5lVGhyZWFkc19oCiAKLSNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01NSw3ICs1NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwKiBtX2hlYXA7CiAgICAgICAgIE11dGV4
IG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleDsKICAgICAgICAgVGhyZWFkKiBtX3JlZ2lzdGVyZWRU
aHJlYWRzOwotICAgICAgICBwdGhyZWFkX2tleV90IG1fdGhyZWFkU3BlY2lmaWM7CisgICAgICAg
IFdURjo6VGhyZWFkU3BlY2lmaWNLZXkgbV90aHJlYWRTcGVjaWZpYzsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggYjM0OTJiZi4uMGQyYjM4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAxMi0wOC0wMiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBbV0lOXSBSZW1vdmUgZGVwZW5kZW5jeSBvbiBwdGhyZWFkIGZyb20gTWFjaGluZVN0
YWNrTWFya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdpbmRvd3MgaGFzIG5vIHN1cHBvcnQgZm9yIGNhbGxpbmcgYSBkZXN0cnVjdG9yIGZvciB0aHJl
YWQgc3BlY2lmaWMgZGF0YS4KKyAgICAgICAgU2luY2Ugd2UgbmVlZCBtb3JlIGNvbnRyb2wgb3Zl
ciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgdGhyZWFkIHNwZWNpZmljIGtleXMKKyAgICAgICAgd2Ug
Y2FuIG5vdCBzaW1wbHkgZXh0ZW5kIFdURjo6VGhyZWFkU3BlY2lmaWMgd2l0aCB0aGlzIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgQWxsIHRocmVhZCBzcGVjaWZpYyBrZXlzIGNyZWF0ZWQgdmlh
IHRoZSBuZXcgQVBJIGdldCBzdG9yZWQgaW4gYSBsaXN0LgorICAgICAgICBBZnRlciBhIHRocmVh
ZCBmdW5jdGlvbiBmaW5pc2hlZCB3ZSBpdGVyYXRlIG92ZXIgdGhpcyBsaXN0IGFuZCBjYWxsCisg
ICAgICAgIHRoZSByZWdpc3RlcmVkIGRlc3RydWN0b3IgZm9yIGV2ZXJ5IGl0ZW0gaWYgbmVlZGVk
LgorCisgICAgICAgICogd3RmL1RocmVhZFNwZWNpZmljLmg6CisgICAgICAgIChXVEYpOgorICAg
ICAgICAoV1RGOjp0aHJlYWRTcGVjaWZpY0tleUNyZWF0ZSk6IEFkZGVkIHdyYXBwZXIgYXJvdW5k
IHB0aHJlYWRfa2V5X2NyZWF0ZS4KKyAgICAgICAgKFdURjo6dGhyZWFkU3BlY2lmaWNLZXlEZWxl
dGUpOiBBZGRlZCB3cmFwcGVyIGFyb3VuZCBwdGhyZWFkX2tleV9kZWxldGUuCisgICAgICAgIChX
VEY6OnRocmVhZFNwZWNpZmljU2V0KTogQWRkZWQgd3JhcHBlciBhcm91bmQgcHRocmVhZF9zZXRz
cGVjaWZpYy4KKyAgICAgICAgKFdURjo6dGhyZWFkU3BlY2lmaWNHZXQpOiBBZGRlZCB3cmFwcGVy
IGFyb3VuZCBwdGhyZWFkX2dldHNwZWNpZmljLgorICAgICAgICAqIHd0Zi9UaHJlYWRTcGVjaWZp
Y1dpbi5jcHA6CisKIDIwMTItMDgtMDEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBXVEY6OmdldEN1cnJlbnRMb2NhbFRpbWUoKSB3aXRo
IEdyZWdvcmlhbkRhdGVUaW1lOjpzZXRUb0N1cnJlbnRMb2NhbFRpbWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGhyZWFkU3BlY2lmaWMuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZFNw
ZWNpZmljLmgKaW5kZXggZjUxYWI0Yy4uNGViZWNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGhyZWFkU3BlY2lmaWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVjaWZpYy5o
CkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmlhbiBMaSA8amlhbmxp
QGNocm9taXVtLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBQYXRyaWNrIEdhbnN0ZXJlciA8
cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
Miw2ICsxMDMsMzMgQEAgcHJpdmF0ZToKIH07CiAKICNpZiBVU0UoUFRIUkVBRFMpCisKK3R5cGVk
ZWYgcHRocmVhZF9rZXlfdCBUaHJlYWRTcGVjaWZpY0tleTsKKworaW5saW5lIHZvaWQgdGhyZWFk
U3BlY2lmaWNLZXlDcmVhdGUoVGhyZWFkU3BlY2lmaWNLZXkqIGtleSwgdm9pZCAoKmRlc3RydWN0
b3IpKHZvaWQgKikpCit7CisgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfY3JlYXRlKGtleSwg
ZGVzdHJ1Y3Rvcik7CisgICAgaWYgKGVycm9yKQorICAgICAgICBDUkFTSCgpOworfQorCitpbmxp
bmUgdm9pZCB0aHJlYWRTcGVjaWZpY0tleURlbGV0ZShUaHJlYWRTcGVjaWZpY0tleSBrZXkpCit7
CisgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfZGVsZXRlKGtleSk7CisgICAgaWYgKGVycm9y
KQorICAgICAgICBDUkFTSCgpOworfQorCitpbmxpbmUgdm9pZCB0aHJlYWRTcGVjaWZpY1NldChU
aHJlYWRTcGVjaWZpY0tleSBrZXksIHZvaWQqIHZhbHVlKQoreworICAgIHB0aHJlYWRfc2V0c3Bl
Y2lmaWMoa2V5LCB2YWx1ZSk7Cit9CisKK2lubGluZSB2b2lkKiB0aHJlYWRTcGVjaWZpY0dldChU
aHJlYWRTcGVjaWZpY0tleSBrZXkpCit7CisgICAgcmV0dXJuIHB0aHJlYWRfZ2V0c3BlY2lmaWMo
a2V5KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGlubGluZSBUaHJlYWRTcGVjaWZpYzxU
Pjo6VGhyZWFkU3BlY2lmaWMoKQogewpAQCAtMTM5LDYgKzE2NywxNCBAQCBjb25zdCBpbnQga01h
eFRsc0tleVNpemUgPSAyNTY7CiBXVEZfRVhQT1JUX1BSSVZBVEUgbG9uZyYgdGxzS2V5Q291bnQo
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBEV09SRCogdGxzS2V5cygpOwogCitjbGFzcyBQbGF0Zm9y
bVRocmVhZFNwZWNpZmljS2V5OwordHlwZWRlZiBQbGF0Zm9ybVRocmVhZFNwZWNpZmljS2V5KiBU
aHJlYWRTcGVjaWZpY0tleTsKKwordm9pZCB0aHJlYWRTcGVjaWZpY0tleUNyZWF0ZShUaHJlYWRT
cGVjaWZpY0tleSosIHZvaWQgKCopKHZvaWQgKikpOwordm9pZCB0aHJlYWRTcGVjaWZpY0tleURl
bGV0ZShUaHJlYWRTcGVjaWZpY0tleSk7Cit2b2lkIHRocmVhZFNwZWNpZmljU2V0KFRocmVhZFNw
ZWNpZmljS2V5LCB2b2lkKik7Cit2b2lkKiB0aHJlYWRTcGVjaWZpY0dldChUaHJlYWRTcGVjaWZp
Y0tleSk7CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGhyZWFkU3BlY2lmaWM8VD46
OlRocmVhZFNwZWNpZmljKCkKICAgICA6IG1faW5kZXgoLTEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRTcGVjaWZpY1dpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVj
aWZpY1dpbi5jcHAKaW5kZXggZDcyOTk2YS4uYmRjMmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVGhyZWFkU3BlY2lmaWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZFNw
ZWNpZmljV2luLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
SmlhbiBMaSA8amlhbmxpQGNocm9taXVtLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBQYXRy
aWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTE5LDE1ICsyMCw2MSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUg
IlRocmVhZFNwZWNpZmljLmgiCiAKLSNpZiBVU0UoUFRIUkVBRFMpCi0jZXJyb3IgVGhpcyBmaWxl
IHNob3VsZCBub3QgYmUgY29tcGlsZWQgYnkgcG9ydHMgdGhhdCBkbyBub3QgdXNlIFdpbmRvd3Mg
bmF0aXZlIFRocmVhZFNwZWNpZmljIGltcGxlbWVudGF0aW9uLgotI2VuZGlmCisjaW5jbHVkZSAi
U3RkTGliRXh0cmFzLmgiCisjaW5jbHVkZSAiVGhyZWFkaW5nUHJpbWl0aXZlcy5oIgorI2luY2x1
ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CisKKyNpZiAhVVNFKFBUSFJFQURTKQogCiBuYW1l
c3BhY2UgV1RGIHsKIAorc3RhdGljIERvdWJseUxpbmtlZExpc3Q8UGxhdGZvcm1UaHJlYWRTcGVj
aWZpY0tleT4mIGRlc3RydWN0b3JzTGlzdCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChE
b3VibHlMaW5rZWRMaXN0PFBsYXRmb3JtVGhyZWFkU3BlY2lmaWNLZXk+LCBzdGF0aWNMaXN0LCAo
KSk7CisgICAgcmV0dXJuIHN0YXRpY0xpc3Q7Cit9CisKK3N0YXRpYyBNdXRleCYgZGVzdHJ1Y3Rv
cnNNdXRleCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgc3RhdGljTXV0ZXgs
ICgpKTsKKyAgICByZXR1cm4gc3RhdGljTXV0ZXg7Cit9CisKK2NsYXNzIFBsYXRmb3JtVGhyZWFk
U3BlY2lmaWNLZXkgOiBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8UGxhdGZvcm1UaHJlYWRT
cGVjaWZpY0tleT4geworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBEb3VibHlMaW5rZWRMaXN0
Tm9kZTxQbGF0Zm9ybVRocmVhZFNwZWNpZmljS2V5PjsKKworICAgIFBsYXRmb3JtVGhyZWFkU3Bl
Y2lmaWNLZXkodm9pZCAoKmRlc3RydWN0b3IpKHZvaWQgKikpCisgICAgICAgIDogbV9kZXN0cnVj
dG9yKGRlc3RydWN0b3IpCisgICAgeworICAgICAgICBtX3Rsc0tleSA9IFRsc0FsbG9jKCk7Cisg
ICAgICAgIGlmIChtX3Rsc0tleSA9PSBUTFNfT1VUX09GX0lOREVYRVMpCisgICAgICAgICAgICBD
UkFTSCgpOworICAgIH0KKworICAgIH5QbGF0Zm9ybVRocmVhZFNwZWNpZmljS2V5KCkKKyAgICB7
CisgICAgICAgIFRsc0ZyZWUobV90bHNLZXkpOworICAgIH0KKworICAgIHZvaWQgc2V0VmFsdWUo
dm9pZCogZGF0YSkgeyBUbHNTZXRWYWx1ZShtX3Rsc0tleSwgZGF0YSk7IH0KKyAgICB2b2lkKiB2
YWx1ZSgpIHsgcmV0dXJuIFRsc0dldFZhbHVlKG1fdGxzS2V5KTsgfQorCisgICAgdm9pZCBjYWxs
RGVzdHJ1Y3RvcigpCisgICAgeworICAgICAgIGlmICh2b2lkKiBkYXRhID0gdmFsdWUoKSkKKyAg
ICAgICAgICAgIG1fZGVzdHJ1Y3RvcihkYXRhKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9p
ZCAoKm1fZGVzdHJ1Y3Rvcikodm9pZCAqKTsKKyAgICBEV09SRCBtX3Rsc0tleTsKKyAgICBQbGF0
Zm9ybVRocmVhZFNwZWNpZmljS2V5KiBtX3ByZXY7CisgICAgUGxhdGZvcm1UaHJlYWRTcGVjaWZp
Y0tleSogbV9uZXh0OworfTsKKwogbG9uZyYgdGxzS2V5Q291bnQoKQogewogICAgIHN0YXRpYyBs
b25nIGNvdW50OwpAQCAtNDAsNiArODcsMzEgQEAgRFdPUkQqIHRsc0tleXMoKQogICAgIHJldHVy
biBrZXlzOwogfQogCit2b2lkIHRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKFRocmVhZFNwZWNpZmlj
S2V5KiBrZXksIHZvaWQgKCpkZXN0cnVjdG9yKSh2b2lkICopKQoreworICAgICprZXkgPSBuZXcg
UGxhdGZvcm1UaHJlYWRTcGVjaWZpY0tleShkZXN0cnVjdG9yKTsKKworICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihkZXN0cnVjdG9yc011dGV4KCkpOworICAgIGRlc3RydWN0b3JzTGlzdCgpLnB1c2go
KmtleSk7Cit9CisKK3ZvaWQgdGhyZWFkU3BlY2lmaWNLZXlEZWxldGUoVGhyZWFkU3BlY2lmaWNL
ZXkga2V5KQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihkZXN0cnVjdG9yc011dGV4KCkpOwor
ICAgIGRlc3RydWN0b3JzTGlzdCgpLnJlbW92ZShrZXkpOworICAgIGRlbGV0ZSBrZXk7Cit9CisK
K3ZvaWQgdGhyZWFkU3BlY2lmaWNTZXQoVGhyZWFkU3BlY2lmaWNLZXkga2V5LCB2b2lkKiBkYXRh
KQoreworICAgIGtleS0+c2V0VmFsdWUoZGF0YSk7Cit9CisKK3ZvaWQqIHRocmVhZFNwZWNpZmlj
R2V0KFRocmVhZFNwZWNpZmljS2V5IGtleSkKK3sKKyAgICByZXR1cm4ga2V5LT52YWx1ZSgpOwor
fQorCiB2b2lkIFRocmVhZFNwZWNpZmljVGhyZWFkRXhpdCgpCiB7CiAgICAgZm9yIChsb25nIGkg
PSAwOyBpIDwgdGxzS2V5Q291bnQoKTsgaSsrKSB7CkBAIC00OCw2ICsxMjAsMTUgQEAgdm9pZCBU
aHJlYWRTcGVjaWZpY1RocmVhZEV4aXQoKQogICAgICAgICBpZiAoZGF0YSkKICAgICAgICAgICAg
IGRhdGEtPmRlc3RydWN0b3IoZGF0YSk7CiAgICAgfQorCisgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KGRlc3RydWN0b3JzTXV0ZXgoKSk7CisgICAgUGxhdGZvcm1UaHJlYWRTcGVjaWZpY0tleSoga2V5
ID0gZGVzdHJ1Y3RvcnNMaXN0KCkuaGVhZCgpOworICAgIHdoaWxlIChrZXkpIHsKKyAgICAgICAg
a2V5LT5jYWxsRGVzdHJ1Y3RvcigpOworICAgICAgICBrZXkgPSBrZXktPm5leHQoKTsKKyAgICB9
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gIVVTRShQVEhSRUFEUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156527</attachid>
            <date>2012-08-04 01:20:49 -0700</date>
            <delta_ts>2012-08-06 17:29:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68429-20120804102028.patch</filename>
            <type>text/plain</type>
            <size>10331</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
Mzc1YWI0M2UyZWZlYWNlODNlNjFiZDVhMWZmODJiMTEyM2RmYjI5Li41ZTlkMTE1MzIyNzE2ZmE0
MDAyODA5YmQwMmRkOGJmY2VmMGIzOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxMi0wOC0wNCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBbV0lOXSBSZW1vdmUgZGVwZW5kZW5jeSBvbiBwdGhyZWFkIGZyb20g
TWFjaGluZVN0YWNrTWFya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02ODQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdpbmRvd3MgaGFzIG5vIHN1cHBvcnQgZm9yIGNhbGxpbmcgYSBkZXN0cnVjdG9y
IGZvciB0aHJlYWQgc3BlY2lmaWMgZGF0YS4KKyAgICAgICAgU2luY2Ugd2UgbmVlZCBtb3JlIGNv
bnRyb2wgb3ZlciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgdGhyZWFkIHNwZWNpZmljIGtleXMKKyAg
ICAgICAgd2UgY2FuIG5vdCBzaW1wbHkgZXh0ZW5kIFdURjo6VGhyZWFkU3BlY2lmaWMgd2l0aCB0
aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgQWxsIHRocmVhZCBzcGVjaWZpYyBrZXlzIGNy
ZWF0ZWQgdmlhIHRoZSBuZXcgQVBJIGdldCBzdG9yZWQgaW4gYSBsaXN0LgorICAgICAgICBBZnRl
ciBhIHRocmVhZCBmdW5jdGlvbiBmaW5pc2hlZCB3ZSBpdGVyYXRlIG92ZXIgdGhpcyBsaXN0IGFu
ZCBjYWxsCisgICAgICAgIHRoZSByZWdpc3RlcmVkIGRlc3RydWN0b3IgZm9yIGV2ZXJ5IGl0ZW0g
aWYgbmVlZGVkLgorCisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOiAgVXNl
IHRoZSBuZXcgZnVuY3Rpb25zIGluc3RlYWQgb2YgcHRocmVhZCBkaXJlY3RseS4KKyAgICAgICAg
KEpTQzo6TWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhyZWFkcyk6CisgICAgICAgIChKU0M6Ok1h
Y2hpbmVUaHJlYWRzOjptYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcyk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBoZWFwL01h
Y2hpbmVTdGFja01hcmtlci5oOgorICAgICAgICAoTWFjaGluZVRocmVhZHMpOgorCiAyMDEyLTA4
LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hlcyBp
biBkZmdCdWlsZFB1dEJ5SWRMaXN0IHdoZW4gY2xpY2tpbmcgb24ganVzdCBhYm91dCBhbnl0aGlu
ZyBvbiBHb29nbGUgTWFwcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCAzODA1MTAwM2QzYmMzOWI5MmY1Yzk3ZjgwMWIwMTY0YjE1
ODQyODY4Li43MjFjNWUxMTA0ZGZkZmE5NDBjZDFkNzljMzhlMjBjM2U3NjVhMjY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDEyLTA4LTA0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFtXSU5dIFJlbW92ZSBkZXBlbmRlbmN5IG9uIHB0aHJlYWQgZnJv
bSBNYWNoaW5lU3RhY2tNYXJrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY4NDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2luZG93cyBoYXMgbm8gc3VwcG9ydCBmb3IgY2FsbGluZyBhIGRlc3RydWN0
b3IgZm9yIHRocmVhZCBzcGVjaWZpYyBkYXRhLgorICAgICAgICBTaW5jZSB3ZSBuZWVkIG1vcmUg
Y29udHJvbCBvdmVyIGNyZWF0aW5nIGFuZCBkZWxldGluZyB0aHJlYWQgc3BlY2lmaWMga2V5cwor
ICAgICAgICB3ZSBjYW4gbm90IHNpbXBseSBleHRlbmQgV1RGOjpUaHJlYWRTcGVjaWZpYyB3aXRo
IHRoaXMgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBbGwgdGhyZWFkIHNwZWNpZmljIGtleXMg
Y3JlYXRlZCB2aWEgdGhlIG5ldyBBUEkgZ2V0IHN0b3JlZCBpbiBhIGxpc3QuCisgICAgICAgIEFm
dGVyIGEgdGhyZWFkIGZ1bmN0aW9uIGZpbmlzaGVkIHdlIGl0ZXJhdGUgb3ZlciB0aGlzIGxpc3Qg
YW5kIGNhbGwKKyAgICAgICAgdGhlIHJlZ2lzdGVyZWQgZGVzdHJ1Y3RvciBmb3IgZXZlcnkgaXRl
bSBpZiBuZWVkZWQuCisKKyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDoKKyAgICAgICAg
KFdURik6CisgICAgICAgIChXVEY6OnRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKTogQWRkZWQgd3Jh
cHBlciBhcm91bmQgcHRocmVhZF9rZXlfY3JlYXRlLgorICAgICAgICAoV1RGOjp0aHJlYWRTcGVj
aWZpY0tleURlbGV0ZSk6IEFkZGVkIHdyYXBwZXIgYXJvdW5kIHB0aHJlYWRfa2V5X2RlbGV0ZS4K
KyAgICAgICAgKFdURjo6dGhyZWFkU3BlY2lmaWNTZXQpOiBBZGRlZCB3cmFwcGVyIGFyb3VuZCBw
dGhyZWFkX3NldHNwZWNpZmljLgorICAgICAgICAoV1RGOjp0aHJlYWRTcGVjaWZpY0dldCk6IEFk
ZGVkIHdyYXBwZXIgYXJvdW5kIHB0aHJlYWRfZ2V0c3BlY2lmaWMuCisgICAgICAgICogd3RmL1Ro
cmVhZFNwZWNpZmljV2luLmNwcDoKKwogMjAxMi0wOC0wMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fi
b2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IEhUTUwgcGFyc2VyIHRvIGhhbmRsZSA4
LWJpdCByZXNvdXJjZXMgd2l0aG91dCBjb252ZXJ0aW5nIHRvIFVDaGFyKgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggN2ViNTc0
NzliNzUyNTIxMzgyOTllMmE3YzFjNjU1Y2JmZjExMDAwNy4uNTM3YTM0ZTQ4MDhkOGIxMGMxNGVl
YzlhMjYyZmUxNDVkZDIzYzY0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0xNDEsMTAgKzE0MSw4IEBAIE1hY2hpbmVUaHJl
YWRzOjpNYWNoaW5lVGhyZWFkcyhIZWFwKiBoZWFwKQogCiBNYWNoaW5lVGhyZWFkczo6fk1hY2hp
bmVUaHJlYWRzKCkKIHsKLSAgICBpZiAobV90aHJlYWRTcGVjaWZpYykgewotICAgICAgICBpbnQg
ZXJyb3IgPSBwdGhyZWFkX2tleV9kZWxldGUobV90aHJlYWRTcGVjaWZpYyk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQoZXJyb3IsICFlcnJvcik7Ci0gICAgfQorICAgIGlmIChtX3RocmVhZFNwZWNp
ZmljKQorICAgICAgICB0aHJlYWRTcGVjaWZpY0tleURlbGV0ZShtX3RocmVhZFNwZWNpZmljKTsK
IAogICAgIE11dGV4TG9ja2VyIHJlZ2lzdGVyZWRUaHJlYWRzTG9jayhtX3JlZ2lzdGVyZWRUaHJl
YWRzTXV0ZXgpOwogICAgIGZvciAoVGhyZWFkKiB0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsgdDsp
IHsKQEAgLTE4MSwxOSArMTc5LDE3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6Om1ha2VVc2FibGVG
cm9tTXVsdGlwbGVUaHJlYWRzKCkKICAgICBpZiAobV90aHJlYWRTcGVjaWZpYykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfY3JlYXRlKCZtX3RocmVhZFNw
ZWNpZmljLCByZW1vdmVUaHJlYWQpOwotICAgIGlmIChlcnJvcikKLSAgICAgICAgQ1JBU0goKTsK
KyAgICB0aHJlYWRTcGVjaWZpY0tleUNyZWF0ZSgmbV90aHJlYWRTcGVjaWZpYywgcmVtb3ZlVGhy
ZWFkKTsKIH0KIAogdm9pZCBNYWNoaW5lVGhyZWFkczo6YWRkQ3VycmVudFRocmVhZCgpCiB7CiAg
ICAgQVNTRVJUKCFtX2hlYXAtPmdsb2JhbERhdGEoKS0+ZXhjbHVzaXZlVGhyZWFkIHx8IG1faGVh
cC0+Z2xvYmFsRGF0YSgpLT5leGNsdXNpdmVUaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKIAot
ICAgIGlmICghbV90aHJlYWRTcGVjaWZpYyB8fCBwdGhyZWFkX2dldHNwZWNpZmljKG1fdGhyZWFk
U3BlY2lmaWMpKQorICAgIGlmICghbV90aHJlYWRTcGVjaWZpYyB8fCB0aHJlYWRTcGVjaWZpY0dl
dChtX3RocmVhZFNwZWNpZmljKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHRocmVhZF9zZXRz
cGVjaWZpYyhtX3RocmVhZFNwZWNpZmljLCB0aGlzKTsKKyAgICB0aHJlYWRTcGVjaWZpY1NldCht
X3RocmVhZFNwZWNpZmljLCB0aGlzKTsKICAgICBUaHJlYWQqIHRocmVhZCA9IG5ldyBUaHJlYWQo
Z2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCksIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLm9yaWdp
bigpKTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKaW5k
ZXggNWM3NzA1ZmNmYzNiZDUxZjQ4ODMwM2NiNTY3ZmZjM2Q5YmVhNTUzNS4uM2Q0YWEyMmQ0N2My
ZDhmZTlkMTM5YzEwZGYwNGVlYmQ3OWMwMmQxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKQEAgLTIyLDggKzIyLDggQEAKICNpZm5kZWYg
TWFjaGluZVRocmVhZHNfaAogI2RlZmluZSBNYWNoaW5lVGhyZWFkc19oCiAKLSNpbmNsdWRlIDxw
dGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBIZWFwKiBtX2hlYXA7CiAgICAgICAgIE11dGV4IG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleDsK
ICAgICAgICAgVGhyZWFkKiBtX3JlZ2lzdGVyZWRUaHJlYWRzOwotICAgICAgICBwdGhyZWFkX2tl
eV90IG1fdGhyZWFkU3BlY2lmaWM7CisgICAgICAgIFdURjo6VGhyZWFkU3BlY2lmaWNLZXkgbV90
aHJlYWRTcGVjaWZpYzsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1RocmVhZFNwZWNpZmljLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRT
cGVjaWZpYy5oCmluZGV4IGY1MWFiNGNmMmY4MTYzNTUxZDMyM2JmZmQxYThhYjkxNTgzZTU4YWQu
LjRlYmVjZTA1NTc5OWVhMTcwZGVmYWU1OWYyZjlhN2UyODhkN2Q4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZFNwZWNpZmljLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFk
U3BlY2lmaWMuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEppYW4g
TGkgPGppYW5saUBjaHJvbWl1bS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBH
YW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMDIsNiArMTAzLDMzIEBAIHByaXZhdGU6CiB9OwogCiAjaWYgVVNFKFBUSFJFQURT
KQorCit0eXBlZGVmIHB0aHJlYWRfa2V5X3QgVGhyZWFkU3BlY2lmaWNLZXk7CisKK2lubGluZSB2
b2lkIHRocmVhZFNwZWNpZmljS2V5Q3JlYXRlKFRocmVhZFNwZWNpZmljS2V5KiBrZXksIHZvaWQg
KCpkZXN0cnVjdG9yKSh2b2lkICopKQoreworICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2Ny
ZWF0ZShrZXksIGRlc3RydWN0b3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgQ1JBU0goKTsK
K30KKworaW5saW5lIHZvaWQgdGhyZWFkU3BlY2lmaWNLZXlEZWxldGUoVGhyZWFkU3BlY2lmaWNL
ZXkga2V5KQoreworICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2RlbGV0ZShrZXkpOworICAg
IGlmIChlcnJvcikKKyAgICAgICAgQ1JBU0goKTsKK30KKworaW5saW5lIHZvaWQgdGhyZWFkU3Bl
Y2lmaWNTZXQoVGhyZWFkU3BlY2lmaWNLZXkga2V5LCB2b2lkKiB2YWx1ZSkKK3sKKyAgICBwdGhy
ZWFkX3NldHNwZWNpZmljKGtleSwgdmFsdWUpOworfQorCitpbmxpbmUgdm9pZCogdGhyZWFkU3Bl
Y2lmaWNHZXQoVGhyZWFkU3BlY2lmaWNLZXkga2V5KQoreworICAgIHJldHVybiBwdGhyZWFkX2dl
dHNwZWNpZmljKGtleSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVGhyZWFk
U3BlY2lmaWM8VD46OlRocmVhZFNwZWNpZmljKCkKIHsKQEAgLTEzOSw2ICsxNjcsMTQgQEAgY29u
c3QgaW50IGtNYXhUbHNLZXlTaXplID0gMjU2OwogV1RGX0VYUE9SVF9QUklWQVRFIGxvbmcmIHRs
c0tleUNvdW50KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgRFdPUkQqIHRsc0tleXMoKTsKIAorY2xh
c3MgUGxhdGZvcm1UaHJlYWRTcGVjaWZpY0tleTsKK3R5cGVkZWYgUGxhdGZvcm1UaHJlYWRTcGVj
aWZpY0tleSogVGhyZWFkU3BlY2lmaWNLZXk7CisKK3ZvaWQgdGhyZWFkU3BlY2lmaWNLZXlDcmVh
dGUoVGhyZWFkU3BlY2lmaWNLZXkqLCB2b2lkICgqKSh2b2lkICopKTsKK3ZvaWQgdGhyZWFkU3Bl
Y2lmaWNLZXlEZWxldGUoVGhyZWFkU3BlY2lmaWNLZXkpOwordm9pZCB0aHJlYWRTcGVjaWZpY1Nl
dChUaHJlYWRTcGVjaWZpY0tleSwgdm9pZCopOwordm9pZCogdGhyZWFkU3BlY2lmaWNHZXQoVGhy
ZWFkU3BlY2lmaWNLZXkpOworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5saW5lIFRocmVhZFNw
ZWNpZmljPFQ+OjpUaHJlYWRTcGVjaWZpYygpCiAgICAgOiBtX2luZGV4KC0xKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVGhyZWFkU3BlY2lmaWNXaW4uY3BwIGIvU291cmNlL1dURi93dGYv
VGhyZWFkU3BlY2lmaWNXaW4uY3BwCmluZGV4IGQ3Mjk5NmE3YTBjYTAyMzlhMTQ2MTE4ZDNlMDVi
MWU2ODFhZDU2MzEuLmQwZjYwYWNlMTEyZjhmN2ZiNDI1ZDJmNDQwYWY0MzhiNWJiMmI0MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZFNwZWNpZmljV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRTcGVjaWZpY1dpbi5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA5IEppYW4gTGkgPGppYW5saUBjaHJvbWl1bS5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0xOSwxNSArMjAsNjEgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0KICNpbmNsdWRlICJUaHJlYWRTcGVjaWZpYy5oIgogCi0jaWYgVVNFKFBUSFJFQURT
KQotI2Vycm9yIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGNvbXBpbGVkIGJ5IHBvcnRzIHRoYXQg
ZG8gbm90IHVzZSBXaW5kb3dzIG5hdGl2ZSBUaHJlYWRTcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4K
LSNlbmRpZgorI2luY2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgIlRocmVhZGluZ1By
aW1pdGl2ZXMuaCIKKyNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgorCisjaWYgIVVT
RShQVEhSRUFEUykKIAogbmFtZXNwYWNlIFdURiB7CiAKK3N0YXRpYyBEb3VibHlMaW5rZWRMaXN0
PFBsYXRmb3JtVGhyZWFkU3BlY2lmaWNLZXk+JiBkZXN0cnVjdG9yc0xpc3QoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoRG91Ymx5TGlua2VkTGlzdDxQbGF0Zm9ybVRocmVhZFNwZWNpZmlj
S2V5Piwgc3RhdGljTGlzdCwgKCkpOworICAgIHJldHVybiBzdGF0aWNMaXN0OworfQorCitzdGF0
aWMgTXV0ZXgmIGRlc3RydWN0b3JzTXV0ZXgoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
TXV0ZXgsIHN0YXRpY011dGV4LCAoKSk7CisgICAgcmV0dXJuIHN0YXRpY011dGV4OworfQorCitj
bGFzcyBQbGF0Zm9ybVRocmVhZFNwZWNpZmljS2V5IDogcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFBsYXRmb3JtVGhyZWFkU3BlY2lmaWNLZXk+IHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xh
c3MgRG91Ymx5TGlua2VkTGlzdE5vZGU8UGxhdGZvcm1UaHJlYWRTcGVjaWZpY0tleT47CisKKyAg
ICBQbGF0Zm9ybVRocmVhZFNwZWNpZmljS2V5KHZvaWQgKCpkZXN0cnVjdG9yKSh2b2lkICopKQor
ICAgICAgICA6IG1fZGVzdHJ1Y3RvcihkZXN0cnVjdG9yKQorICAgIHsKKyAgICAgICAgbV90bHNL
ZXkgPSBUbHNBbGxvYygpOworICAgICAgICBpZiAobV90bHNLZXkgPT0gVExTX09VVF9PRl9JTkRF
WEVTKQorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICB+UGxhdGZvcm1UaHJlYWRT
cGVjaWZpY0tleSgpCisgICAgeworICAgICAgICBUbHNGcmVlKG1fdGxzS2V5KTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFZhbHVlKHZvaWQqIGRhdGEpIHsgVGxzU2V0VmFsdWUobV90bHNLZXksIGRh
dGEpOyB9CisgICAgdm9pZCogdmFsdWUoKSB7IHJldHVybiBUbHNHZXRWYWx1ZShtX3Rsc0tleSk7
IH0KKworICAgIHZvaWQgY2FsbERlc3RydWN0b3IoKQorICAgIHsKKyAgICAgICBpZiAodm9pZCog
ZGF0YSA9IHZhbHVlKCkpCisgICAgICAgICAgICBtX2Rlc3RydWN0b3IoZGF0YSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIHZvaWQgKCptX2Rlc3RydWN0b3IpKHZvaWQgKik7CisgICAgRFdPUkQg
bV90bHNLZXk7CisgICAgUGxhdGZvcm1UaHJlYWRTcGVjaWZpY0tleSogbV9wcmV2OworICAgIFBs
YXRmb3JtVGhyZWFkU3BlY2lmaWNLZXkqIG1fbmV4dDsKK307CisKIGxvbmcmIHRsc0tleUNvdW50
KCkKIHsKICAgICBzdGF0aWMgbG9uZyBjb3VudDsKQEAgLTQwLDYgKzg3LDMxIEBAIERXT1JEKiB0
bHNLZXlzKCkKICAgICByZXR1cm4ga2V5czsKIH0KIAordm9pZCB0aHJlYWRTcGVjaWZpY0tleUNy
ZWF0ZShUaHJlYWRTcGVjaWZpY0tleSoga2V5LCB2b2lkICgqZGVzdHJ1Y3Rvcikodm9pZCAqKSkK
K3sKKyAgICAqa2V5ID0gbmV3IFBsYXRmb3JtVGhyZWFkU3BlY2lmaWNLZXkoZGVzdHJ1Y3Rvcik7
CisKKyAgICBNdXRleExvY2tlciBsb2NrZXIoZGVzdHJ1Y3RvcnNNdXRleCgpKTsKKyAgICBkZXN0
cnVjdG9yc0xpc3QoKS5wdXNoKCprZXkpOworfQorCit2b2lkIHRocmVhZFNwZWNpZmljS2V5RGVs
ZXRlKFRocmVhZFNwZWNpZmljS2V5IGtleSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIoZGVz
dHJ1Y3RvcnNNdXRleCgpKTsKKyAgICBkZXN0cnVjdG9yc0xpc3QoKS5yZW1vdmUoa2V5KTsKKyAg
ICBkZWxldGUga2V5OworfQorCit2b2lkIHRocmVhZFNwZWNpZmljU2V0KFRocmVhZFNwZWNpZmlj
S2V5IGtleSwgdm9pZCogZGF0YSkKK3sKKyAgICBrZXktPnNldFZhbHVlKGRhdGEpOworfQorCit2
b2lkKiB0aHJlYWRTcGVjaWZpY0dldChUaHJlYWRTcGVjaWZpY0tleSBrZXkpCit7CisgICAgcmV0
dXJuIGtleS0+dmFsdWUoKTsKK30KKwogdm9pZCBUaHJlYWRTcGVjaWZpY1RocmVhZEV4aXQoKQog
ewogICAgIGZvciAobG9uZyBpID0gMDsgaSA8IHRsc0tleUNvdW50KCk7IGkrKykgewpAQCAtNDgs
NiArMTIwLDE2IEBAIHZvaWQgVGhyZWFkU3BlY2lmaWNUaHJlYWRFeGl0KCkKICAgICAgICAgaWYg
KGRhdGEpCiAgICAgICAgICAgICBkYXRhLT5kZXN0cnVjdG9yKGRhdGEpOwogICAgIH0KKworICAg
IE11dGV4TG9ja2VyIGxvY2tlcihkZXN0cnVjdG9yc011dGV4KCkpOworICAgIFBsYXRmb3JtVGhy
ZWFkU3BlY2lmaWNLZXkqIGtleSA9IGRlc3RydWN0b3JzTGlzdCgpLmhlYWQoKTsKKyAgICB3aGls
ZSAoa2V5KSB7CisgICAgICAgIFBsYXRmb3JtVGhyZWFkU3BlY2lmaWNLZXkqIG5leHRLZXkgPSBr
ZXktPm5leHQoKTsKKyAgICAgICAga2V5LT5jYWxsRGVzdHJ1Y3RvcigpOworICAgICAgICBrZXkg
PSBuZXh0S2V5OworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyAh
VVNFKFBUSFJFQURTKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>