<?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>142792</bug_id>
          
          <creation_ts>2015-03-17 14:53:56 -0700</creation_ts>
          <short_desc>Objects with numeric properties intermittently get a phantom &apos;length&apos; property</short_desc>
          <delta_ts>2015-04-08 07:15:33 -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>iPhone / iPad</rep_platform>
          <op_sys>iOS 8.1</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108645</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>osolo</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>caitp</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jstephenson-wkbgz</cc>
    
    <cc>mathias</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>osolo</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1077976</commentid>
    <comment_count>0</comment_count>
    <who name="">osolo</who>
    <bug_when>2015-03-17 14:53:56 -0700</bug_when>
    <thetext>There is a timing bug in iOS8 that causes mobile Safari to incorrectly report a &apos;length&apos; on objects that don&apos;t have one.

To the best of my knowledge, this happens on iOS8+, possibly only on 64-bit systems. The bug is triggered for objects that have only numeric properties. For example:

  foo = { 1: &apos;a&apos;, 2: &apos;b&apos;, 3: &apos;c&apos; } 

In this case, if you query foo.length then mobile Safari will sometimes return 4 (the highest property + 1).

This causes strange failures in functions like jQuery&apos;s $.each() or Underscore&apos;s _.each() since the appearance of the &apos;.length&apos; property makes them believe the object is an array.

When the bug manifests itself, the following be true:
  a = foo.length;
  b = typeof a;
  c = foo.hasOwnProperty(&apos;length&apos;)
--&gt;
  a == 4         // should have been undefined
  b == &apos;number&apos;  // should have been &apos;undefined&apos;
  c == false     // correct

Both jQuery and Underscore to use the &apos;typeof&apos; test on the length property, and I have advised them to add an &apos;hasOwnProperty&apos; check as well.

You can see more background and some repro steps at the following Stack Overflow discussion: http://stackoverflow.com/questions/28155841/misterious-failure-of-jquery-each-and-underscore-each-on-ios

The Underscore team have apparently managed to create an automated test for this: https://github.com/jashkenas/underscore/issues/2081

The jQuery issue is here: https://github.com/jquery/jquery/issues/2145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080253</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-26 04:12:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/20307461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080279</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-26 08:04:12 -0700</bug_when>
    <thetext>ossy, now I think it may be related to aarch64 failures with &quot;length&quot; property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080439</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-03-26 15:49:40 -0700</bug_when>
    <thetext>I can reproduce on iOS ARM64 in ToT (r182023) WebKit.  It doesn&apos;t happen in on ARM32 or Mac.  Curious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080470</commentid>
    <comment_count>4</comment_count>
      <attachid>249534</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-03-26 16:16:48 -0700</bug_when>
    <thetext>Created attachment 249534
Converted supplied test into a regression test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080507</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-03-26 17:18:06 -0700</bug_when>
    <thetext>Looks like we have a bad instruction optimization when comparing a literal with a single bit to a register in MacroAssemblerARM64::branchTest32().

Patch in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080589</commentid>
    <comment_count>6</comment_count>
      <attachid>249564</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-03-27 07:06:00 -0700</bug_when>
    <thetext>Created attachment 249564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080592</commentid>
    <comment_count>7</comment_count>
      <attachid>249564</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-27 07:18:05 -0700</bug_when>
    <thetext>Comment on attachment 249564
Patch

nice catch, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080593</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-03-27 07:29:15 -0700</bug_when>
    <thetext>Committed r182058: &lt;http://trac.webkit.org/changeset/182058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080638</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-27 10:26:54 -0700</bug_when>
    <thetext>This might be my favorite bug/fix ever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080664</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-27 11:03:12 -0700</bug_when>
    <thetext>*** Bug 142575 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080800</commentid>
    <comment_count>11</comment_count>
    <who name="Michał Gołębiowski-Owczarek">m.goleb+bugzilla</who>
    <bug_when>2015-03-27 16:25:54 -0700</bug_when>
    <thetext>It would be great to have it backported to iOS 8. If that&apos;s not planned (or if it&apos;s planned but we&apos;re be notified about that) we&apos;ll have to publish another patch release of jQuery dedicated to Safari; the first one was:
