<?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>89787</bug_id>
          
          <creation_ts>2012-06-22 14:53:13 -0700</creation_ts>
          <short_desc>Alignment crash in MIMESniffer</short_desc>
          <delta_ts>2012-07-18 11:51:57 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joe Mason">joenotcharles</reporter>
          <assigned_to name="Rob Buis">rwlbuis</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>luiz</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>yong.li.webkit</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655803</commentid>
    <comment_count>0</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-06-22 14:53:13 -0700</bug_when>
    <thetext>The compare function in MIMESniffing.cpp take a char* pointer, &quot;data&quot;, and does:

274         if (info.flags &amp; SkipWhiteSpace) {
275             size_t pos = 0;
276             skipWhiteSpace(data, pos, dataSize);
277             data += pos;
278             dataSize -= pos;
279         }

So if data starts 4-byte aligned but starts with a single space, it will be moved 1 byte ahead and no longer be aligned.

Then it calls &quot;maskedCompare(info, data, info.size)&quot;, which does:

const uint32_t* data32 = reinterpret_cast_ptr&lt;const uint32_t*&gt;(data);

Which is invalid as data is not necessarily 4-byte aligned.

In a debug build, reinterpret_cast_ptr will crash with an assertion failure:

ASSERTION FAILED: isPointerTypeAlignmentOkay(reinterpret_cast&lt;TypePtr&gt;(ptr))
/home/jmason/dev/webkit/Source/WTF/wtf/StdLibExtras.h(101) : TypePtr
reinterpret_cast_ptr(const void*) [with TypePtr = const unsigned int*]

I think that the unaligned access is potentially serious here so it shouldn&apos;t just be covered up, but I have no idea how to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667043</commentid>
    <comment_count>1</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-11 14:14:16 -0700</bug_when>
    <thetext>One way to fix this is by simply not using reinterpret_cast_ptr:

-    const uint32_t* data32 = reinterpret_cast_ptr&lt;const uint32_t*&gt;(data);
+    const uint32_t* data32 = static_cast&lt;const uint32_t*&gt;(static_cast&lt;const void*&gt;(data));

For ARMv7/BLACKBERRY this works fine, no warning and no ASSERT hit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667064</commentid>
    <comment_count>2</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-11 14:29:30 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; One way to fix this is by simply not using reinterpret_cast_ptr:
&gt; 
&gt; -    const uint32_t* data32 = reinterpret_cast_ptr&lt;const uint32_t*&gt;(data);
&gt; +    const uint32_t* data32 = static_cast&lt;const uint32_t*&gt;(static_cast&lt;const void*&gt;(data));
&gt; 
&gt; For ARMv7/BLACKBERRY this works fine, no warning and no ASSERT hit.

Forgot to say, ARMv7 allows the possible unalignment, there is a speed penalty but the unaligned case seems to be rare.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667067</commentid>
    <comment_count>3</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-11 14:30:47 -0700</bug_when>
    <thetext>Another way to deal with this is add the slow case, which has no problem with unalignment, since everything is char* based:

diff --git a/Source/WebCore/platform/network/MIMESniffing.cpp b/Source/WebCore/platform/network/MIMESniffing.cpp
index 5efd17f..f67adb5 100644
--- a/Source/WebCore/platform/network/MIMESniffing.cpp
+++ b/Source/WebCore/platform/network/MIMESniffing.cpp
@@ -233,11 +233,33 @@ static inline size_t dataSizeNeededForImageSniffing()
     return result;
 }
 
