<?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>165025</bug_id>
          
          <creation_ts>2016-11-21 22:53:42 -0800</creation_ts>
          <short_desc>Fix exception scope verification failures in JSONObject.cpp.</short_desc>
          <delta_ts>2016-11-22 11:17:48 -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 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1253347</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-21 22:53:42 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253349</commentid>
    <comment_count>1</comment_count>
      <attachid>295328</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-21 23:02:11 -0800</bug_when>
    <thetext>Created attachment 295328
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253354</commentid>
    <comment_count>2</comment_count>
      <attachid>295328</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-22 01:29:24 -0800</bug_when>
    <thetext>Comment on attachment 295328
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:233
&gt; +    if (UNLIKELY(scope.exception()))

Why not RETURN_IF_EXCEPTION

&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:243
&gt; +        if (UNLIKELY(scope.exception()))

Ditto

&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:278
&gt; +    if ((stringifyResult != StringifySucceeded))

Style: Extra parens

&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:861
&gt; +    auto throwScope = DECLARE_THROW_SCOPE(vm);

Could this be a catch scope instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253404</commentid>
    <comment_count>3</comment_count>
      <attachid>295328</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-22 11:15:17 -0800</bug_when>
    <thetext>Comment on attachment 295328
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:233
&gt;&gt; +    if (UNLIKELY(scope.exception()))
&gt; 
&gt; Why not RETURN_IF_EXCEPTION

Because this is in a constructor, and constructors do not like &quot;return void()&quot;.

&gt;&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:243
&gt;&gt; +        if (UNLIKELY(scope.exception()))
&gt; 
&gt; Ditto

Same.  In a constructor.

&gt;&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:278
&gt;&gt; +    if ((stringifyResult != StringifySucceeded))
&gt; 
&gt; Style: Extra parens

Missing an &quot;UNLIKELY&quot; before the inner ().  Will fix.

&gt;&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:861
&gt;&gt; +    auto throwScope = DECLARE_THROW_SCOPE(vm);
&gt; 
&gt; Could this be a catch scope instead?

I&apos;m not sure.  But at least one client of JSONStringify() (i.e. JSValueCreateJSONString) is expecting it to be able to throw an exception.  I&apos;ll leave it with a ThrowScope for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253406</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-22 11:17:48 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r208966: &lt;http://trac.webkit.org/r208966&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295328</attachid>
            <date>2016-11-21 23:02:11 -0800</date>
            <delta_ts>2016-11-22 01:29:24 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-165025.patch</filename>
            <type>text/plain</type>
            <size>12090</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDE2LTExLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBKU09OT2JqZWN0LmNw
