<?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>167344</bug_id>
          
          <creation_ts>2017-01-23 17:17:27 -0800</creation_ts>
          <short_desc>InferredTypeTable entry manipulation is not TOCTOU race safe</short_desc>
          <delta_ts>2017-01-24 17:05:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>167384</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1269269</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-01-23 17:17:27 -0800</bug_when>
    <thetext>InferredTypeTable.cpp has Time of Check, Time of Use (TOCTOU) races in code that accesses and modifies the values stored in the table.  Consider:

void InferredTypeTable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
{
    InferredTypeTable* inferredTypeTable = jsCast&lt;InferredTypeTable*&gt;(cell);

    ConcurrentJSLocker locker(inferredTypeTable-&gt;m_lock);
    
    for (auto&amp; entry : inferredTypeTable-&gt;m_table) {
        if (!entry.value)
            continue;
        if (entry.value-&gt;isRelevant())
            visitor.append(entry.value);
        else
            entry.value.clear();
    }
}

Between the null check at the top of the loop and call to isRelevant(), the entry can be cleared by another thread.

&lt;rdar://problem/30156092&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269325</commentid>
    <comment_count>1</comment_count>
      <attachid>299568</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-01-23 20:02:29 -0800</bug_when>
    <thetext>Created attachment 299568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269331</commentid>
    <comment_count>2</comment_count>
      <attachid>299568</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-23 21:05:32 -0800</bug_when>
    <thetext>Comment on attachment 299568
Patch

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

&gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:67
&gt; +            entryValue.clear();

This clears the value you loaded as opposed to clearing the value in the table. Not the same thing. You should leave this line of code unchanged.

&gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:83
&gt; +        entryValue.clear();

Ditto.

&gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:118
&gt; +        entryValue.clear();

Ditto.

&gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:139
&gt; +    entryValue.clear();

Ditto.

&gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:157
&gt; +        entryValue.clear();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269337</commentid>
    <comment_count>3</comment_count>
      <attachid>299573</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-01-23 21:33:14 -0800</bug_when>
    <thetext>Created attachment 299573
Updated Patch

(In reply to comment #2)
&gt; Comment on attachment 299568 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299568&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:67
&gt; &gt; +            entryValue.clear();
&gt; 
&gt; This clears the value you loaded as opposed to clearing the value in the
&gt; table. Not the same thing. You should leave this line of code unchanged.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:83
&gt; &gt; +        entryValue.clear();
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:118
&gt; &gt; +        entryValue.clear();
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:139
&gt; &gt; +    entryValue.clear();
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:157
&gt; &gt; +        entryValue.clear();
&gt; 
&gt; Ditto.

Fixed all instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269467</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-01-24 10:58:52 -0800</bug_when>
    <thetext>Committed r211091: &lt;http://trac.webkit.org/changeset/211091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269550</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-24 14:28:00 -0800</bug_when>
    <thetext>This looks like it&apos;s a huge Octane regression.  Almost all of that regression is in deltablue.  Somehow, this broke the logic of InferredTypeTable so that we are no longer inferring types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269551</commentid>
    <comment_count>6</comment_count>
      <attachid>299573</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-24 14:30:02 -0800</bug_when>
    <thetext>Comment on attachment 299573
Updated Patch

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

&gt; Source/JavaScriptCore/runtime/InferredTypeTable.cpp:133
&gt; -        result.iterator-&gt;value.set(vm, this, inferredType);
&gt; -    } else if (!result.iterator-&gt;value)
&gt; +        entryValue.set(vm, this, inferredType);
&gt; +    } else if (!entryValue)

Oh man, you&apos;re never setting the new value because you&apos;re setting entryValue.  You need to result.iterator-&gt;value.set here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269554</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-24 14:38:44 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 167384</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269608</commentid>
    <comment_count>8</comment_count>
      <attachid>299649</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-01-24 16:24:51 -0800</bug_when>
    <thetext>Created attachment 299649
Patch addressing Octane perf regression

Performance test results:

Benchmark report for SunSpider, LongSpider, Octane, and Kraken on il0204e-dhcp90 (MacPro6,1).