+#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)
+static inline bool maskedCompareSlowCase(const MagicNumbers&amp; info, const char* data)
+{
+    const char* p = reinterpret_cast&lt;const char*&gt;(info.pattern);
+    const char* m = reinterpret_cast&lt;const char*&gt;(info.mask);
+    const char* d = reinterpret_cast&lt;const char*&gt;(data);
+
+    size_t count = info.size;
+
+    for (size_t i = 0; i &lt; count; ++i) {
+        if ((*d++ &amp; *m++) != *p++)
+            return false;
+    }
+    return true;
+}
+#endif
+
 static inline bool maskedCompare(const MagicNumbers&amp; info, const char* data, size_t dataSize)
 {
     if (dataSize &lt; info.size)
         return false;
 
+#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)
+    if (!isPointerTypeAlignmentOkay(data))
+        return maskedCompareSlowCase(info, data);
+#endif
+
     const uint32_t* pattern32 = reinterpret_cast_ptr&lt;const uint32_t*&gt;(info.pattern);
     const uint32_t* mask32 = reinterpret_cast_ptr&lt;const uint32_t*&gt;(info.mask);
     const uint32_t* data32 = reinterpret_cast_ptr&lt;const uint32_t*&gt;(data);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667100</commentid>
    <comment_count>4</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-11 15:02:27 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Another way to deal with this is add the slow case, which has no problem with unalignment, since everything is char* based:
&gt; 
&gt; diff --git a/Source/WebCore/platform/network/MIMESniffing.cpp b/Source/WebCore/platform/network/MIMESniffing.cpp
&gt; index 5efd17f..f67adb5 100644
&gt; --- a/Source/WebCore/platform/network/MIMESniffing.cpp
&gt; +++ b/Source/WebCore/platform/network/MIMESniffing.cpp
&gt; @@ -233,11 +233,33 @@ static inline size_t dataSizeNeededForImageSniffing()
&gt;      return result;
&gt;  }
&gt; 
&gt; +#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)
&gt; +static inline bool maskedCompareSlowCase(const MagicNumbers&amp; info, const char* data)
&gt; +{
&gt; +    const char* p = reinterpret_cast&lt;const char*&gt;(info.pattern);
&gt; +    const char* m = reinterpret_cast&lt;const char*&gt;(info.mask);
&gt; +    const char* d = reinterpret_cast&lt;const char*&gt;(data);
&gt; +
&gt; +    size_t count = info.size;
&gt; +
&gt; +    for (size_t i = 0; i &lt; count; ++i) {
&gt; +        if ((*d++ &amp; *m++) != *p++)
&gt; +            return false;
&gt; +    }
&gt; +    return true;
&gt; +}
&gt; +#endif
&gt; +
&gt;  static inline bool maskedCompare(const MagicNumbers&amp; info, const char* data, size_t dataSize)
&gt;  {
&gt;      if (dataSize &lt; info.size)
&gt;          return false;
&gt; 
&gt; +#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)
&gt; +    if (!isPointerTypeAlignmentOkay(data))
&gt; +        return maskedCompareSlowCase(info, data);
&gt; +#endif
&gt; +
&gt;      const uint32_t* pattern32 = reinterpret_cast_ptr&lt;const uint32_t*&gt;(info.pattern);
&gt;      const uint32_t* mask32 = reinterpret_cast_ptr&lt;const uint32_t*&gt;(info.mask);
&gt;      const uint32_t* data32 = reinterpret_cast_ptr&lt;const uint32_t*&gt;(data);


I prefer this solution to hacking the warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667123</commentid>
    <comment_count>5</comment_count>
      <attachid>151798</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-11 15:20:10 -0700</bug_when>
    <thetext>Created attachment 151798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667758</commentid>
    <comment_count>6</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-07-12 07:45:04 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I prefer this solution to hacking the warning.

Yes, I much prefer the more explicit solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667759</commentid>
    <comment_count>7</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-07-12 07:45:43 -0700</bug_when>
    <thetext>Where does the test &quot;#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)&quot; come from, though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667765</commentid>
    <comment_count>8</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-12 07:53:53 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Where does the test &quot;#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)&quot; come from, though?

It is the guard for isPointerTypeAlignmentOkay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667767</commentid>
    <comment_count>9</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-07-12 07:56:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Where does the test &quot;#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)&quot; come from, though?
&gt; 
&gt; It is the guard for isPointerTypeAlignmentOkay.

I wonder if we should move it inside isPointerTypeAlignmentOkay:

#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)
   ... existing code
#else
   return true;
#endif

To avoid having to repeat it whenever we call isPointerTypeAlignmentOkay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667779</commentid>
    <comment_count>10</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-12 08:02:42 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; Where does the test &quot;#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)&quot; come from, though?
&gt; &gt; 
&gt; &gt; It is the guard for isPointerTypeAlignmentOkay.
&gt; 
&gt; I wonder if we should move it inside isPointerTypeAlignmentOkay:
&gt; 
&gt; #if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)
&gt;    ... existing code
&gt; #else
&gt;    return true;
&gt; #endif
&gt; 
&gt; To avoid having to repeat it whenever we call isPointerTypeAlignmentOkay.

That is a good idea. However, possibly this method was introduced as a quick &quot;internal&quot; check method. The background of this code is not clear to me just from looking at the commit message though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667784</commentid>
    <comment_count>11</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-07-12 08:15:19 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; That is a good idea. However, possibly this method was introduced as a quick &quot;internal&quot; check method. The background of this code is not clear to me just from looking at the commit message though.

That&apos;s my thought - if it was meant to be internal to reinterpret_cast_ptr, and we&apos;re now expanding it just to decide whether to call reinterpret_cast_ptr or use a slow path, we&apos;d want to always use the same guard.  But if it&apos;s meant to be a more general alignment check function, presumably it&apos;s usable on other platforms in different situations.

Assuming the former, how about renaming it to &quot;isPointerAlignmentOkayForReinterpretCast&quot; to make it clear that it&apos;s not for general use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667903</commentid>
    <comment_count>12</comment_count>
      <attachid>151982</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-12 09:59:02 -0700</bug_when>
    <thetext>Created attachment 151982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667942</commentid>
    <comment_count>13</comment_count>
      <attachid>151989</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-12 10:27:19 -0700</bug_when>
    <thetext>Created attachment 151989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671290</commentid>
    <comment_count>14</comment_count>
      <attachid>152768</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-17 08:24:09 -0700</bug_when>
    <thetext>Created attachment 152768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671291</commentid>
    <comment_count>15</comment_count>
      <attachid>152768</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-17 08:31:17 -0700</bug_when>
    <thetext>Comment on attachment 152768
Patch

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

&gt; Source/WTF/ChangeLog:3
&gt; +        alignment crash in MIMESniffer

alignment =&gt; Alignment?

&gt; Source/WTF/wtf/StdLibExtras.h:94
&gt; -#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)
&gt;  template&lt;typename Type&gt;
&gt;  bool isPointerTypeAlignmentOkay(Type* ptr)
&gt;  {
&gt; +#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)
&gt;      return !(reinterpret_cast&lt;intptr_t&gt;(ptr) % __alignof__(Type));
&gt; +#else
&gt; +    return true;
&gt; +#endif
&gt;  }
&gt;  
&gt; +#if (CPU(ARM) || CPU(MIPS)) &amp;&amp; COMPILER(GCC)

I would define another isPointerTypeAlignmentOkay in the other block like reinterpret_cast_ptr()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671662</commentid>
    <comment_count>16</comment_count>
      <attachid>152850</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-17 15:31:45 -0700</bug_when>
    <thetext>Created attachment 152850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671663</commentid>
    <comment_count>17</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-17 15:33:59 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=152850) [details]
&gt; Patch

This latest patch is more correct, I noticed it does need the reinterpret_cast before doing isPointerTypeAlignmentOkay. Unfortunately this re-adds the warning on gcc that goes with reinterpret_cast.
The other thing is the test, for some reason this is still hard to create. It seems the mimetype should be unknown to trigger the problem...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672383</commentid>
    <comment_count>18</comment_count>
      <attachid>153015</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-18 08:07:37 -0700</bug_when>
    <thetext>Created attachment 153015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672483</commentid>
    <comment_count>19</comment_count>
      <attachid>153035</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-18 10:18:10 -0700</bug_when>
    <thetext>Created attachment 153035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672596</commentid>
    <comment_count>20</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-18 11:51:57 -0700</bug_when>
    <thetext>Landed in r122990.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151798</attachid>
            <date>2012-07-11 15:20:10 -0700</date>
            <delta_ts>2012-07-12 09:58:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89787-20120711182156.patch</filename>
            <type>text/plain</type>
            <size>1685</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDczYTE3Yjk3OWRjNzIy