cC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTAy
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVu
dGltZS9KU09OT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2FwKToKKyAgICAgICAgKEpTQzo6
U3RyaW5naWZpZXI6OlN0cmluZ2lmaWVyKToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OnN0
cmluZ2lmeSk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjp0b0pTT04pOgorICAgICAgICAo
SlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgIChKU0M6
OlN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OldhbGtlcjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJzZSk6CisgICAg
ICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAoSlNDOjpKU09OU3Ry
aW5naWZ5KToKKwogMjAxNi0xMS0yMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlZCBhbiBleHRyYSBzcGFjZSBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiBs
aW5lLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5j
cHAJKHJldmlzaW9uIDIwODk1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzOwogICAg
IENhbGxUeXBlIG1fcmVwbGFjZXJDYWxsVHlwZTsKICAgICBDYWxsRGF0YSBtX3JlcGxhY2VyQ2Fs
bERhdGE7Ci0gICAgY29uc3QgU3RyaW5nIG1fZ2FwOworICAgIFN0cmluZyBtX2dhcDsKIAogICAg
IFZlY3RvcjxIb2xkZXIsIDE2LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9ob2xkZXJTdGFjazsK
ICAgICBTdHJpbmcgbV9yZXBlYXRlZEdhcDsKQEAgLTE1OCw4ICsxNTgsMTIgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIHVud3JhcEJveGVkUHJpbWl0aQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBn
YXAoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNwYWNlKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Y29uc3QgdW5zaWduZWQgbWF4R2FwTGVuZ3RoID0gMTA7CiAgICAgc3BhY2UgPSB1bndyYXBCb3hl
ZFByaW1pdGl2ZShleGVjLCBzcGFjZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKIAogICAgIC8vIElmIHRoZSBzcGFjZSB2YWx1ZSBpcyBhIG51bWJlciwgY3JlYXRlIGEg
Z2FwIHN0cmluZyB3aXRoIHRoYXQgbnVtYmVyIG9mIHNwYWNlcy4KICAgICBpZiAoc3BhY2UuaXNO
dW1iZXIoKSkgewpAQCAtMjIxLDEwICsyMjUsMTQgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmaWVy
KEV4ZWNTdGF0ZSogZXhlYwogICAgICwgbV91c2luZ0FycmF5UmVwbGFjZXIoZmFsc2UpCiAgICAg
LCBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzKGV4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3MpCiAgICAgLCBtX3JlcGxhY2VyQ2FsbFR5cGUoQ2FsbFR5cGU6Ok5vbmUpCi0gICAgLCBt
X2dhcChnYXAoZXhlYywgc3BhY2UuZ2V0KCkpKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgbV9nYXAg
PSBnYXAoZXhlYywgc3BhY2UuZ2V0KCkpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9yZXBsYWNlci5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTIzMiw2ICsyNDAsOCBAQCBTdHJpbmdpZmllcjo6U3Ry
aW5naWZpZXIoRXhlY1N0YXRlKiBleGVjCiAgICAgICAgIG1fdXNpbmdBcnJheVJlcGxhY2VyID0g
dHJ1ZTsKICAgICAgICAgSGFuZGxlPEpTT2JqZWN0PiBhcnJheSA9IG1fcmVwbGFjZXIuYXNPYmpl
Y3QoKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmdldChleGVjLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOworICAgICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIEpTVmFsdWUgbmFt
ZSA9IGFycmF5LT5nZXQoZXhlYywgaSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUu
ZXhjZXB0aW9uKCkpKQpAQCAtMjYzLDEwICsyNzMsMTIgQEAgTG9jYWw8VW5rbm93bj4gU3RyaW5n
aWZpZXI6OnN0cmluZ2lmeShIYQogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgSG9s
ZGVyIHJvb3QoSG9sZGVyOjpSb290SG9sZGVyLCB2bSwgb2JqZWN0KTsKLSAgICBpZiAoYXBwZW5k
U3RyaW5naWZpZWRWYWx1ZShyZXN1bHQsIHZhbHVlLmdldCgpLCByb290LCBlbXB0eVByb3BlcnR5
TmFtZSkgIT0gU3RyaW5naWZ5U3VjY2VlZGVkKQorICAgIGF1dG8gc3RyaW5naWZ5UmVzdWx0ID0g
YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShyZXN1bHQsIHZhbHVlLmdldCgpLCByb290LCBlbXB0eVBy
b3BlcnR5TmFtZSk7CisgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAoc3RyaW5naWZ5
UmVzdWx0ICE9IFN0cmluZ2lmeVN1Y2NlZWRlZCkpOworICAgIGlmICgoc3RyaW5naWZ5UmVzdWx0
ICE9IFN0cmluZ2lmeVN1Y2NlZWRlZCkpCiAgICAgICAgIHJldHVybiBMb2NhbDxVbmtub3duPih2
bSwganNVbmRlZmluZWQoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgTG9jYWw8
VW5rbm93bj4odm0sIGpzTnVsbCgpKSk7CiAKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0
dXJuIExvY2FsPFVua25vd24+KHZtLCBqc1N0cmluZyhtX2V4ZWMsIHJlc3VsdC50b1N0cmluZygp
KSk7CiB9CiAKQEAgLTI4MCwxMSArMjkyLDE0IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBTdHJp
bmdpZmllcjo6dG9KU08KICAgICAKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFs
dWUpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChtX2V4
ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnRvSlNPTiwgc2xvdCkpCisgICAgYm9vbCBoYXNQcm9wZXJ0
eSA9IG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KG1fZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+dG9K
U09OLCBzbG90KTsKKyAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFoYXNQcm9wZXJ0
eSk7CisgICAgaWYgKCFoYXNQcm9wZXJ0eSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAgICAg
SlNWYWx1ZSB0b0pTT05GdW5jdGlvbiA9IHNsb3QuZ2V0VmFsdWUobV9leGVjLCB2bS5wcm9wZXJ0
eU5hbWVzLT50b0pTT04pOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBzY29wZS5yZWxl
YXNlKCk7CiAgICAgcmV0dXJuIHRvSlNPTkltcGwodmFsdWUsIHRvSlNPTkZ1bmN0aW9uLCBwcm9w
ZXJ0eU5hbWUpOwogfQogCkBAIC0zODcsNiArNDAyLDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lm
eVJlc3VsdCBTdHJpbmdpZmllcgogICAgIGRvIHsKICAgICAgICAgd2hpbGUgKG1faG9sZGVyU3Rh
Y2subGFzdCgpLmFwcGVuZE5leHRQcm9wZXJ0eSgqdGhpcywgYnVpbGRlcikpCiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBTdHJpbmdpZnlGYWlsZWQpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBTdHJpbmdpZnlGYWlsZWQpOwogICAgICAgICBtX2hv
bGRlclN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9IHdoaWxlICghbV9ob2xkZXJTdGFjay5pc0Vt
cHR5KCkpOwogICAgIHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CkBAIC00NTcsNyArNDczLDkg
QEAgYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcAogICAgICAgICAgICAg
aWYgKG1faXNKU0FycmF5KQogICAgICAgICAgICAgICAgIG1fc2l6ZSA9IGFzQXJyYXkobV9vYmpl
Y3QuZ2V0KCkpLT5sZW5ndGgoKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IG1fc2l6ZSA9IG1fb2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKS50
b1VJbnQzMihleGVjKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9vYmplY3Qt
PmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOworICAgICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBtX3NpemUg
PSB2YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnWycpOwpAQCAtNTM2LDYgKzU1NCw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6
YXBwZW5kTmV4dFByb3AKICAgICAgICAgLy8gQXBwZW5kIHRoZSBzdHJpbmdpZmllZCB2YWx1ZS4K
ICAgICAgICAgc3RyaW5naWZ5UmVzdWx0ID0gc3RyaW5naWZpZXIuYXBwZW5kU3RyaW5naWZpZWRW
YWx1ZShidWlsZGVyLCB2YWx1ZSwgKnRoaXMsIHByb3BlcnR5TmFtZSk7CiAgICAgfQorICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIC8vIEZyb20gdGhpcyBwb2lu
dCBvbiwgbm8gYWNjZXNzIHRvIHRoZSB0aGlzIHBvaW50ZXIgb3IgdG8gYW55IG1lbWJlcnMsIGJl
Y2F1c2UgdGhlCiAgICAgLy8gSG9sZGVyIG9iamVjdCBtYXkgaGF2ZSBtb3ZlZCBpZiB0aGUgY2Fs
bCB0byBzdHJpbmdpZnkgcHVzaGVkIGEgbmV3IEhvbGRlciBvbnRvCkBAIC02NTMsNyArNjcyLDcg
QEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdQogICAgICAgICAgICAg
ICAgICAgICAgICAgaW5WYWx1ZSA9IHNsb3QuZ2V0VmFsdWUobV9leGVjLCBpbmRleCk7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGluVmFsdWUgPSBq
c1VuZGVmaW5lZCgpOwotICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgaWYgKGluVmFsdWUuaXNPYmplY3QoKSkgewpAQCAtNjY2LDExICs2ODUs
MTIgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdQogICAgICAgICAg
ICAgY2FzZSBBcnJheUVuZFZpc2l0TWVtYmVyOiB7CiAgICAgICAgICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBhcnJheVN0YWNrLnBlZWsoKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRl
cmVkVmFsdWUgPSBjYWxsUmV2aXZlcihhcnJheSwganNTdHJpbmcobV9leGVjLCBTdHJpbmc6Om51
bWJlcihpbmRleFN0YWNrLmxhc3QoKSkpLCBvdXRWYWx1ZSk7CisgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgICAgICBpZiAoZmlsdGVy
ZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgICAgICAgICBhcnJheS0+bWV0aG9k
VGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYXJyYXksIG1fZXhlYywgaW5kZXhTdGFj
ay5sYXN0KCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYXJy
YXktPnB1dERpcmVjdEluZGV4KG1fZXhlYywgaW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFs
dWUsIDAsIFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwotICAgICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNr
Lmxhc3QoKSsrOwogICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFZpc2l0TWVtYmVyOwog
ICAgICAgICAgICAgfQpAQCAtNjg2LDcgKzcwNiw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdh
bGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmFwcGVuZCgwKTsK
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheSht
X2V4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpKTsKICAgICAgICAgICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywg
cHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBvYmplY3RTdGFydFZpc2l0TWVtYmVyOgogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CkBA
IC03MDgsNyArNzI4LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFs
dQogICAgICAgICAgICAgICAgICAgICBpblZhbHVlID0ganNVbmRlZmluZWQoKTsKIAogICAgICAg
ICAgICAgICAgIC8vIFRoZSBob2xkZXIgbWF5IGJlIG1vZGlmaWVkIGJ5IHRoZSByZXZpdmVyIGZ1
bmN0aW9uIHNvIGFueSBsb29rdXAgbWF5IHRocm93Ci0gICAgICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgICAgICAgICAgaWYgKGluVmFsdWUuaXNP
YmplY3QoKSkgewogICAgICAgICAgICAgICAgICAgICBzdGF0ZVN0YWNrLmFwcGVuZChPYmplY3RF
bmRWaXNpdE1lbWJlcik7CkBAIC03MjIsMTEgKzc0MiwxMiBAQCBORVZFUl9JTkxJTkUgSlNWYWx1
ZSBXYWxrZXI6OndhbGsoSlNWYWx1CiAgICAgICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wID0g
cHJvcGVydHlTdGFjay5sYXN0KClbaW5kZXhTdGFjay5sYXN0KCldOwogICAgICAgICAgICAgICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBm
aWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIob2JqZWN0LCBqc1N0cmluZyhtX2V4ZWMsIHByb3Au
c3RyaW5nKCkpLCBvdXRWYWx1ZSk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVm
aW5lZCgpKQogICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHkob2JqZWN0LCBtX2V4ZWMsIHByb3ApOwogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChvYmplY3Qs
IG1fZXhlYywgcHJvcCwgZmlsdGVyZWRWYWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2su
bGFzdCgpKys7CiAgICAgICAgICAgICAgICAgZ290byBvYmplY3RTdGFydFZpc2l0TWVtYmVyOwog
ICAgICAgICAgICAgfQpAQCAtNzUwLDYgKzc3MSw4IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdh
bGtlcjo6d2FsayhKU1ZhbHUKICAgICBKU09iamVjdCogZmluYWxIb2xkZXIgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChtX2V4ZWMpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZpbmFsSG9sZGVy
KTsKICAgICBmaW5hbEhvbGRlci0+bWV0aG9kVGFibGUodm0pLT5wdXQoZmluYWxIb2xkZXIsIG1f
ZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCBvdXRWYWx1ZSwgc2xvdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgcmV0dXJuIGNhbGxSZXZpdmVyKGZpbmFsSG9sZGVyLCBqc0VtcHR5U3RyaW5nKG1f
ZXhlYyksIG91dFZhbHVlKTsKIH0KIApAQCAtNzYyLDcgKzc4NSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnUKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQo
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJKU09OLnBhcnNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJh
bWV0ZXIiKSkpOwogICAgIGF1dG8gdmlld1dpdGhTdHJpbmcgPSBleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKCpleGVjKTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIFN0cmluZ1ZpZXcgdmlldyA9IHZp
ZXdXaXRoU3RyaW5nLnZpZXc7CiAKICAgICBKU1ZhbHVlIHVuZmlsdGVyZWQ7CkBAIC03NzAsMTMg
Kzc5MywxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1CiAgICAg
aWYgKHZpZXcuaXM4Qml0KCkpIHsKICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4ganNvblBh
cnNlcihleGVjLCB2aWV3LmNoYXJhY3RlcnM4KCksIHZpZXcubGVuZ3RoKCksIFN0cmljdEpTT04p
OwogICAgICAgICB1bmZpbHRlcmVkID0ganNvblBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKLSAg
ICAgICAgaWYgKCF1bmZpbHRlcmVkKQorICAgICAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigp
IHx8ICF1bmZpbHRlcmVkKTsKKyAgICAgICAgaWYgKCF1bmZpbHRlcmVkKSB7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNl
ci5nZXRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAg
TGl0ZXJhbFBhcnNlcjxVQ2hhcj4ganNvblBhcnNlcihleGVjLCB2aWV3LmNoYXJhY3RlcnMxNigp
LCB2aWV3Lmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKICAgICAgICAgdW5maWx0ZXJlZCA9IGpzb25Q
YXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7Ci0gICAgICAgIGlmICghdW5maWx0ZXJlZCkKKyAgICAg
ICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhdW5maWx0ZXJlZCk7CisgICAgICAgIGlm
ICghdW5maWx0ZXJlZCkgeworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKQEAg
LTc4Nyw2ICs4MTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1
CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEp
OwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh1bmZpbHRlcmVkKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShXYWxrZXIoZXhlYywgTG9jYWw8SlNPYmplY3Q+KHZtLCBhc09i
amVjdChmdW5jdGlvbikpLCBjYWxsVHlwZSwgY2FsbERhdGEpLndhbGsodW5maWx0ZXJlZCkpOwog
fQogCkBAIC04MDIsNyArODMyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNP
TlByb3RvRnUKICAgICBMb2NhbDxVbmtub3duPiB2YWx1ZSh2bSwgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIExvY2FsPFVua25vd24+IHJlcGxhY2VyKHZtLCBleGVjLT5hcmd1bWVu
dCgxKSk7CiAgICAgTG9jYWw8VW5rbm93bj4gc3BhY2Uodm0sIGV4ZWMtPmFyZ3VtZW50KDIpKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IFN0cmluZ2lmaWVyKGV4ZWMsIHJlcGxhY2VyLCBzcGFjZSku
c3RyaW5naWZ5KHZhbHVlKS5nZXQoKTsKKyAgICBTdHJpbmdpZmllciBzdHJpbmdpZmllcihleGVj
LCByZXBsYWNlciwgc3BhY2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gc3RyaW5naWZpZXIu
c3RyaW5naWZ5KHZhbHVlKS5nZXQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CiAKQEAgLTgyNCw5ICs4NTcsMTMgQEAgSlNWYWx1ZSBKU09OUGFyc2UoRXhlY1N0YXRl
KiBleGVjLCBjb25zdAogCiBTdHJpbmcgSlNPTlN0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGluZGVudCkKIHsKLSAgICBMb2NhbFNjb3BlIHNjb3BlKGV4
ZWMtPnZtKCkpOwotICAgIExvY2FsPFVua25vd24+IHJlc3VsdCA9IFN0cmluZ2lmaWVyKGV4ZWMs
IExvY2FsPFVua25vd24+KGV4ZWMtPnZtKCksIGpzTnVsbCgpKSwgTG9jYWw8VW5rbm93bj4oZXhl
Yy0+dm0oKSwganNOdW1iZXIoaW5kZW50KSkpLnN0cmluZ2lmeShMb2NhbDxVbmtub3duPihleGVj
LT52bSgpLCB2YWx1ZSkpOwotICAgIGlmIChyZXN1bHQuaXNVbmRlZmluZWRPck51bGwoKSkKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIExvY2FsU2NvcGUgc2NvcGUodm0pOworICAgIFN0cmluZ2lmaWVy
IHN0cmluZ2lmaWVyKGV4ZWMsIExvY2FsPFVua25vd24+KHZtLCBqc051bGwoKSksIExvY2FsPFVu
a25vd24+KHZtLCBqc051bWJlcihpbmRlbnQpKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOworICAgIExvY2FsPFVua25vd24+IHJlc3VsdCA9IHN0cmluZ2lmaWVy
LnN0cmluZ2lmeShMb2NhbDxVbmtub3duPih2bSwgdmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFko
dGhyb3dTY29wZS5leGNlcHRpb24oKSkgfHwgcmVzdWx0LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gcmVzdWx0LmdldFN0cmluZyhleGVj
KTsKIH0K
</data>
<flag name="review"
          id="317946"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>