VMs tested:
&quot;Baseline&quot; at /Volumes/Data/src/wk.work/OpenSource/WebKitBuild/Release/jsc (r211112)
&quot;InferredTypesFix&quot; at /Volumes/Data/src/wk/OpenSource/WebKitBuild/Release/jsc (r211112)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                 Baseline              InferredTypesFix                                 
SunSpider:
   3d-cube                                    6.4209+-0.3679     ?      6.5473+-0.4023        ? might be 1.0197x slower
   3d-morph                                   6.4951+-0.2281     ?      6.5304+-0.1367        ?
   3d-raytrace                                6.8444+-0.4943     ?      7.1405+-0.3123        ? might be 1.0433x slower
   access-binary-trees                        2.7230+-0.0694     ?      2.7451+-0.1568        ?
   access-fannkuch                            7.1478+-0.3453     ?      7.2475+-0.1555        ? might be 1.0139x slower
   access-nbody                               3.5854+-0.1374     ?      3.6036+-0.1255        ?
   access-nsieve                              3.9108+-0.1406     ?      3.9179+-0.0680        ?
   bitops-3bit-bits-in-byte                   1.5856+-0.0974            1.5332+-0.0726          might be 1.0342x faster
   bitops-bits-in-byte                        3.2681+-0.1637     ?      3.3331+-0.1548        ? might be 1.0199x slower
   bitops-bitwise-and                         2.5864+-0.0676            2.5625+-0.0736        
   bitops-nsieve-bits                         4.1708+-0.2883            4.0641+-0.1070          might be 1.0263x faster
   controlflow-recursive                      3.1398+-0.0515     ?      3.1532+-0.1406        ?
   crypto-aes                                 5.7424+-0.1814            5.6379+-0.1150          might be 1.0185x faster
   crypto-md5                                 3.1805+-0.0568     ?      3.2399+-0.0988        ? might be 1.0187x slower
   crypto-sha1                                3.6145+-0.0635     ?      3.7335+-0.0959        ? might be 1.0329x slower
   date-format-tofte                         11.8614+-0.5058           11.6270+-0.3326          might be 1.0202x faster
   date-format-xparb                          6.8865+-0.2567            6.6904+-0.2633          might be 1.0293x faster
   math-cordic                                3.7902+-0.0637            3.7128+-0.1476          might be 1.0208x faster
   math-partial-sums                          5.6377+-0.1549     ?      5.7065+-0.2119        ? might be 1.0122x slower
   math-spectral-norm                         2.6617+-0.0744            2.6497+-0.0573        
   regexp-dna                                 8.4866+-0.2157     ?      8.6143+-0.1351        ? might be 1.0151x slower
   string-base64                              6.4612+-0.5030            6.0780+-0.2290          might be 1.0631x faster
   string-fasta                               6.9689+-0.0527     ?      7.0331+-0.1079        ?
   string-tagcloud                           11.1892+-0.2837     ?     11.2621+-0.2968        ?
   string-unpack-code                        22.7508+-0.3979     ?     23.1963+-0.7508        ? might be 1.0196x slower
   string-validate-input                      5.4245+-0.1385     ?      5.5733+-0.2508        ? might be 1.0274x slower

   &lt;arithmetic&gt;                               6.0205+-0.0603     ?      6.0436+-0.0414        ? might be 1.0038x slower

                                                 Baseline              InferredTypesFix                                 
LongSpider:
   3d-cube                                  991.6088+-4.3694     ^    978.5234+-8.3152        ^ definitely 1.0134x faster
   3d-morph                                 750.0930+-2.5157     ?    751.8838+-4.0748        ?
   3d-raytrace                              616.2951+-4.4204     ?    623.4863+-8.3589        ? might be 1.0117x slower
   access-binary-trees                     1058.4160+-18.4894        1051.8694+-8.6104        
   access-fannkuch                          323.9742+-8.4540          320.9875+-12.5369       
   access-nbody                             706.4329+-4.0762          694.8193+-20.0971         might be 1.0167x faster
   access-nsieve                            408.3072+-4.6034          401.2708+-5.7336          might be 1.0175x faster
   bitops-3bit-bits-in-byte                  37.9218+-0.8019     ?     37.9934+-0.5970        ?
   bitops-bits-in-byte                      125.3421+-6.9399          125.3361+-6.0166        
   bitops-nsieve-bits                       456.8028+-2.4240          453.7797+-2.3159        
   controlflow-recursive                    507.5275+-6.0453     ?    517.8056+-5.7289        ? might be 1.0203x slower
   crypto-aes                               753.1373+-11.5402         741.2782+-5.4138          might be 1.0160x faster
   crypto-md5                               631.9283+-22.9290         623.7808+-2.8468          might be 1.0131x faster
   crypto-sha1                              793.1381+-4.9837          791.7640+-5.5127        
   date-format-tofte                        567.3540+-20.2099    ?    569.3134+-12.9838       ?
   date-format-xparb                        763.4613+-25.0997    ?    781.0818+-10.9772       ? might be 1.0231x slower
   hash-map                                 183.4460+-3.1517          178.1792+-5.1301          might be 1.0296x faster
   math-cordic                              550.3267+-3.5766     ?    551.2601+-3.1013        ?
   math-partial-sums                        427.7788+-5.0810     ?    428.8451+-5.8373        ?
   math-spectral-norm                       624.9413+-6.0367          620.0635+-1.3772        
   string-base64                            439.6993+-45.4779    ?    462.4300+-22.6587       ? might be 1.0517x slower
   string-fasta                             443.5594+-13.7696         442.9814+-13.3058       
   string-tagcloud                          216.9223+-4.1820     ^    210.0163+-1.8127        ^ definitely 1.0329x faster

   &lt;geometric&gt;                              447.4081+-1.8973          446.4484+-2.7897          might be 1.0021x faster

                                                 Baseline              InferredTypesFix                                 