http://blog.jquery.com/2014/12/18/jquery-1-11-2-and-2-1-3-released-safari-fail-safe-edition/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249534</attachid>
            <date>2015-03-26 16:16:48 -0700</date>
            <delta_ts>2015-03-27 07:06:00 -0700</delta_ts>
            <desc>Converted supplied test into a regression test</desc>
            <filename>142792-regress-tests.patch</filename>
            <type>text/plain</type>
            <size>2595</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQyNzkyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0Mjc5Mi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0Mjc5Mi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVmVyaWZ5IHRoYXQgb2JqZWN0cyB3aXRoIG51
bWVyaWMgbmFtZWQgcHJvcGVydGllcyBkb24ndCBzZXQgbGVuZ3RoIGxpa2UgYW4gYXJyYXkuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvcnJlY3QgbnVtYmVyIG9mIGl0
ZXJhdGVkIGtleXM6IDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0Mjc5Mi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQyNzkyLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0Mjc5Mi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9yZWdyZXNzLTE0Mjc5Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDI3OTIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQyNzkyLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQyNzkyLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBv
YmplY3RzIHdpdGggbnVtZXJpYyBuYW1lZCBwcm9wZXJ0aWVzIGRvbid0IHNldCBsZW5ndGggbGlr
ZSBhbiBhcnJheS4iKTsKKwordmFyIG51bU9mSXRlcmF0aW9ucyA9IDEwMDAwOwordmFyIGNvdW50
ZXIgPSAwOwordmFyIG9iaiA9IHsKKyAgICAxOiAnZm9vJywKKyAgICA4OiAnYmFyJywKKyAgICA1
MDogJ2JheicKK307CisKK3ZhciBleHBlY3RlZENvdW50ZXIgPSBPYmplY3Qua2V5cyhvYmopLmxl
bmd0aDsKKworZnVuY3Rpb24gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgeworICAgIHZhciBsZW5n
dGggPSBjb2xsZWN0aW9uICYmIGNvbGxlY3Rpb24ubGVuZ3RoOworCisgICAgcmV0dXJuIHR5cGVv
ZiBsZW5ndGggPT0gJ251bWJlcic7Cit9CisKK2Z1bmN0aW9uIGZpbHRlcihvYmosIHByZWRpY2F0
ZSwgY29udGV4dCkgeworICAgIHZhciByZXN1bHRzID0gW107CisgICAgdmFyIGksIGxlbmd0aDsK
KworICAgIGlmIChpc0FycmF5TGlrZShvYmopKSB7CisgICAgICAgIGZvciAoaSA9IDAsIGxlbmd0
aCA9IG9iai5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFyIHZhbHVl
ID0gb2JqW2ldOworICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaSwgb2JqKSkKKyAg
ICAgICAgICAgICAgICByZXN1bHRzLnB1c2godmFsdWUpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaSA9IDA7CisgICAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKKyAgICAg
ICAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldOworICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSh2
YWx1ZSwgaSwgb2JqKSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2godmFsdWUpOworICAg
ICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdHM7Cit9
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbnVtT2ZJdGVyYXRpb25zOyBpKyspIHsKKyAgICBmaWx0
ZXIoW10sIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSk7Cit9CisKK2ZpbHRlcihvYmosIGZ1
bmN0aW9uKCkgeyAKKyAgICBjb3VudGVyKys7CisgICAgcmV0dXJuIHRydWU7Cit9KTsKKworaWYg
KGNvdW50ZXIgIT09IGV4cGVjdGVkQ291bnRlcikKKyAgICB0ZXN0RmFpbGVkKCJJbmNvcnJlY3Qg
bnVtYmVyIG9mIGl0ZXJhdGVkIGtleXM6ICIgKyBjb3VudGVyICsgIiwgZXhwZWN0ZWQ6ICIgKyBl
eHBlY3RlZENvdW50ZXIpOworZWxzZQorICAgIHRlc3RQYXNzZWQoIkNvcnJlY3QgbnVtYmVyIG9m
IGl0ZXJhdGVkIGtleXM6ICIgKyBjb3VudGVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249564</attachid>
            <date>2015-03-27 07:06:00 -0700</date>
            <delta_ts>2015-03-27 07:18:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>142792.patch</filename>
            <type>text/plain</type>
            <size>5277</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMDU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE1LTAzLTI3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIE9iamVjdHMgd2l0aCBudW1lcmljIHByb3BlcnRpZXMgaW50ZXJtaXR0ZW50bHkgZ2V0IGEg