ZDZmYjk2YzlhMzYwNWEzZWU0N2Y5YTNmYy4uMzM2MzcyOWY5MTdjMGQ1OTNkZmFjZWZjZmI1MzY0
ZTc3YjNmNGUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA3LTExICBSb2Ig
QnVpcyAgPHJidWlzQHJpbS5jb20+CisKKyAgICAgICAgYWxpZ25tZW50IGNyYXNoIGluIE1JTUVT
bmlmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBy
ZXZlbnQgQVNTRVJUIG9uIHVuYWxpZ25lZCBkYXRhLiBUaGlzIGltcHJvdmVzIGJlaGF2aW9yIGZv
ciBhcmNoaXRlY3R1cmVzCisgICAgICAgIHRoYXQgZG8gdGhlIHVuYWxpZ25lZCBBU1NFUlQgY2hl
Y2sgYnV0IHRoYXQgYWN0dWFsbHkgYWxsb3cgdW5hbGlnbmVkIGFjY2Vzcywgd2hpbGUKKyAgICAg
ICAgbm90IG1ha2luZyBvdGhlciBjb25maWd1cmF0aW9ucyB3b3JzZS4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmNwcDoKKyAgICAgICAgKHN0ZDo6bWFza2VkQ29t
cGFyZSk6CisKIDIwMTItMDctMTAgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdp
bmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0dUS10gRml4IG1lbW9yeSBsZWFrcyBi
eSBhZG9wdGluZyBhbGxvY2F0aW9uIG9mIEdka1BpeGJ1ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwCmluZGV4IDVlZmQxN2YxMzhjYzVmZjQx
NTZjOTFhMzMwYTQ2NWIyNjYwZjRmYmUuLmQ5NWE3YmIyMDMxNjg0ZmJjYWU2YTRiMzYyMTcyM2I0
YjYxMzg4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlN
RVNuaWZmaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVT
bmlmZmluZy5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbWFza2Vk
Q29tcGFyZShjb25zdCBNYWdpY051bWJlcnMmIGluZm8sIGNvbnN0IGNoYXIqIGRhdGEsIHNpegog
CiAgICAgY29uc3QgdWludDMyX3QqIHBhdHRlcm4zMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNv
bnN0IHVpbnQzMl90Kj4oaW5mby5wYXR0ZXJuKTsKICAgICBjb25zdCB1aW50MzJfdCogbWFzazMy
ID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPihpbmZvLm1hc2spOwotICAg
IGNvbnN0IHVpbnQzMl90KiBkYXRhMzIgPSByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50
MzJfdCo+KGRhdGEpOworICAgIGNvbnN0IHVpbnQzMl90KiBkYXRhMzIgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50MzJfdCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkYXRhKSk7CiAKICAgICBz
aXplX3QgY291bnQgPSBpbmZvLnNpemUgPj4gMjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151982</attachid>
            <date>2012-07-12 09:59:02 -0700</date>
            <delta_ts>2012-07-12 10:27:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89787-20120712130049.patch</filename>
            <type>text/plain</type>
            <size>2305</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDczYTE3Yjk3OWRjNzIy
ZDZmYjk2YzlhMzYwNWEzZWU0N2Y5YTNmYy4uYjMyZmJmYWM4NzU1NjRiMjYxYWU1MGRjODcwZjVm
YjE0ZDc5NTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTEyICBSb2Ig
QnVpcyAgPHJidWlzQHJpbS5jb20+CisKKyAgICAgICAgYWxpZ25tZW50IGNyYXNoIGluIE1JTUVT
bmlmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBy
ZXZlbnQgQVNTRVJUIG9uIHVuYWxpZ25lZCBkYXRhLiBTcGVjaWFsLWNhc2UgaGFuZGxpbmcgb2Yg
dW5hbGlnbmVkIGRhdGEKKyAgICAgICAgdG8gbWFza2VkQ29tcGFyZVNsb3dDYXNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwOgorICAgICAgICAoc3RkKToK
KyAgICAgICAgKHN0ZDo6bWFza2VkQ29tcGFyZVNsb3dDYXNlKToKKyAgICAgICAgKHN0ZDo6bWFz
a2VkQ29tcGFyZSk6CisKIDIwMTItMDctMTAgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2Fu
YS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0dUS10gRml4IG1lbW9yeSBs
ZWFrcyBieSBhZG9wdGluZyBhbGxvY2F0aW9uIG9mIEdka1BpeGJ1ZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwCmluZGV4IDVlZmQxN2YxMzhj
YzVmZjQxNTZjOTFhMzMwYTQ2NWIyNjYwZjRmYmUuLmY2N2FkYjVhNTM5NDRlYjgxZjBjZTdhOTI5
MmQwNzU4NDBmNzBhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTUlNRVNuaWZmaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L01JTUVTbmlmZmluZy5jcHAKQEAgLTIzMywxMSArMjMzLDMzIEBAIHN0YXRpYyBpbmxpbmUgc2l6
ZV90IGRhdGFTaXplTmVlZGVkRm9ySW1hZ2VTbmlmZmluZygpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorI2lmIChDUFUoQVJNKSB8fCBDUFUoTUlQUykpICYmIENPTVBJTEVSKEdDQykKK3N0YXRp
YyBpbmxpbmUgYm9vbCBtYXNrZWRDb21wYXJlU2xvd0Nhc2UoY29uc3QgTWFnaWNOdW1iZXJzJiBp
bmZvLCBjb25zdCBjaGFyKiBkYXRhKQoreworICAgIGNvbnN0IGNoYXIqIHAgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihpbmZvLnBhdHRlcm4pOworICAgIGNvbnN0IGNoYXIqIG0gPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpbmZvLm1hc2spOworICAgIGNvbnN0IGNoYXIq
IGQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKTsKKworICAgIHNpemVfdCBj
b3VudCA9IGluZm8uc2l6ZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgeworICAgICAgICBpZiAoKCpkKysgJiAqbSsrKSAhPSAqcCsrKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBzdGF0aWMg
aW5saW5lIGJvb2wgbWFza2VkQ29tcGFyZShjb25zdCBNYWdpY051bWJlcnMmIGluZm8sIGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIHsKICAgICBpZiAoZGF0YVNpemUgPCBpbmZv
LnNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIChDUFUoQVJNKSB8fCBDUFUoTUlQ
UykpICYmIENPTVBJTEVSKEdDQykKKyAgICBpZiAoIWlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5
KGRhdGEpKQorICAgICAgICByZXR1cm4gbWFza2VkQ29tcGFyZVNsb3dDYXNlKGluZm8sIGRhdGEp
OworI2VuZGlmCisKICAgICBjb25zdCB1aW50MzJfdCogcGF0dGVybjMyID0gcmVpbnRlcnByZXRf
Y2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPihpbmZvLnBhdHRlcm4pOwogICAgIGNvbnN0IHVpbnQz
Ml90KiBtYXNrMzIgPSByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50MzJfdCo+KGluZm8u
bWFzayk7CiAgICAgY29uc3QgdWludDMyX3QqIGRhdGEzMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PGNvbnN0IHVpbnQzMl90Kj4oZGF0YSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151989</attachid>
            <date>2012-07-12 10:27:19 -0700</date>
            <delta_ts>2012-07-17 08:24:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89787-20120712132906.patch</filename>
            <type>text/plain</type>
            <size>2268</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDczYTE3Yjk3OWRjNzIy