Octane:
   encrypt                                   0.21097+-0.00735          0.20948+-0.00167       
   decrypt                                   3.61547+-0.02368    ?     3.62406+-0.10379       ?
   deltablue                        x2       0.17321+-0.01541          0.16993+-0.00396         might be 1.0193x faster
   earley                                    0.34667+-0.00408    ?     0.34687+-0.00207       ?
   boyer                                     5.64998+-0.03264    ?     5.67878+-0.10221       ?
   navier-stokes                    x2       5.68744+-0.03055    ?     5.73907+-0.13634       ?
   raytrace                         x2       0.99721+-0.01066    ?     1.00053+-0.01190       ?
   richards                         x2       0.11394+-0.00259    ?     0.11405+-0.00213       ?
   splay                            x2       0.33324+-0.00352          0.33192+-0.00326       
   regexp                           x2      21.08939+-0.14539    ?    21.21617+-0.26932       ?
   pdfjs                            x2      51.58568+-0.22684    ?    51.88562+-0.59929       ?
   mandreel                         x2      57.42961+-1.08898         57.01296+-0.23170       
   gbemu                            x2      46.94567+-3.44121         45.42880+-0.71315         might be 1.0334x faster
   closure                                   0.71822+-0.00509          0.71468+-0.00437       
   jquery                                    9.42738+-0.05983    ?     9.47057+-0.09977       ?
   box2d                            x2      13.38796+-0.08151    ?    13.46752+-0.15528       ?
   zlib                             x2     428.49689+-19.58085   ?   433.01335+-15.17694      ? might be 1.0105x slower
   typescript                       x2     967.34713+-11.31398   ?   968.79667+-9.55830       ?

   &lt;geometric&gt;                               6.58992+-0.05488          6.58309+-0.02484         might be 1.0010x faster

                                                 Baseline              InferredTypesFix                                 
Kraken:
   ai-astar                                  123.823+-0.396      ?     126.659+-4.606         ? might be 1.0229x slower
   audio-beat-detection                       53.417+-0.623             53.166+-1.326         
   audio-dft                                 119.139+-1.082            118.281+-0.740         
   audio-fft                                  42.025+-6.392             38.619+-1.040           might be 1.0882x faster
   audio-oscillator                           57.238+-0.232      ?      57.753+-1.093         ?
   imaging-darkroom                           78.677+-2.037             78.562+-1.390         
   imaging-desaturate                         66.703+-1.296      ?      66.772+-1.912         ?
   imaging-gaussian-blur                      94.712+-6.311             86.502+-7.795           might be 1.0949x faster
   json-parse-financial                       44.782+-0.326      ?      45.773+-1.418         ? might be 1.0221x slower
   json-stringify-tinderbox                   29.509+-0.153      !      31.604+-0.287         ! definitely 1.0710x slower
   stanford-crypto-aes                        45.537+-0.323      ?      46.454+-0.883         ? might be 1.0201x slower
   stanford-crypto-ccm                        45.446+-4.544             42.731+-1.697           might be 1.0635x faster
   stanford-crypto-pbkdf2                    118.408+-1.515      ?     118.834+-2.139         ?
   stanford-crypto-sha256-iterative           37.577+-0.645      ?      37.619+-0.372         ?

   &lt;arithmetic&gt;                               68.357+-0.741             67.809+-0.721           might be 1.0081x faster

                                                 Baseline              InferredTypesFix                                 
Geomean of preferred means:
   &lt;scaled-result&gt;                           33.1890+-0.1992           33.1275+-0.0831          might be 1.0019x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269633</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-01-24 17:05:43 -0800</bug_when>
    <thetext>Committed r211124: &lt;http://trac.webkit.org/changeset/211124&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299568</attachid>
            <date>2017-01-23 20:02:29 -0800</date>
            <delta_ts>2017-01-23 21:33:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>167344.patch</filename>
            <type>text/plain</type>
            <size>4582</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE3LTAxLTIzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEluZmVycmVkVHlwZVRhYmxlIGVudHJ5IG1hbmlwdWxhdGlvbiBpcyBub3QgVE9DVE9VIHJh