cGhhbnRvbSAnbGVuZ3RoJyBwcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4ZWQgYSA+IChncmVhdGVyIHRoYW4pIHRoYXQgc2hvdWxkIGJl
IGEgPj4gKHJpZ2h0IHNoaWZ0KSBpbiB0aGUgY29kZSB0aGF0IGRpc2Fzc2VtYmxlcworICAgICAg
ICB0ZXN0IGFuZCBicmFuY2ggaW5zdHJ1Y3Rpb25zLiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGZv
ciBsaW5raW5nIHRiei90Ym56IGJyYW5jaGVzIGJldHdlZW4KKyAgICAgICAgdHdvIHNlcGVyYXRl
bHkgSklUJ2VkIHNlY3Rpb25zIG9mIGNvZGUuICBTb21ldGltZSB3ZSdkIGNyZWF0ZSBhIGJvZ3Vz
IHRieiBpbnN0cnVjdGlvbiBpbgorICAgICAgICB0aGUgZmFpbHVyZSBjYXNlIGNoZWNrcyBpbiB0
aGUgR2V0QnlJZCBhcnJheSBsZW5ndGggc3R1YiBjcmVhdGVkIGZvciAib2JqLmxlbmd0aCIgYWNj
ZXNzLgorICAgICAgICBJZiB0aGUgZmFpbHVyZSBjYXNlIGNvZGUgYWRkcmVzcyB3YXMgYXQgYSBu
ZWdhdGl2ZSBvZmZzZXQgZnJvbSB0aGUgc3R1Yiwgd2UnZCBsb29rIGZvciBiaXQgMQorICAgICAg
ICBiZWluZyBzZXQgd2hlbiB3ZSBzaG91bGQgaGF2ZSBiZWVuIGxvb2tpbmcgZm9yIGJpdCAwLgor
CisgICAgICAgICogYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFS
TTY0QXNzZW1ibGVyOjpkaXNhc3NlbWJsZVRlc3RBbmRCcmFuY2hJbW1lZGlhdGUpOgorCiAyMDE1
LTAzLTI3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAg
IEluc2VydCBleGNlcHRpb24gY2hlY2sgYXJvdW5kIHRvUHJvcGVydHlLZXkgY2FsbApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAko
cmV2aXNpb24gMTgyMDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02
NEFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjM3LDcgKzMyMzcsNyBAQCBwcml2YXRl
OgogICAgICAgICBpbnQgaW5zbiA9ICpzdGF0aWNfY2FzdDxpbnQqPihhZGRyZXNzKTsKICAgICAg
ICAgb3AgPSAoaW5zbiA+PiAyNCkgJiAweDE7CiAgICAgICAgIGltbTE0ID0gKGluc24gPDwgMTMp
ID4+IDE4OwotICAgICAgICBiaXROdW1iZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKCgoaW5z
biA+PiAyNikgJiAweDIwKSkgfCAoKGluc24gPiAxOSkgJiAweDFmKSk7CisgICAgICAgIGJpdE51
bWJlciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigoKChpbnNuID4+IDI2KSAmIDB4MjApKSB8ICgo
aW5zbiA+PiAxOSkgJiAweDFmKSk7CiAgICAgICAgIHJ0ID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJ
RD4oaW5zbiAmIDB4MWYpOwogICAgICAgICByZXR1cm4gKGluc24gJiAweDdlMDAwMDAwKSA9PSAw
eDM2MDAwMDAwOwogICAgICAgICAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjA1NykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTAz
LTI3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIE9iamVj
dHMgd2l0aCBudW1lcmljIHByb3BlcnRpZXMgaW50ZXJtaXR0ZW50bHkgZ2V0IGEgcGhhbnRvbSAn
bGVuZ3RoJyBwcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQyNzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTmV3IHJlZ3Jlc3Npb24gdGVzdC4KKworICAgICAgICAqIGpzL3JlZ3Jlc3MtMTQy
NzkyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy0xNDI3OTIuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQyNzkyLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGlzQXJyYXlMaWtlKToKKyAgICAgICAgKGZpbHRlcik6CisKIDIwMTUt
MDMtMjYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmxpbmUg
Y29udGludWF0aW9uIGNvZGUgc2hvdWxkIG5vdCB0YWtlIGFub255bW91cyBjb250YWluaW5nIHdy
YXBwZXIgZ3JhbnRlZC4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQyNzkyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0Mjc5Mi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0Mjc5Mi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVmVyaWZ5IHRoYXQg
b2JqZWN0cyB3aXRoIG51bWVyaWMgbmFtZWQgcHJvcGVydGllcyBkb24ndCBzZXQgbGVuZ3RoIGxp
a2UgYW4gYXJyYXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvcnJl
Y3QgbnVtYmVyIG9mIGl0ZXJhdGVkIGtleXM6IDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0
Mjc5Mi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQyNzkyLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0Mjc5Mi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9yZWdyZXNzLTE0Mjc5Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDI3OTIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQy
NzkyLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jl
c3MtMTQyNzkyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKK2Rlc2NyaXB0aW9u
KCJWZXJpZnkgdGhhdCBvYmplY3RzIHdpdGggbnVtZXJpYyBuYW1lZCBwcm9wZXJ0aWVzIGRvbid0
IHNldCBsZW5ndGggbGlrZSBhbiBhcnJheS4iKTsKKwordmFyIG51bU9mSXRlcmF0aW9ucyA9IDEw
MDAwOwordmFyIGNvdW50ID0gMDsKK3ZhciBvYmogPSB7CisgICAgMTogJ2ZvbycsCisgICAgODog
J2JhcicsCisgICAgNTA6ICdiYXonCit9OworCit2YXIgZXhwZWN0ZWRDb3VudCA9IE9iamVjdC5r
ZXlzKG9iaikubGVuZ3RoOworCitmdW5jdGlvbiBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSB7Cisg
ICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24gJiYgY29sbGVjdGlvbi5sZW5ndGg7CisKKyAgICBy
ZXR1cm4gdHlwZW9mIGxlbmd0aCA9PSAnbnVtYmVyJzsKK30KKworZnVuY3Rpb24gZmlsdGVyKG9i
aiwgY2FsbGJhY2ssIGNvbnRleHQpIHsKKyAgICB2YXIgcmVzdWx0cyA9IFtdOworICAgIHZhciBp
LCBsZW5ndGg7CisKKyAgICBpZiAoaXNBcnJheUxpa2Uob2JqKSkgeworICAgICAgICBmb3IgKGkg
PSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAg
IHZhciB2YWx1ZSA9IG9ialtpXTsKKyAgICAgICAgICAgIGlmIChjYWxsYmFjayh2YWx1ZSkpCisg
ICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKKyAgICAgICAgICAgIHZhciB2YWx1
ZSA9IG9ialtrZXldOworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKHZhbHVlKSkKKyAgICAgICAg
ICAgICAgICByZXN1bHRzLnB1c2godmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIHJlc3VsdHM7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgbnVtT2ZJdGVyYXRpb25zOyBp
KyspIHsKKyAgICBmaWx0ZXIoW10sIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSk7Cit9CisK
K2ZpbHRlcihvYmosIGZ1bmN0aW9uKCkgeyAKKyAgICBjb3VudCsrOworICAgIHJldHVybiB0cnVl
OworfSk7CisKK2lmIChjb3VudCAhPT0gZXhwZWN0ZWRDb3VudCkKKyAgICB0ZXN0RmFpbGVkKCJJ
bmNvcnJlY3QgbnVtYmVyIG9mIGl0ZXJhdGVkIGtleXM6ICIgKyBjb3VudCArICIsIGV4cGVjdGVk
OiAiICsgZXhwZWN0ZWRDb3VudCk7CitlbHNlCisgICAgdGVzdFBhc3NlZCgiQ29ycmVjdCBudW1i
ZXIgb2YgaXRlcmF0ZWQga2V5czogIiArIGNvdW50KTsK
</data>
<flag name="review"
          id="274385"
          type_id="1"
          status="+"
          setter="ossy"
    />
          </attachment>
      

    </bug>

</bugzilla>