ZDZmYjk2YzlhMzYwNWEzZWU0N2Y5YTNmYy4uYjMyZmJmYWM4NzU1NjRiMjYxYWU1MGRjODcwZjVm
YjE0ZDc5NTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTEyICBSb2Ig
QnVpcyAgPHJidWlzQHJpbS5jb20+CisKKyAgICAgICAgYWxpZ25tZW50IGNyYXNoIGluIE1JTUVT
bmlmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBy
ZXZlbnQgQVNTRVJUIG9uIHVuYWxpZ25lZCBkYXRhLiBTcGVjaWFsLWNhc2UgaGFuZGxpbmcgb2Yg
dW5hbGlnbmVkIGRhdGEKKyAgICAgICAgdG8gbWFza2VkQ29tcGFyZVNsb3dDYXNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwOgorICAgICAgICAoc3RkKToK
KyAgICAgICAgKHN0ZDo6bWFza2VkQ29tcGFyZVNsb3dDYXNlKToKKyAgICAgICAgKHN0ZDo6bWFz
a2VkQ29tcGFyZSk6CisKIDIwMTItMDctMTAgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2Fu
YS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0dUS10gRml4IG1lbW9yeSBs
ZWFrcyBieSBhZG9wdGluZyBhbGxvY2F0aW9uIG9mIEdka1BpeGJ1ZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwCmluZGV4IDVlZmQxN2YxMzhj
YzVmZjQxNTZjOTFhMzMwYTQ2NWIyNjYwZjRmYmUuLmI0MzViZGJjMDUzYjc5Nzg4N2EzOWM4YWRm
Y2FiNmI3MmY4ZGYwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTUlNRVNuaWZmaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L01JTUVTbmlmZmluZy5jcHAKQEAgLTIzMywxMSArMjMzLDMyIEBAIHN0YXRpYyBpbmxpbmUgc2l6
ZV90IGRhdGFTaXplTmVlZGVkRm9ySW1hZ2VTbmlmZmluZygpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorI2lmIChDUFUoQVJNKSB8fCBDUFUoTUlQUykpICYmIENPTVBJTEVSKEdDQykKK3N0YXRp
YyBpbmxpbmUgYm9vbCBtYXNrZWRDb21wYXJlU2xvd0Nhc2UoY29uc3QgTWFnaWNOdW1iZXJzJiBp
bmZvLCBjb25zdCBjaGFyKiBkYXRhKQoreworICAgIGNvbnN0IGNoYXIqIHBhdHRlcm4gPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpbmZvLnBhdHRlcm4pOworICAgIGNvbnN0IGNoYXIq
IG1hc2sgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpbmZvLm1hc2spOworCisgICAg
c2l6ZV90IGNvdW50ID0gaW5mby5zaXplOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIGlmICgoKmRhdGErKyAmICptYXNrKyspICE9ICpwYXR0ZXJu
KyspCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgYm9vbCBtYXNrZWRDb21wYXJlKGNvbnN0IE1hZ2lj
TnVtYmVycyYgaW5mbywgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQogewogICAg
IGlmIChkYXRhU2l6ZSA8IGluZm8uc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYg
KENQVShBUk0pIHx8IENQVShNSVBTKSkgJiYgQ09NUElMRVIoR0NDKQorICAgIGlmICghaXNQb2lu
dGVyVHlwZUFsaWdubWVudE9rYXkoZGF0YSkpCisgICAgICAgIHJldHVybiBtYXNrZWRDb21wYXJl
U2xvd0Nhc2UoaW5mbywgZGF0YSk7CisjZW5kaWYKKwogICAgIGNvbnN0IHVpbnQzMl90KiBwYXR0
ZXJuMzIgPSByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50MzJfdCo+KGluZm8ucGF0dGVy
bik7CiAgICAgY29uc3QgdWludDMyX3QqIG1hc2szMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNv
bnN0IHVpbnQzMl90Kj4oaW5mby5tYXNrKTsKICAgICBjb25zdCB1aW50MzJfdCogZGF0YTMyID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPihkYXRhKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152768</attachid>
            <date>2012-07-17 08:24:09 -0700</date>
            <delta_ts>2012-07-17 15:31:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89787-20120717112601.patch</filename>
            <type>text/plain</type>
            <size>3627</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2NmY5NzVkOWEyYzE1ODJkNmMzZDk4