Y2Ugc2FmZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY3MzQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFkZSB0aGUgYWNjZXNzZXMgdG8gdGFibGUgdmFsdWVzIHNhZmUgZnJvbSBUaW1lIG9mIENoZWNr
LAorICAgICAgICBUaW1lIG9mIFVzZSByYWNlcyB3aXRoIGxvY2FsIHRlbXBvcmFyeSB2YWx1ZXMu
CisKKyAgICAgICAgKiBydW50aW1lL0luZmVycmVkVHlwZVRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW5mZXJyZWRUeXBlVGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpJbmZl
cnJlZFR5cGVUYWJsZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlVGFibGU6Ondp
bGxTdG9yZVZhbHVlKToKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlVGFibGU6Om1ha2VUb3Ap
OgorCiAyMDE3LTAxLTIzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjcyNDcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZVRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVUYWJs
ZS5jcHAJKHJldmlzaW9uIDIxMTA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZmVycmVkVHlwZVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMjggKzU3LDM0IEBA
IHZvaWQgSW5mZXJyZWRUeXBlVGFibGU6OnZpc2l0Q2hpbGRyZW4oSlMKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGluZmVycmVkVHlwZVRhYmxlLT5tX2xvY2spOwogICAgIAogICAgIGZv
ciAoYXV0byYgZW50cnkgOiBpbmZlcnJlZFR5cGVUYWJsZS0+bV90YWJsZSkgewotICAgICAgICBp
ZiAoIWVudHJ5LnZhbHVlKQorICAgICAgICBhdXRvIGVudHJ5VmFsdWUgPSBlbnRyeS52YWx1ZTsK
KworICAgICAgICBpZiAoIWVudHJ5VmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLT5pc1JlbGV2YW50KCkpCi0gICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZChlbnRyeS52YWx1ZSk7CisgICAgICAgIGlmIChlbnRyeVZhbHVlLT5pc1JlbGV2YW50KCkp
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChlbnRyeVZhbHVlKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgZW50cnkudmFsdWUuY2xlYXIoKTsKKyAgICAgICAgICAgIGVudHJ5VmFsdWUu
Y2xlYXIoKTsKICAgICB9CiB9CiAKIEluZmVycmVkVHlwZSogSW5mZXJyZWRUeXBlVGFibGU6Omdl
dChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIGF1dG8gaXRlciA9IG1fdGFibGUuZmluZCh1aWQpOwotICAgIGlmIChpdGVyID09IG1fdGFi
bGUuZW5kKCkgfHwgIWl0ZXItPnZhbHVlKQorICAgIGlmIChpdGVyID09IG1fdGFibGUuZW5kKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBlbnRyeVZhbHVlID0gaXRlci0+
dmFsdWU7CisgICAgaWYgKCFlbnRyeVZhbHVlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIC8vIFRha2UgdGhpcyBvcHBvcnR1bml0eSB0byBwcnVuZSBpbnZhbGlkYXRlZCB0eXBlcy4K
LSAgICBpZiAoIWl0ZXItPnZhbHVlLT5pc1JlbGV2YW50KCkpIHsKLSAgICAgICAgaXRlci0+dmFs
dWUuY2xlYXIoKTsKKyAgICBpZiAoIWVudHJ5VmFsdWUtPmlzUmVsZXZhbnQoKSkgeworICAgICAg
ICBlbnRyeVZhbHVlLmNsZWFyKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIHJldHVybiBpdGVyLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gZW50cnlWYWx1ZS5nZXQo
KTsKIH0KIAogSW5mZXJyZWRUeXBlKiBJbmZlcnJlZFR5cGVUYWJsZTo6Z2V0KFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCkBAIC05OSwxMyArMTA1LDE3IEBAIGJvb2wgSW5mZXJyZWRUeXBlVGFibGU6
OndpbGxTdG9yZVZhbHVlKAogICAgIAogICAgIGlmIChhZ2UgPT0gT2xkUHJvcGVydHkpIHsKICAg
ICAgICAgVGFibGVUeXBlOjppdGVyYXRvciBpdGVyID0gbV90YWJsZS5maW5kKHByb3BlcnR5TmFt
ZS51aWQoKSk7Ci0gICAgICAgIGlmIChpdGVyID09IG1fdGFibGUuZW5kKCkgfHwgIWl0ZXItPnZh
bHVlKQorICAgICAgICBpZiAoaXRlciA9PSBtX3RhYmxlLmVuZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOyAvLyBBYnNlbmNlIG9uIHJlcGxhY2UgPT4gdG9wLgorCisgICAgICAgIGF1dG8g
ZW50cnlWYWx1ZSA9IGl0ZXItPnZhbHVlOworICAgICAgICBpZiAoIWVudHJ5VmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAoaXRlci0+dmFsdWUt
PndpbGxTdG9yZVZhbHVlKHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKKyAgICAgICAgaWYgKGVu
dHJ5VmFsdWUtPndpbGxTdG9yZVZhbHVlKHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKLSAgICAgICAgaXRlci0+dmFsdWUuY2xlYXIo
KTsKKyAgICAgICAgZW50cnlWYWx1ZS5jbGVhcigpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC0xMTQsMTcgKzEyNCwxOSBAQCBib29sIEluZmVycmVkVHlwZVRhYmxlOjp3aWxs
U3RvcmVWYWx1ZSgKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwog
ICAgICAgICByZXN1bHQgPSBtX3RhYmxlLmFkZChwcm9wZXJ0eU5hbWUudWlkKCksIFdyaXRlQmFy
cmllcjxJbmZlcnJlZFR5cGU+KCkpOwogICAgIH0KKyAgICBhdXRvIGVudHJ5VmFsdWUgPSByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlOworCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAg
ICAgIEluZmVycmVkVHlwZSogaW5mZXJyZWRUeXBlID0gSW5mZXJyZWRUeXBlOjpjcmVhdGUodm0p
OwogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLnNldCh2bSwgdGhpcywgaW5mZXJyZWRUeXBlKTsKLSAgICB9IGVsc2UgaWYgKCFy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlKQorICAgICAgICBlbnRyeVZhbHVlLnNldCh2bSwgdGhpcywg
aW5mZXJyZWRUeXBlKTsKKyAgICB9IGVsc2UgaWYgKCFlbnRyeVZhbHVlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPndpbGxTdG9y
ZVZhbHVlKHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKKyAgICBpZiAoZW50cnlWYWx1ZS0+d2ls
bFN0b3JlVmFsdWUodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmNsZWFyKCk7CisgICAgZW50cnlW
YWx1ZS5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTMzLDExICsxNDUsMTYg
QEAgdm9pZCBJbmZlcnJlZFR5cGVUYWJsZTo6bWFrZVRvcChWTSYgdm0sIAogICAgIC8vIFRoZSBh
bGdvcml0aG0gaGVyZSByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCBvbmx5IG9uZSB0aHJlYWQgbW9k
aWZpZXMgdGhlIGhhc2ggbWFwLgogICAgIGlmIChhZ2UgPT0gT2xkUHJvcGVydHkpIHsKICAgICAg
ICAgVGFibGVUeXBlOjppdGVyYXRvciBpdGVyID0gbV90YWJsZS5maW5kKHByb3BlcnR5TmFtZS51
aWQoKSk7Ci0gICAgICAgIGlmIChpdGVyID09IG1fdGFibGUuZW5kKCkgfHwgIWl0ZXItPnZhbHVl
KQorICAgICAgICBpZiAoaXRlciA9PSBtX3RhYmxlLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJu
OyAvLyBBYnNlbmNlIG9uIHJlcGxhY2UgPT4gdG9wLgogCi0gICAgICAgIGl0ZXItPnZhbHVlLT5t
YWtlVG9wKHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBpdGVyLT52YWx1ZS5jbGVhcigpOwor
ICAgICAgICBhdXRvIGVudHJ5VmFsdWUgPSBpdGVyLT52YWx1ZTsKKworICAgICAgICBpZiAoIWVu
dHJ5VmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZW50cnlWYWx1ZS0+bWFr
ZVRvcCh2bSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgZW50cnlWYWx1ZS5jbGVhcigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCg==
</data>
<flag name="review"
          id="321506"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299573</attachid>
            <date>2017-01-23 21:33:14 -0800</date>
            <delta_ts>2017-01-24 16:24:51 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>167344-2.patch</filename>
            <type>text/plain</type>
            <size>4435</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE3LTAxLTIzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEluZmVycmVkVHlwZVRhYmxlIGVudHJ5IG1hbmlwdWxhdGlvbiBpcyBub3QgVE9DVE9VIHJh
