<?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>163430</bug_id>
          
          <creation_ts>2016-10-13 23:43:33 -0700</creation_ts>
          <short_desc>JSON.parse should not modify frozen objects</short_desc>
          <delta_ts>2018-10-04 12:16:22 -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>WebKit Local 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>andre.bargull</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1240127</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-13 23:43:33 -0700</bug_when>
    <thetext>The ES6 spec for JSON.parse (https://tc39.github.io/ecma262/#sec-json.parse and https://tc39.github.io/ecma262/#sec-internalizejsonproperty) states that it uses CreateDataProperty() (https://tc39.github.io/ecma262/#sec-createdataproperty) to set values returned by a reviver.  The spec for CreateDataPropertyOrThrow states:

&quot;This abstract operation creates a property whose attributes are set to the same defaults used for properties created by the ECMAScript language assignment operator. Normally, the property will not already exist. If it does exist and is not configurable or if O is not extensible, [[DefineOwnProperty]] will return false.&quot;

Since the properties of frozen objects are not extensible, not configurable, and not writeable, JSON.parse should fail to write to any frozen objects.  Similarly, JSON.parse should fail to delete properties in frozen objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240132</commentid>
    <comment_count>1</comment_count>
      <attachid>291578</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-13 23:54:45 -0700</bug_when>
    <thetext>Created attachment 291578
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240270</commentid>
    <comment_count>2</comment_count>
      <attachid>291578</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-14 08:04:44 -0700</bug_when>
    <thetext>Comment on attachment 291578
proposed patch.

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

&gt; JSTests/stress/json-parse-on-frozen-object.js:11
&gt; +        this.b = Object.freeze([&quot;unmodifiable&quot;]);

This is a nice test file. 
Can you also add a test for making the property at 0 non-configurable and non-writable?

&gt; JSTests/stress/json-parse-on-frozen-object.js:38
&gt; +        return undefined;

The behavior here is to indicate that property 0 should be deleted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240277</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-14 08:32:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 291578 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291578&amp;action=review
&gt; 
&gt; &gt; JSTests/stress/json-parse-on-frozen-object.js:11
&gt; &gt; +        this.b = Object.freeze([&quot;unmodifiable&quot;]);
&gt; 
&gt; This is a nice test file. 
&gt; Can you also add a test for making the property at 0 non-configurable and
&gt; non-writable?

I&apos;ll work on that.
 
&gt; &gt; JSTests/stress/json-parse-on-frozen-object.js:38
&gt; &gt; +        return undefined;
&gt; 
&gt; The behavior here is to indicate that property 0 should be deleted?

Yes.  It&apos;s in the spec.  If the reviver returns undefined, JSON.parse deletes the property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240291</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-14 08:58:59 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Can you also add a test for making the property at 0 non-configurable and
&gt; &gt; non-writable?
&gt; 
&gt; I&apos;ll work on that.

Interesting.  This uncovered a bug in a different area. I&apos;ll land this patch first, and fix that in a separate bug and add the non-configurable non-writable test there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240295</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-14 09:06:01 -0700</bug_when>
    <thetext>I&apos;ll address the bug with non-configurable properties in https://bugs.webkit.org/show_bug.cgi?id=163446.

Landed in r207341: &lt;http://trac.webkit.org/r207341&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466441</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-04 12:14:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/15221406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466445</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-04 12:16:22 -0700</bug_when>
    <thetext>*** Bug 122759 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291578</attachid>
            <date>2016-10-13 23:54:45 -0700</date>
            <delta_ts>2016-10-14 08:04:44 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-163430.patch</filename>
            <type>text/plain</type>
            <size>9162</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDczMjcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDE2LTEwLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBKU09OLnBhcnNlIHNob3VsZCBub3QgbW9kaWZ5IGZyb3plbiBvYmplY3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDMw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJl
c3MvanNvbi1wYXJzZS1vbi1mcm96ZW4tb2JqZWN0LmpzOiBBZGRlZC4KKwogMjAxNi0xMC0xMyAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIEV4Y2VwdGlv
biBtZXNzYWdlIGZvciBleHByZXNzaW9ucyB3aXRoIG11bHRpcGxlIGJyYWNrZXQgYWNjZXNzZXMg
aXMgaW5jb25zaXN0ZW50IC8gaW5jb3JyZWN0CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9qc29uLXBh
cnNlLW9uLWZyb3plbi1vYmplY3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvanNv
bi1wYXJzZS1vbi1mcm96ZW4tb2JqZWN0LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3Ry
ZXNzL2pzb24tcGFyc2Utb24tZnJvemVuLW9iamVjdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc1IEBACisvL0AgcnVuRlRMTm9DSklUCisKK2Z1bmN0aW9uIHNob3VsZEVxdWFsKHRlc3RJ
ZCwgYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpIHsKKyAg
ICAgICAgdGhyb3cgdGVzdElkICsgIjogRVJST1I6IGV4cGVjdCAiICsgZXhwZWN0ZWQgKyAiLCBh
Y3R1YWwgIiArIGFjdHVhbDsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZyb3plbkFycmF5UmV2aXZl
cihrLCB2KSB7CisgICAgaWYgKGsgPT09ICJhIikgeworICAgICAgICB0aGlzLmIgPSBPYmplY3Qu
ZnJlZXplKFsidW5tb2RpZmlhYmxlIl0pOworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisgICAg
aWYgKGsgPT09ICIwIikKKyAgICAgICAgcmV0dXJuICJtb2RpZmllZCI7CisgICAgcmV0dXJuIHY7
Cit9CisKK2Z1bmN0aW9uIGZyb3plbkFycmF5TGlrZU9iamVjdFJldml2ZXIoaywgdikgeworICAg
IGlmIChrID09PSAiYSIpIHsKKyAgICAgICAgdmFyIG9iaiA9IHt9OworICAgICAgICBvYmpbMF0g
PSAndW5tb2RpZmlhYmxlJzsKKyAgICAgICAgb2JqLmxlbmd0aCA9IDE7IAorICAgICAgICB0aGlz
LmIgPSBPYmplY3QuZnJlZXplKG9iaik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICBp
ZiAoayA9PT0gIjAiKQorICAgICAgICByZXR1cm4gIm1vZGlmaWVkIjsKKyAgICByZXR1cm4gdjsK
K30KKworZnVuY3Rpb24gZnJvemVuQXJyYXlSZXZpdmVyV2l0aERlbGV0ZShrLCB2KSB7CisgICAg
aWYgKGsgPT09ICJhIikgeworICAgICAgICB0aGlzLmIgPSBPYmplY3QuZnJlZXplKFsidW5tb2Rp
ZmlhYmxlIl0pOworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisgICAgaWYgKGsgPT09ICIwIikK
KyAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICByZXR1cm4gdjsKK30KKworZnVuY3Rpb24g
ZnJvemVuQXJyYXlMaWtlT2JqZWN0UmV2aXZlcldpdGhEZWxldGUoaywgdikgeworICAgIGlmIChr
ID09PSAiYSIpIHsKKyAgICAgICAgdmFyIG9iaiA9IHt9OworICAgICAgICBvYmpbMF0gPSAndW5t
b2RpZmlhYmxlJzsKKyAgICAgICAgb2JqLmxlbmd0aCA9IDE7IAorICAgICAgICB0aGlzLmIgPSBP
YmplY3QuZnJlZXplKG9iaik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICBpZiAoayA9
PT0gIjAiKQorICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIHJldHVybiB2OworfQorCitm
dW5jdGlvbiBydW5UZXN0KHRlc3RJZCwgcmV2aXZlciwgZXhwZWN0ZWRWYWx1ZSwgZXhwZWN0ZWRF
eGNlcHRpb24pIHsKKyAgICBsZXQgbnVtSXRlcmF0aW9ucyA9IDEwMDAwOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgaSsrKSB7CisgICAgICAgIHZhciBleGNlcHRpb24g
PSB1bmRlZmluZWQ7CisKKyAgICAgICAgdmFyIG9iajsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIG9iaiA9IEpTT04ucGFyc2UoJ3sgImEiOiAwLCAiYiI6IDAgfScsIHJldml2ZXIpOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBleGNlcHRpb24gPSAiIiArIGU7CisgICAg
ICAgICAgICBleGNlcHRpb24gPSBleGNlcHRpb24uc3Vic3RyKDAsIDEwKTsgLy8gU2VhcmNoIGZv
ciAiVHlwZUVycm9yOiIuCisgICAgICAgIH0KKyAgICAgICAgc2hvdWxkRXF1YWwodGVzdElkLCBl
eGNlcHRpb24sIGV4cGVjdGVkRXhjZXB0aW9uKTsKKyAgICAgICAgc2hvdWxkRXF1YWwodGVzdElk
LCBvYmouYlswXSwgZXhwZWN0ZWRWYWx1ZSk7CisgICAgfQorfQorCitydW5UZXN0KDEwMDAwLCBm
cm96ZW5BcnJheVJldml2ZXIsICAgICAgICAgICAgICAgICAgICAgInVubW9kaWZpYWJsZSIsIHVu
ZGVmaW5lZCk7CitydW5UZXN0KDEwMDAxLCBmcm96ZW5BcnJheUxpa2VPYmplY3RSZXZpdmVyLCAg
ICAgICAgICAgInVubW9kaWZpYWJsZSIsIHVuZGVmaW5lZCk7CitydW5UZXN0KDEwMDAyLCBmcm96
ZW5BcnJheVJldml2ZXJXaXRoRGVsZXRlLCAgICAgICAgICAgInVubW9kaWZpYWJsZSIsIHVuZGVm
aW5lZCk7CitydW5UZXN0KDEwMDAzLCBmcm96ZW5BcnJheUxpa2VPYmplY3RSZXZpdmVyV2l0aERl
bGV0ZSwgInVubW9kaWZpYWJsZSIsIHVuZGVmaW5lZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwNzMyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBAQAorMjAxNi0xMC0xMyAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSlNPTi5wYXJzZSBzaG91bGQgbm90IG1v
ZGlmeSBmcm96ZW4gb2JqZWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MzQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBFUzYgc3BlYyBmb3IgSlNPTi5wYXJzZSAoaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hMjYyLyNzZWMtanNvbi5wYXJzZSBhbmQKKyAgICAgICAgaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaW50ZXJuYWxpemVqc29ucHJvcGVydHkpIHN0YXRlcyB0
aGF0IGl0IHVzZXMKKyAgICAgICAgQ3JlYXRlRGF0YVByb3BlcnR5KCkgKGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTI2Mi8jc2VjLWNyZWF0ZWRhdGFwcm9wZXJ0eSkgdG8KKyAgICAgICAgc2V0
IHZhbHVlcyByZXR1cm5lZCBieSBhIHJldml2ZXIuICBUaGUgc3BlYyBmb3IgQ3JlYXRlRGF0YVBy
b3BlcnR5T3JUaHJvdyBzdGF0ZXM6CisKKyAgICAgICAgIlRoaXMgYWJzdHJhY3Qgb3BlcmF0aW9u
IGNyZWF0ZXMgYSBwcm9wZXJ0eSB3aG9zZSBhdHRyaWJ1dGVzIGFyZSBzZXQgdG8gdGhlIHNhbWUK
KyAgICAgICAgZGVmYXVsdHMgdXNlZCBmb3IgcHJvcGVydGllcyBjcmVhdGVkIGJ5IHRoZSBFQ01B
U2NyaXB0IGxhbmd1YWdlIGFzc2lnbm1lbnQKKyAgICAgICAgb3BlcmF0b3IuIE5vcm1hbGx5LCB0
aGUgcHJvcGVydHkgd2lsbCBub3QgYWxyZWFkeSBleGlzdC4gSWYgaXQgZG9lcyBleGlzdCBhbmQg
aXMKKyAgICAgICAgbm90IGNvbmZpZ3VyYWJsZSBvciBpZiBPIGlzIG5vdCBleHRlbnNpYmxlLCBb
W0RlZmluZU93blByb3BlcnR5XV0gd2lsbCByZXR1cm4KKyAgICAgICAgZmFsc2UuIgorCisgICAg
ICAgIE5vdGU6IENyZWF0ZURhdGFQcm9wZXJ0eSgpIHdpbGwgbm90IHRocm93IGEgVHlwZUVycm9y
LgorCisgICAgICAgIFNpbmNlIHRoZSBwcm9wZXJ0aWVzIG9mIGZyb3plbiBvYmplY3RzIGFyZSBu
b3QgZXh0ZW5zaWJsZSwgbm90IGNvbmZpZ3VyYWJsZSwgYW5kCisgICAgICAgIG5vdCB3cml0ZWFi
bGUsIEpTT04ucGFyc2Ugc2hvdWxkIGZhaWwgdG8gd3JpdGUgdG8gYW55IGZyb3plbiBvYmplY3Rz
LiAgU2ltaWxhcmx5LAorICAgICAgICBKU09OLnBhcnNlIHNob3VsZCBmYWlsIHRvIGRlbGV0ZSBw
cm9wZXJ0aWVzIGluIGZyb3plbiBvYmplY3RzLgorCisgICAgICAgIEluIEpTT04ucGFyc2UoKSwg
d2UgcHJldmlvdXNseSB3cml0ZSB0byBhcnJheSBlbGVtZW50cyB1c2luZyB0aGUgZm9ybSBvZgor
ICAgICAgICBwdXREaXJlY3RJbmRleCgpIHRoYXQgdXNlcyBtb2RlIFB1dERpcmVjdEluZGV4TGlr
ZVB1dERpcmVjdC4gIFRoaXMgbWFrZXMgaXQgc28KKyAgICAgICAgdGhhdCB0aGUgd3JpdGUgKGku
ZS4gcHV0KSBpcyBhbHdheXMgc3VjY2Vzc2Z1bC4gIFdlJ3ZlIG5vdyBmaXhlZCB0aGlzIHRvIHVz
ZQorICAgICAgICBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93IG1vZGUgaW5zdGVhZCwgd2hp
Y2ggd2lsbCBmYWlsIHRvIHB1dCB0aGUgZWxlbWVudCBpZgorICAgICAgICB0aGUgYXJyYXkgaXMg
bm90IHdyaXRlYWJsZS4KKworICAgICAgICBBbHNvIGNoYW5nZWQgV2Fsa2VyOjp3YWxrKCkgdG8g
dXNlIHRoZSB2ZXJzaW9uIG9mIG1ldGhvZFRhYmxlKCkgdGhhdCB0YWtlcyBhIFZNJgorICAgICAg
ICBzaW5jZSB0aGUgVk0mIGlzIGFscmVhZHkgYXZhaWxhYmxlLgorCisgICAgICAgICogcnVudGlt
ZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjp3YWxrKToKKwogMjAxNi0x
MC0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IEFycmF5
LnByb3RvdHlwZS5zcGxpY2UgRVM2IGNvbXBsaWFuY2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24gMjA3MzIyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzMSw3ICs2MzEsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNW
YWx1CiAgICAgICAgICAgICAgICAgICAgIGluVmFsdWUgPSBhcnJheS0+Z2V0SW5kZXhRdWlja2x5
KGluZGV4KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QoYXJyYXksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXktPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoYXJyYXksIG1fZXhlYywgaW5kZXgsIHNsb3QpKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoYXJyYXktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChhcnJheSwgbV9leGVjLCBpbmRleCwgc2xvdCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpblZhbHVlID0gc2xvdC5nZXRWYWx1ZShtX2V4ZWMsIGluZGV4KTsKICAgICAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgaW5WYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CkBAIC02NDksOSArNjQ5LDkgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2Vy
Ojp3YWxrKEpTVmFsdQogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXJyYXlTdGFj
ay5wZWVrKCk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJl
dml2ZXIoYXJyYXksIGpzU3RyaW5nKG1fZXhlYywgU3RyaW5nOjpudW1iZXIoaW5kZXhTdGFjay5s
YXN0KCkpKSwgb3V0VmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlz
VW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYXJyYXksIG1fZXhlYywgaW5kZXhTdGFjay5sYXN0KCkpOwor
ICAgICAgICAgICAgICAgICAgICBhcnJheS0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgoYXJyYXksIG1fZXhlYywgaW5kZXhTdGFjay5sYXN0KCkpOwogICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KG1fZXhl
YywgaW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICBhcnJheS0+cHV0RGlyZWN0SW5kZXgobV9leGVjLCBpbmRleFN0YWNrLmxhc3QoKSwgZmlsdGVy
ZWRWYWx1ZSwgMCwgUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgICAgICAg
ICBpbmRleFN0YWNrLmxhc3QoKSsrOwogICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFZp
c2l0TWVtYmVyOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtl
cjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5wdXNoKG9iamVjdCk7
CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBlbmQoMCk7CiAgICAgICAgICAgICAgICAg
cHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0eU5h
bWVNb2RlOjpTdHJpbmdzKSk7Ci0gICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3Qo
KSwgRW51bWVyYXRpb25Nb2RlKCkpOworICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNr
Lmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBv
YmplY3RTdGFydFZpc2l0TWVtYmVyOgpAQCAtNjg0LDcgKzY4NCw3IEBAIE5FVkVSX0lOTElORSBK
U1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVj
dCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KG9iamVjdCwg
bV9leGVjLCBwcm9wZXJ0aWVzW2luZGV4XSwgc2xvdCkpCisgICAgICAgICAgICAgICAgaWYgKG9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBtX2V4ZWMs
IHByb3BlcnRpZXNbaW5kZXhdLCBzbG90KSkKICAgICAgICAgICAgICAgICAgICAgaW5WYWx1ZSA9
IHNsb3QuZ2V0VmFsdWUobV9leGVjLCBwcm9wZXJ0aWVzW2luZGV4XSk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBpblZhbHVlID0ganNVbmRlZmluZWQoKTsKQEAg
LTcwNSw5ICs3MDUsOSBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1
CiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKICAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZlcihvYmplY3QsIGpzU3Ry
aW5nKG1fZXhlYywgcHJvcC5zdHJpbmcoKSksIG91dFZhbHVlKTsKICAgICAgICAgICAgICAgICBp
ZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbV9leGVjLCBwcm9wKTsK
KyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KG9iamVjdCwgbV9leGVjLCBwcm9wKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KG9iamVjdCwgbV9leGVjLCBw
cm9wLCBmaWx0ZXJlZFZhbHVlLCBzbG90KTsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPnB1dChvYmplY3QsIG1fZXhlYywgcHJvcCwgZmlsdGVyZWRWYWx1ZSwg
c2xvdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3QoKSsrOwogICAgICAgICAgICAg
ICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKQEAgLTczMSw3ICs3MzEsNyBAQCBORVZF
Ul9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1CiAgICAgfQogICAgIEpTT2JqZWN0
KiBmaW5hbEhvbGRlciA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KG1fZXhlYyk7CiAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoZmluYWxIb2xkZXIpOwotICAgIGZpbmFsSG9sZGVyLT5tZXRob2RUYWJs
ZSgpLT5wdXQoZmluYWxIb2xkZXIsIG1fZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVu
dGlmaWVyLCBvdXRWYWx1ZSwgc2xvdCk7CisgICAgZmluYWxIb2xkZXItPm1ldGhvZFRhYmxlKHZt
KS0+cHV0KGZpbmFsSG9sZGVyLCBtX2V4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRp
Zmllciwgb3V0VmFsdWUsIHNsb3QpOwogICAgIHJldHVybiBjYWxsUmV2aXZlcihmaW5hbEhvbGRl
ciwganNFbXB0eVN0cmluZyhtX2V4ZWMpLCBvdXRWYWx1ZSk7CiB9CiAK
</data>
<flag name="review"
          id="314699"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>