Y2NkZWUwYmIzNzk2NWU3YTAuLjUzMzUzNzBiOTgwY2I4ODZjMjc3N2RmN2VjZjkyOGI0ZWQ4MmIy
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMTcgIFJvYiBCdWlzICA8cmJ1aXNAcmlt
LmNvbT4KKworICAgICAgICBhbGlnbm1lbnQgY3Jhc2ggaW4gTUlNRVNuaWZmZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5Nzg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGlzUG9pbnRlclR5
cGVBbGlnbm1lbnRPa2F5IHNvIGNhbGxpbmcgaXQgZG9lcyBub3QgcmVxdWlyZSBpZmRlZnMuCisK
KyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAgICAgIChpc1BvaW50ZXJUeXBlQWxp
Z25tZW50T2theSk6CisKIDIwMTItMDctMTAgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1
cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBSZS1lbmFibGUgX19kZWNsc3BlYyhkbHtpbXBv
cnQsZXhwb3J0fSkgZm9yIE1pbkdXIHdoZW4gdXNpbmcgRVhQT1JUX01BQ1JPUwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ3M2ExN2I5NzlkYzcyMmQ2ZmI5NmM5YTM2MDVhM2VlNDdmOWEzZmMuLjkzNjI1MDFiYWQ1
MWQ5Mjk0ZjI3MTdiN2EzZWZhNDQ4NDllZWYyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAxMi0wNy0xNyAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0uY29tPgorCisgICAgICAgIGFsaWdu
bWVudCBjcmFzaCBpbiBNSU1FU25pZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODk3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQcmV2ZW50IEFTU0VSVCBvbiB1bmFsaWduZWQgZGF0YS4gU3BlY2lh
bC1jYXNlIGhhbmRsaW5nIG9mIHVuYWxpZ25lZCBkYXRhCisgICAgICAgIHRvIG1hc2tlZENvbXBh
cmVTbG93Q2FzZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmNw
cDoKKyAgICAgICAgKHN0ZCk6CisgICAgICAgIChzdGQ6Om1hc2tlZENvbXBhcmVTbG93Q2FzZSk6
CisgICAgICAgIChzdGQ6Om1hc2tlZENvbXBhcmUpOgorCiAyMDEyLTA3LTEwICBTdWRhcnNhbmEg
TmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAg
IFtHVEtdIEZpeCBtZW1vcnkgbGVha3MgYnkgYWRvcHRpbmcgYWxsb2NhdGlvbiBvZiBHZGtQaXhi
dWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIGIvU291cmNlL1dU
Ri93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggODllNTQ5ODkzNjg4YmJmOGJlNzA3MmU0ZmNhMzQz
Mzg1OTgyZTkzYy4uNTliZDVmNmE5NTZlY2M2ODkxNGUwMGM0NjQyNWMxYmYwYmY1ZWRiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93
dGYvU3RkTGliRXh0cmFzLmgKQEAgLTgxLDEzICs4MSwxNyBAQAogICogLSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwNDUKICAqIC0gaHR0cDovL2djYy5nbnUub3Jn
L2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00Mzk3NgogICovCi0jaWYgKENQVShBUk0pIHx8IENQ
VShNSVBTKSkgJiYgQ09NUElMRVIoR0NDKQogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIGJvb2wg
aXNQb2ludGVyVHlwZUFsaWdubWVudE9rYXkoVHlwZSogcHRyKQogeworI2lmIChDUFUoQVJNKSB8
fCBDUFUoTUlQUykpICYmIENPTVBJTEVSKEdDQykKICAgICByZXR1cm4gIShyZWludGVycHJldF9j
YXN0PGludHB0cl90PihwdHIpICUgX19hbGlnbm9mX18oVHlwZSkpOworI2Vsc2UKKyAgICByZXR1
cm4gdHJ1ZTsKKyNlbmRpZgogfQogCisjaWYgKENQVShBUk0pIHx8IENQVShNSVBTKSkgJiYgQ09N
UElMRVIoR0NDKQogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZVB0cj4KIFR5cGVQdHIgcmVpbnRlcnBy
ZXRfY2FzdF9wdHIodm9pZCogcHRyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9NSU1FU25pZmZpbmcuY3BwCmluZGV4IDVlZmQxN2YxMzhjYzVmZjQxNTZjOTFhMzMw
YTQ2NWIyNjYwZjRmYmUuLmZhYTk3ODdjNzRlNDg4YmNjODBlMDBhNWMzNGE4MDVlMTM5NzRmNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5j
cHAKQEAgLTIzMywxMSArMjMzLDI4IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGRhdGFTaXplTmVl
ZGVkRm9ySW1hZ2VTbmlmZmluZygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGlu
bGluZSBib29sIG1hc2tlZENvbXBhcmVTbG93Q2FzZShjb25zdCBNYWdpY051bWJlcnMmIGluZm8s
IGNvbnN0IGNoYXIqIGRhdGEpCit7CisgICAgY29uc3QgY2hhciogcGF0dGVybiA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGluZm8ucGF0dGVybik7CisgICAgY29uc3QgY2hhciogbWFz
ayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGluZm8ubWFzayk7CisKKyAgICBzaXpl
X3QgY291bnQgPSBpbmZvLnNpemU7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKKyAgICAgICAgaWYgKCgqZGF0YSsrICYgKm1hc2srKykgIT0gKnBhdHRlcm4rKykK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHN0YXRpYyBpbmxpbmUgYm9vbCBtYXNrZWRDb21wYXJlKGNvbnN0IE1hZ2ljTnVtYmVycyYgaW5m
bywgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQogewogICAgIGlmIChkYXRhU2l6
ZSA8IGluZm8uc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFpc1BvaW50
ZXJUeXBlQWxpZ25tZW50T2theShkYXRhKSkKKyAgICAgICAgcmV0dXJuIG1hc2tlZENvbXBhcmVT
bG93Q2FzZShpbmZvLCBkYXRhKTsKKwogICAgIGNvbnN0IHVpbnQzMl90KiBwYXR0ZXJuMzIgPSBy
ZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50MzJfdCo+KGluZm8ucGF0dGVybik7CiAgICAg
Y29uc3QgdWludDMyX3QqIG1hc2szMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IHVpbnQz
Ml90Kj4oaW5mby5tYXNrKTsKICAgICBjb25zdCB1aW50MzJfdCogZGF0YTMyID0gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPihkYXRhKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152850</attachid>
            <date>2012-07-17 15:31:45 -0700</date>
            <delta_ts>2012-07-18 08:07:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89787-20120717183337.patch</filename>
            <type>text/plain</type>
            <size>3623</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2NmY5NzVkOWEyYzE1ODJkNmMzZDk4