Y2Ugc2FmZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY3MzQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFkZSB0aGUgYWNjZXNzZXMgdG8gdGFibGUgdmFsdWVzIHNhZmUgZnJvbSBUaW1lIG9mIENoZWNr
LAorICAgICAgICBUaW1lIG9mIFVzZSByYWNlcyB3aXRoIGxvY2FsIHRlbXBvcmFyeSB2YWx1ZXMu
CisKKyAgICAgICAgKiBydW50aW1lL0luZmVycmVkVHlwZVRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW5mZXJyZWRUeXBlVGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpJbmZl
cnJlZFR5cGVUYWJsZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlVGFibGU6Ondp
bGxTdG9yZVZhbHVlKToKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlVGFibGU6Om1ha2VUb3Ap
OgorCiAyMDE3LTAxLTIzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjcyNDcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZVRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVUYWJs
ZS5jcHAJKHJldmlzaW9uIDIxMTA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZmVycmVkVHlwZVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEyIEBA
IHZvaWQgSW5mZXJyZWRUeXBlVGFibGU6OnZpc2l0Q2hpbGRyZW4oSlMKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGluZmVycmVkVHlwZVRhYmxlLT5tX2xvY2spOwogICAgIAogICAgIGZv
ciAoYXV0byYgZW50cnkgOiBpbmZlcnJlZFR5cGVUYWJsZS0+bV90YWJsZSkgewotICAgICAgICBp
ZiAoIWVudHJ5LnZhbHVlKQorICAgICAgICBhdXRvIGVudHJ5VmFsdWUgPSBlbnRyeS52YWx1ZTsK
KworICAgICAgICBpZiAoIWVudHJ5VmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLT5pc1JlbGV2YW50KCkpCi0gICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZChlbnRyeS52YWx1ZSk7CisgICAgICAgIGlmIChlbnRyeVZhbHVlLT5pc1JlbGV2YW50KCkp
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChlbnRyeVZhbHVlKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgZW50cnkudmFsdWUuY2xlYXIoKTsKICAgICB9CkBAIC02OSwxNiArNzEsMjAg
QEAgdm9pZCBJbmZlcnJlZFR5cGVUYWJsZTo6dmlzaXRDaGlsZHJlbihKUwogSW5mZXJyZWRUeXBl
KiBJbmZlcnJlZFR5cGVUYWJsZTo6Z2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgYXV0byBpdGVyID0gbV90YWJsZS5maW5kKHVpZCk7
Ci0gICAgaWYgKGl0ZXIgPT0gbV90YWJsZS5lbmQoKSB8fCAhaXRlci0+dmFsdWUpCisgICAgaWYg
KGl0ZXIgPT0gbV90YWJsZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBh
dXRvIGVudHJ5VmFsdWUgPSBpdGVyLT52YWx1ZTsKKyAgICBpZiAoIWVudHJ5VmFsdWUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gVGFrZSB0aGlzIG9wcG9ydHVuaXR5IHRvIHBy
dW5lIGludmFsaWRhdGVkIHR5cGVzLgotICAgIGlmICghaXRlci0+dmFsdWUtPmlzUmVsZXZhbnQo
KSkgeworICAgIGlmICghZW50cnlWYWx1ZS0+aXNSZWxldmFudCgpKSB7CiAgICAgICAgIGl0ZXIt
PnZhbHVlLmNsZWFyKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJl
dHVybiBpdGVyLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gZW50cnlWYWx1ZS5nZXQoKTsKIH0K
IAogSW5mZXJyZWRUeXBlKiBJbmZlcnJlZFR5cGVUYWJsZTo6Z2V0KFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpCkBAIC05OSwxMCArMTA1LDE0IEBAIGJvb2wgSW5mZXJyZWRUeXBlVGFibGU6OndpbGxT
dG9yZVZhbHVlKAogICAgIAogICAgIGlmIChhZ2UgPT0gT2xkUHJvcGVydHkpIHsKICAgICAgICAg
VGFibGVUeXBlOjppdGVyYXRvciBpdGVyID0gbV90YWJsZS5maW5kKHByb3BlcnR5TmFtZS51aWQo
KSk7Ci0gICAgICAgIGlmIChpdGVyID09IG1fdGFibGUuZW5kKCkgfHwgIWl0ZXItPnZhbHVlKQor
ICAgICAgICBpZiAoaXRlciA9PSBtX3RhYmxlLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBBYnNlbmNlIG9uIHJlcGxhY2UgPT4gdG9wLgorCisgICAgICAgIGF1dG8gZW50cnlW
YWx1ZSA9IGl0ZXItPnZhbHVlOworICAgICAgICBpZiAoIWVudHJ5VmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAoaXRlci0+dmFsdWUtPndpbGxT
dG9yZVZhbHVlKHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKKyAgICAgICAgaWYgKGVudHJ5VmFs
dWUtPndpbGxTdG9yZVZhbHVlKHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaXRlci0+dmFsdWUuY2xlYXIoKTsKQEAg
LTExNCwxNCArMTI0LDE2IEBAIGJvb2wgSW5mZXJyZWRUeXBlVGFibGU6OndpbGxTdG9yZVZhbHVl
KAogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIHJl
c3VsdCA9IG1fdGFibGUuYWRkKHByb3BlcnR5TmFtZS51aWQoKSwgV3JpdGVCYXJyaWVyPEluZmVy
cmVkVHlwZT4oKSk7CiAgICAgfQorICAgIGF1dG8gZW50cnlWYWx1ZSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CisKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgSW5mZXJy
ZWRUeXBlKiBpbmZlcnJlZFR5cGUgPSBJbmZlcnJlZFR5cGU6OmNyZWF0ZSh2bSk7CiAgICAgICAg
IFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
c2V0KHZtLCB0aGlzLCBpbmZlcnJlZFR5cGUpOwotICAgIH0gZWxzZSBpZiAoIXJlc3VsdC5pdGVy
YXRvci0+dmFsdWUpCisgICAgICAgIGVudHJ5VmFsdWUuc2V0KHZtLCB0aGlzLCBpbmZlcnJlZFR5
cGUpOworICAgIH0gZWxzZSBpZiAoIWVudHJ5VmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKLSAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+d2lsbFN0b3JlVmFsdWUodm0s
IHByb3BlcnR5TmFtZSwgdmFsdWUpKQorICAgIGlmIChlbnRyeVZhbHVlLT53aWxsU3RvcmVWYWx1
ZSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAog
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuY2xlYXIoKTsKQEAgLTEzMywxMCArMTQ1LDE1IEBA
IHZvaWQgSW5mZXJyZWRUeXBlVGFibGU6Om1ha2VUb3AoVk0mIHZtLCAKICAgICAvLyBUaGUgYWxn
b3JpdGhtIGhlcmUgcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgb25seSBvbmUgdGhyZWFkIG1vZGlm
aWVzIHRoZSBoYXNoIG1hcC4KICAgICBpZiAoYWdlID09IE9sZFByb3BlcnR5KSB7CiAgICAgICAg
IFRhYmxlVHlwZTo6aXRlcmF0b3IgaXRlciA9IG1fdGFibGUuZmluZChwcm9wZXJ0eU5hbWUudWlk
KCkpOwotICAgICAgICBpZiAoaXRlciA9PSBtX3RhYmxlLmVuZCgpIHx8ICFpdGVyLT52YWx1ZSkK
KyAgICAgICAgaWYgKGl0ZXIgPT0gbV90YWJsZS5lbmQoKSkKICAgICAgICAgICAgIHJldHVybjsg
Ly8gQWJzZW5jZSBvbiByZXBsYWNlID0+IHRvcC4KIAotICAgICAgICBpdGVyLT52YWx1ZS0+bWFr
ZVRvcCh2bSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgYXV0byBlbnRyeVZhbHVlID0gaXRlci0+
dmFsdWU7CisKKyAgICAgICAgaWYgKCFlbnRyeVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGVudHJ5VmFsdWUtPm1ha2VUb3Aodm0sIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IGl0ZXItPnZhbHVlLmNsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>
<flag name="review"
          id="321542"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299649</attachid>
            <date>2017-01-24 16:24:51 -0800</date>
            <delta_ts>2017-01-24 16:25:59 -0800</delta_ts>
            <desc>Patch addressing Octane perf regression</desc>
            <filename>167344-3.patch</filename>
            <type>text/plain</type>
            <size>4633</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMTE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE3LTAxLTI0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEluZmVycmVkVHlwZVRhYmxlIGVudHJ5IG1hbmlwdWxhdGlvbiBpcyBub3QgVE9DVE9VIHJh