Y2NkZWUwYmIzNzk2NWU3YTAuLjM4Y2RkYTk1OWQwZDg1OGNmN2Q4NTlmMDA3YmQyYWM3MDc1ZWIy
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDctMTcgIFJvYiBCdWlzICA8cmJ1aXNAcmlt
LmNvbT4KKworICAgICAgICBBbGlnbm1lbnQgY3Jhc2ggaW4gTUlNRVNuaWZmZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5Nzg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUFIgMTY5MDY0CisKKyAgICAg
ICAgQ2hhbmdlIGlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5IHNvIGNhbGxpbmcgaXQgZG9lcyBu
b3QgcmVxdWlyZSBpZmRlZnMuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAg
ICAgIChpc1BvaW50ZXJUeXBlQWxpZ25tZW50T2theSk6CisKIDIwMTItMDctMTAgIEpvY2VseW4g
VHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBSZS1lbmFi
bGUgX19kZWNsc3BlYyhkbHtpbXBvcnQsZXhwb3J0fSkgZm9yIE1pbkdXIHdoZW4gdXNpbmcgRVhQ
T1JUX01BQ1JPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3M2ExN2I5NzlkYzcyMmQ2ZmI5NmM5YTM2MDVhM2Vl
NDdmOWEzZmMuLjNkN2ZjYTBiOWNiYmQ4MTJiZGI2NTg0NmQ3Yzc5MmMzM2Q3OTJkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNy0xNyAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0u
Y29tPgorCisgICAgICAgIEFsaWdubWVudCBjcmFzaCBpbiBNSU1FU25pZmZlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3ODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQUiAxNjkwNjQKKworICAgICAg
ICBQcmV2ZW50IEFTU0VSVCBvbiB1bmFsaWduZWQgZGF0YS4gU3BlY2lhbC1jYXNlIGhhbmRsaW5n
IG9mIHVuYWxpZ25lZCBkYXRhCisgICAgICAgIHRvIG1hc2tlZENvbXBhcmVTbG93Q2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmNwcDoKKyAgICAgICAgKHN0
ZCk6CisgICAgICAgIChzdGQ6Om1hc2tlZENvbXBhcmVTbG93Q2FzZSk6CisgICAgICAgIChzdGQ6
Om1hc2tlZENvbXBhcmUpOgorCiAyMDEyLTA3LTEwICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRh
cnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBtZW1v
cnkgbGVha3MgYnkgYWRvcHRpbmcgYWxsb2NhdGlvbiBvZiBHZGtQaXhidWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0
cmFzLmgKaW5kZXggODllNTQ5ODkzNjg4YmJmOGJlNzA3MmU0ZmNhMzQzMzg1OTgyZTkzYy4uZjlm
ZWMxNmI4M2YzZTFlZjk1OTZjYTBhZDFhZjU0OWYyZTc2OGU5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvU3RkTGliRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFz
LmgKQEAgLTg3LDcgKzg3LDE1IEBAIGJvb2wgaXNQb2ludGVyVHlwZUFsaWdubWVudE9rYXkoVHlw
ZSogcHRyKQogewogICAgIHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHB0cikg
JSBfX2FsaWdub2ZfXyhUeXBlKSk7CiB9CisjZWxzZQordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4K
K2Jvb2wgaXNQb2ludGVyVHlwZUFsaWdubWVudE9rYXkoVHlwZSopCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisjZW5kaWYKIAorI2lmIChDUFUoQVJNKSB8fCBDUFUoTUlQUykpICYmIENPTVBJTEVS
KEdDQykKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGVQdHI+CiBUeXBlUHRyIHJlaW50ZXJwcmV0X2Nh
c3RfcHRyKHZvaWQqIHB0cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTUlNRVNuaWZmaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTUlNRVNuaWZmaW5nLmNwcAppbmRleCA1ZWZkMTdmMTM4Y2M1ZmY0MTU2YzkxYTMzMGE0NjVi
MjY2MGY0ZmJlLi5lNTI2YTk1YzJjZWU4YjZlNWYyMDRiOTgyM2NkMDQzYWNjZjgzMTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuY3BwCkBA
IC0yMzMsMTQgKzIzMywzMiBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBkYXRhU2l6ZU5lZWRlZEZv
ckltYWdlU25pZmZpbmcoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBtYXNrZWRDb21wYXJlU2xvd0Nhc2UoY29uc3QgTWFnaWNOdW1iZXJzJiBpbmZvLCBjb25z
dCBjaGFyKiBkYXRhKQoreworICAgIGNvbnN0IGNoYXIqIHBhdHRlcm4gPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihpbmZvLnBhdHRlcm4pOworICAgIGNvbnN0IGNoYXIqIG1hc2sgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpbmZvLm1hc2spOworCisgICAgc2l6ZV90IGNv
dW50ID0gaW5mby5zaXplOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7CisgICAgICAgIGlmICgoKmRhdGErKyAmICptYXNrKyspICE9ICpwYXR0ZXJuKyspCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0
aWMgaW5saW5lIGJvb2wgbWFza2VkQ29tcGFyZShjb25zdCBNYWdpY051bWJlcnMmIGluZm8sIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIHsKICAgICBpZiAoZGF0YVNpemUgPCBp
bmZvLnNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNvbnN0IHVpbnQzMl90KiBk
YXRhMzIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YSk7CisKKyAgICBp
ZiAoIWlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5KGRhdGEzMikpCisgICAgICAgIHJldHVybiBt
YXNrZWRDb21wYXJlU2xvd0Nhc2UoaW5mbywgZGF0YSk7CisKICAgICBjb25zdCB1aW50MzJfdCog
cGF0dGVybjMyID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPihpbmZvLnBh
dHRlcm4pOwogICAgIGNvbnN0IHVpbnQzMl90KiBtYXNrMzIgPSByZWludGVycHJldF9jYXN0X3B0
cjxjb25zdCB1aW50MzJfdCo+KGluZm8ubWFzayk7Ci0gICAgY29uc3QgdWludDMyX3QqIGRhdGEz
MiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IHVpbnQzMl90Kj4oZGF0YSk7CiAKICAgICBz
aXplX3QgY291bnQgPSBpbmZvLnNpemUgPj4gMjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153015</attachid>
            <date>2012-07-18 08:07:37 -0700</date>
            <delta_ts>2012-07-18 10:18:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89787-20120718110930.patch</filename>
            <type>text/plain</type>
            <size>3530</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2NmY5NzVkOWEyYzE1ODJkNmMzZDk4