Y2Ugc2FmZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY3MzQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgTWFk
ZSB0aGUgYWNjZXNzZXMgdG8gdGFibGUgdmFsdWVzIHNhZmUgZnJvbSBUaW1lIG9mIENoZWNrLAor
ICAgICAgICBUaW1lIG9mIFVzZSByYWNlcyB3aXRoIGxvY2FsIHRlbXBvcmFyeSB2YWx1ZXMuCisK
KyAgICAgICAgRml4ZWQgcG9pbnQgdGhhdCB3ZSBzZXQgYW4gZW50cnkgaW4gdGhlIHRhYmxlIHRv
IGFjY2VzcyB0aGUKKyAgICAgICAgY3VycmVudCB0YWJsZSBlbnRyeSBpbnN0ZWFkIG9mIHVzaW5n
IHRoZSBsb2NhbCBlbnRyeS4gIEluIHRoYXQgY2FzZSwKKyAgICAgICAgd2UgcmVsb2FkIHRoZSBu
b3cgY2hhbmdlZCBlbnRyeS4KKworICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRUeXBlVGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGVUYWJsZTo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgIChKU0M6OkluZmVycmVkVHlwZVRhYmxlOjpnZXQpOgorICAgICAgICAoSlNDOjpJbmZl
cnJlZFR5cGVUYWJsZTo6d2lsbFN0b3JlVmFsdWUpOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFR5
cGVUYWJsZTo6bWFrZVRvcCk6CisKIDIwMTctMDEtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICAtMCBpcyBhIHZhbGlkIGFycmF5IGluZGV4IGFuZCBBdG9taWNz
T2JqZWN0IHNob3VsZCBrbm93IHRoaXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZmVycmVkVHlwZVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVUYWJsZS5jcHAJKHJldmlzaW9uIDIxMTExMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZVRhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEyIEBAIHZvaWQgSW5mZXJyZWRUeXBlVGFibGU6OnZp
c2l0Q2hpbGRyZW4oSlMKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGluZmVycmVkVHlw
ZVRhYmxlLT5tX2xvY2spOwogICAgIAogICAgIGZvciAoYXV0byYgZW50cnkgOiBpbmZlcnJlZFR5
cGVUYWJsZS0+bV90YWJsZSkgewotICAgICAgICBpZiAoIWVudHJ5LnZhbHVlKQorICAgICAgICBh
dXRvIGVudHJ5VmFsdWUgPSBlbnRyeS52YWx1ZTsKKworICAgICAgICBpZiAoIWVudHJ5VmFsdWUp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGVudHJ5LnZhbHVlLT5pc1JlbGV2
YW50KCkpCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChlbnRyeS52YWx1ZSk7CisgICAgICAg
IGlmIChlbnRyeVZhbHVlLT5pc1JlbGV2YW50KCkpCisgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZChlbnRyeVZhbHVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW50cnkudmFsdWUuY2xl
YXIoKTsKICAgICB9CkBAIC02OSwxNiArNzEsMjAgQEAgdm9pZCBJbmZlcnJlZFR5cGVUYWJsZTo6
dmlzaXRDaGlsZHJlbihKUwogSW5mZXJyZWRUeXBlKiBJbmZlcnJlZFR5cGVUYWJsZTo6Z2V0KGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAg
YXV0byBpdGVyID0gbV90YWJsZS5maW5kKHVpZCk7Ci0gICAgaWYgKGl0ZXIgPT0gbV90YWJsZS5l
bmQoKSB8fCAhaXRlci0+dmFsdWUpCisgICAgaWYgKGl0ZXIgPT0gbV90YWJsZS5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGVudHJ5VmFsdWUgPSBpdGVyLT52YWx1
ZTsKKyAgICBpZiAoIWVudHJ5VmFsdWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Ly8gVGFrZSB0aGlzIG9wcG9ydHVuaXR5IHRvIHBydW5lIGludmFsaWRhdGVkIHR5cGVzLgotICAg
IGlmICghaXRlci0+dmFsdWUtPmlzUmVsZXZhbnQoKSkgeworICAgIGlmICghZW50cnlWYWx1ZS0+
aXNSZWxldmFudCgpKSB7CiAgICAgICAgIGl0ZXItPnZhbHVlLmNsZWFyKCk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBpdGVyLT52YWx1ZS5nZXQoKTsKKyAg
ICByZXR1cm4gZW50cnlWYWx1ZS5nZXQoKTsKIH0KIAogSW5mZXJyZWRUeXBlKiBJbmZlcnJlZFR5
cGVUYWJsZTo6Z2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC05OSwxMCArMTA1LDE0IEBA
IGJvb2wgSW5mZXJyZWRUeXBlVGFibGU6OndpbGxTdG9yZVZhbHVlKAogICAgIAogICAgIGlmIChh
Z2UgPT0gT2xkUHJvcGVydHkpIHsKICAgICAgICAgVGFibGVUeXBlOjppdGVyYXRvciBpdGVyID0g
bV90YWJsZS5maW5kKHByb3BlcnR5TmFtZS51aWQoKSk7Ci0gICAgICAgIGlmIChpdGVyID09IG1f
dGFibGUuZW5kKCkgfHwgIWl0ZXItPnZhbHVlKQorICAgICAgICBpZiAoaXRlciA9PSBtX3RhYmxl
LmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBYnNlbmNlIG9uIHJlcGxhY2Ug
PT4gdG9wLgorCisgICAgICAgIGF1dG8gZW50cnlWYWx1ZSA9IGl0ZXItPnZhbHVlOworICAgICAg
ICBpZiAoIWVudHJ5VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAot
ICAgICAgICBpZiAoaXRlci0+dmFsdWUtPndpbGxTdG9yZVZhbHVlKHZtLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKSkKKyAgICAgICAgaWYgKGVudHJ5VmFsdWUtPndpbGxTdG9yZVZhbHVlKHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAg
ICAgICAgaXRlci0+dmFsdWUuY2xlYXIoKTsKQEAgLTExNCwxNCArMTI0LDE3IEBAIGJvb2wgSW5m
ZXJyZWRUeXBlVGFibGU6OndpbGxTdG9yZVZhbHVlKAogICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIHJlc3VsdCA9IG1fdGFibGUuYWRkKHByb3BlcnR5
TmFtZS51aWQoKSwgV3JpdGVCYXJyaWVyPEluZmVycmVkVHlwZT4oKSk7CiAgICAgfQorICAgIGF1
dG8gZW50cnlWYWx1ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisKICAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpIHsKICAgICAgICAgSW5mZXJyZWRUeXBlKiBpbmZlcnJlZFR5cGUgPSBJbmZl
cnJlZFR5cGU6OmNyZWF0ZSh2bSk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0KHZtLCB0aGlzLCBpbmZlcnJlZFR5cGUp
OwotICAgIH0gZWxzZSBpZiAoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUpCisgICAgICAgIGVudHJ5
VmFsdWUgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgIH0gZWxzZSBpZiAoIWVudHJ5VmFs
dWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAocmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+d2lsbFN0b3JlVmFsdWUodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpKQorICAgIGlm
IChlbnRyeVZhbHVlLT53aWxsU3RvcmVWYWx1ZSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuY2xl
YXIoKTsKQEAgLTEzMywxMCArMTQ2LDE1IEBAIHZvaWQgSW5mZXJyZWRUeXBlVGFibGU6Om1ha2VU
b3AoVk0mIHZtLCAKICAgICAvLyBUaGUgYWxnb3JpdGhtIGhlcmUgcmVsaWVzIG9uIHRoZSBmYWN0
IHRoYXQgb25seSBvbmUgdGhyZWFkIG1vZGlmaWVzIHRoZSBoYXNoIG1hcC4KICAgICBpZiAoYWdl
ID09IE9sZFByb3BlcnR5KSB7CiAgICAgICAgIFRhYmxlVHlwZTo6aXRlcmF0b3IgaXRlciA9IG1f
dGFibGUuZmluZChwcm9wZXJ0eU5hbWUudWlkKCkpOwotICAgICAgICBpZiAoaXRlciA9PSBtX3Rh
YmxlLmVuZCgpIHx8ICFpdGVyLT52YWx1ZSkKKyAgICAgICAgaWYgKGl0ZXIgPT0gbV90YWJsZS5l
bmQoKSkKICAgICAgICAgICAgIHJldHVybjsgLy8gQWJzZW5jZSBvbiByZXBsYWNlID0+IHRvcC4K
IAotICAgICAgICBpdGVyLT52YWx1ZS0+bWFrZVRvcCh2bSwgcHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgYXV0byBlbnRyeVZhbHVlID0gaXRlci0+dmFsdWU7CisKKyAgICAgICAgaWYgKCFlbnRyeVZh
bHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGVudHJ5VmFsdWUtPm1ha2VUb3Ao
dm0sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGl0ZXItPnZhbHVlLmNsZWFyKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Cg==
</data>
<flag name="review"
          id="321594"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>