Y2NkZWUwYmIzNzk2NWU3YTAuLjM4Y2RkYTk1OWQwZDg1OGNmN2Q4NTlmMDA3YmQyYWM3MDc1ZWIy
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDctMTcgIFJvYiBCdWlzICA8cmJ1aXNAcmlt
LmNvbT4KKworICAgICAgICBBbGlnbm1lbnQgY3Jhc2ggaW4gTUlNRVNuaWZmZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5Nzg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUFIgMTY5MDY0CisKKyAgICAg
ICAgQ2hhbmdlIGlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5IHNvIGNhbGxpbmcgaXQgZG9lcyBu
b3QgcmVxdWlyZSBpZmRlZnMuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAg
ICAgIChpc1BvaW50ZXJUeXBlQWxpZ25tZW50T2theSk6CisKIDIwMTItMDctMTAgIEpvY2VseW4g
VHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBSZS1lbmFi
bGUgX19kZWNsc3BlYyhkbHtpbXBvcnQsZXhwb3J0fSkgZm9yIE1pbkdXIHdoZW4gdXNpbmcgRVhQ
T1JUX01BQ1JPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3M2ExN2I5NzlkYzcyMmQ2ZmI5NmM5YTM2MDVhM2Vl
NDdmOWEzZmMuLjNkN2ZjYTBiOWNiYmQ4MTJiZGI2NTg0NmQ3Yzc5MmMzM2Q3OTJkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNy0xNyAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0u
Y29tPgorCisgICAgICAgIEFsaWdubWVudCBjcmFzaCBpbiBNSU1FU25pZmZlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3ODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQUiAxNjkwNjQKKworICAgICAg
ICBQcmV2ZW50IEFTU0VSVCBvbiB1bmFsaWduZWQgZGF0YS4gU3BlY2lhbC1jYXNlIGhhbmRsaW5n
IG9mIHVuYWxpZ25lZCBkYXRhCisgICAgICAgIHRvIG1hc2tlZENvbXBhcmVTbG93Q2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmNwcDoKKyAgICAgICAgKHN0
ZCk6CisgICAgICAgIChzdGQ6Om1hc2tlZENvbXBhcmVTbG93Q2FzZSk6CisgICAgICAgIChzdGQ6
Om1hc2tlZENvbXBhcmUpOgorCiAyMDEyLTA3LTEwICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRh
cnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBtZW1v
cnkgbGVha3MgYnkgYWRvcHRpbmcgYWxsb2NhdGlvbiBvZiBHZGtQaXhidWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0
cmFzLmgKaW5kZXggODllNTQ5ODkzNjg4YmJmOGJlNzA3MmU0ZmNhMzQzMzg1OTgyZTkzYy4uZTY2
ZGYyYzMxMGNmMDhmNGJlODVmNmFlOWQ1MTFlMGQ3ZGNkMjBkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvU3RkTGliRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFz
LmgKQEAgLTEwMiw2ICsxMDIsMTEgQEAgVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25z
dCB2b2lkKiBwdHIpCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VHlwZVB0cj4ocHRyKTsK
IH0KICNlbHNlCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorYm9vbCBpc1BvaW50ZXJUeXBlQWxp
Z25tZW50T2theShUeXBlKikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KICNkZWZpbmUgcmVpbnRl
cnByZXRfY2FzdF9wdHIgcmVpbnRlcnByZXRfY2FzdAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5nLmNwcAppbmRleCA1ZWZkMTdmMTM4
Y2M1ZmY0MTU2YzkxYTMzMGE0NjViMjY2MGY0ZmJlLi5lNTI2YTk1YzJjZWU4YjZlNWYyMDRiOTgy
M2NkMDQzYWNjZjgzMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL01JTUVTbmlmZmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FU25pZmZpbmcuY3BwCkBAIC0yMzMsMTQgKzIzMywzMiBAQCBzdGF0aWMgaW5saW5lIHNp
emVfdCBkYXRhU2l6ZU5lZWRlZEZvckltYWdlU25pZmZpbmcoKQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBtYXNrZWRDb21wYXJlU2xvd0Nhc2UoY29uc3QgTWFn
aWNOdW1iZXJzJiBpbmZvLCBjb25zdCBjaGFyKiBkYXRhKQoreworICAgIGNvbnN0IGNoYXIqIHBh
dHRlcm4gPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpbmZvLnBhdHRlcm4pOworICAg
IGNvbnN0IGNoYXIqIG1hc2sgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpbmZvLm1h
c2spOworCisgICAgc2l6ZV90IGNvdW50ID0gaW5mby5zaXplOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIGlmICgoKmRhdGErKyAmICptYXNrKysp
ICE9ICpwYXR0ZXJuKyspCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgbWFza2VkQ29tcGFyZShjb25zdCBN
YWdpY051bWJlcnMmIGluZm8sIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIHsK
ICAgICBpZiAoZGF0YVNpemUgPCBpbmZvLnNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgIGNvbnN0IHVpbnQzMl90KiBkYXRhMzIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz
Ml90Kj4oZGF0YSk7CisKKyAgICBpZiAoIWlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5KGRhdGEz
MikpCisgICAgICAgIHJldHVybiBtYXNrZWRDb21wYXJlU2xvd0Nhc2UoaW5mbywgZGF0YSk7CisK
ICAgICBjb25zdCB1aW50MzJfdCogcGF0dGVybjMyID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29u
c3QgdWludDMyX3QqPihpbmZvLnBhdHRlcm4pOwogICAgIGNvbnN0IHVpbnQzMl90KiBtYXNrMzIg
PSByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50MzJfdCo+KGluZm8ubWFzayk7Ci0gICAg
Y29uc3QgdWludDMyX3QqIGRhdGEzMiA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IHVpbnQz
Ml90Kj4oZGF0YSk7CiAKICAgICBzaXplX3QgY291bnQgPSBpbmZvLnNpemUgPj4gMjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153035</attachid>
            <date>2012-07-18 10:18:10 -0700</date>
            <delta_ts>2012-07-18 10:19:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89787-20120718132003.patch</filename>
            <type>text/plain</type>
            <size>3514</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2NmY5NzVkOWEyYzE1ODJkNmMzZDk4
Y2NkZWUwYmIzNzk2NWU3YTAuLjM4Y2RkYTk1OWQwZDg1OGNmN2Q4NTlmMDA3YmQyYWM3MDc1ZWIy
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDctMTcgIFJvYiBCdWlzICA8cmJ1aXNAcmlt
LmNvbT4KKworICAgICAgICBBbGlnbm1lbnQgY3Jhc2ggaW4gTUlNRVNuaWZmZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5Nzg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUFIgMTY5MDY0CisKKyAgICAg
ICAgQ2hhbmdlIGlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5IHNvIGNhbGxpbmcgaXQgZG9lcyBu
b3QgcmVxdWlyZSBpZmRlZnMuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAg
ICAgIChpc1BvaW50ZXJUeXBlQWxpZ25tZW50T2theSk6CisKIDIwMTItMDctMTAgIEpvY2VseW4g
VHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBSZS1lbmFi
bGUgX19kZWNsc3BlYyhkbHtpbXBvcnQsZXhwb3J0fSkgZm9yIE1pbkdXIHdoZW4gdXNpbmcgRVhQ
T1JUX01BQ1JPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3M2ExN2I5NzlkYzcyMmQ2ZmI5NmM5YTM2MDVhM2Vl
NDdmOWEzZmMuLjJjNjcwMTBjMDc1YjIwZTIxNTc0MzI3ODU5YThmN2E1MWY4N2Q2N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNy0xNyAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0u
Y29tPgorCisgICAgICAgIEFsaWdubWVudCBjcmFzaCBpbiBNSU1FU25pZmZlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3ODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQUiAxNjkwNjQKKworICAgICAg
ICBQcmV2ZW50IEFTU0VSVCBvbiB1bmFsaWduZWQgZGF0YS4gU3BlY2lhbC1jYXNlIGhhbmRsaW5n
IG9mIHVuYWxpZ25lZCBkYXRhCisgICAgICAgIHRvIG1hc2tlZENvbXBhcmVTbG93Q2FzZS4KKwor
ICAgICAgICBObyB0ZXN0LCB0b28gaGFyZCB0byByZXByb2R1Y2UuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5jcHA6CisgICAgICAgIChzdGQpOgorICAgICAgICAo
c3RkOjptYXNrZWRDb21wYXJlU2xvd0Nhc2UpOgorICAgICAgICAoc3RkOjptYXNrZWRDb21wYXJl
KToKKwogMjAxMi0wNy0xMCAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5p
QGxpbnV4LmludGVsLmNvbT4KIAogICAgICAgICBbR1RLXSBGaXggbWVtb3J5IGxlYWtzIGJ5IGFk
b3B0aW5nIGFsbG9jYXRpb24gb2YgR2RrUGl4YnVmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4IDg5
ZTU0OTg5MzY4OGJiZjhiZTcwNzJlNGZjYTM0MzM4NTk4MmU5M2MuLmU2NmRmMmMzMTBjZjA4ZjRi
ZTg1ZjZhZTlkNTExZTBkN2RjZDIwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC0xMDIsNiAr
MTAyLDExIEBAIFR5cGVQdHIgcmVpbnRlcnByZXRfY2FzdF9wdHIoY29uc3Qgdm9pZCogcHRyKQog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFR5cGVQdHI+KHB0cik7CiB9CiAjZWxzZQordGVt
cGxhdGU8dHlwZW5hbWUgVHlwZT4KK2Jvb2wgaXNQb2ludGVyVHlwZUFsaWdubWVudE9rYXkoVHlw
ZSopCit7CisgICAgcmV0dXJuIHRydWU7Cit9CiAjZGVmaW5lIHJlaW50ZXJwcmV0X2Nhc3RfcHRy
IHJlaW50ZXJwcmV0X2Nhc3QKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL01JTUVTbmlmZmluZy5jcHAKaW5kZXggNWVmZDE3ZjEzOGNjNWZmNDE1NmM5MWEz
MzBhNDY1YjI2NjBmNGZiZS4uYzAxOTcwMmZjZWFmMjFkY2NhOTI1N2IwYjA4M2M4MzFmMmVmZjAz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmaW5n
LmNwcApAQCAtMjMzLDExICsyMzMsMjggQEAgc3RhdGljIGlubGluZSBzaXplX3QgZGF0YVNpemVO
ZWVkZWRGb3JJbWFnZVNuaWZmaW5nKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMg
aW5saW5lIGJvb2wgbWFza2VkQ29tcGFyZVNsb3dDYXNlKGNvbnN0IE1hZ2ljTnVtYmVycyYgaW5m
bywgY29uc3QgY2hhciogZGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiBwYXR0ZXJuID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaW5mby5wYXR0ZXJuKTsKKyAgICBjb25zdCBjaGFyKiBt
YXNrID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaW5mby5tYXNrKTsKKworICAgIHNp
emVfdCBjb3VudCA9IGluZm8uc2l6ZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgeworICAgICAgICBpZiAoKCpkYXRhKysgJiAqbWFzaysrKSAhPSAqcGF0dGVybisr
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwogc3RhdGljIGlubGluZSBib29sIG1hc2tlZENvbXBhcmUoY29uc3QgTWFnaWNOdW1iZXJzJiBp
bmZvLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCiB7CiAgICAgaWYgKGRhdGFT
aXplIDwgaW5mby5zaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWlzUG9p
bnRlclR5cGVBbGlnbm1lbnRPa2F5KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQzMl90Kj4oc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGEpKSkpCisgICAgICAgIHJldHVybiBtYXNrZWRDb21wYXJl
U2xvd0Nhc2UoaW5mbywgZGF0YSk7CisKICAgICBjb25zdCB1aW50MzJfdCogcGF0dGVybjMyID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgdWludDMyX3QqPihpbmZvLnBhdHRlcm4pOwogICAg
IGNvbnN0IHVpbnQzMl90KiBtYXNrMzIgPSByZWludGVycHJldF9jYXN0X3B0cjxjb25zdCB1aW50
MzJfdCo+KGluZm8ubWFzayk7CiAgICAgY29uc3QgdWludDMyX3QqIGRhdGEzMiA9IHJlaW50ZXJw
cmV0X2Nhc3RfcHRyPGNvbnN0IHVpbnQzMl90Kj4oZGF0YSk7Cg==
</data>
<flag name="review"
          id="161879"
          type_id="1"
          status="+"
          setter="yong.li.webkit"
    />
          </attachment>
      

    </bug>

</bugzilla>