<?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>214837</bug_id>
          
          <creation_ts>2020-07-27 11:07:03 -0700</creation_ts>
          <short_desc>ASSERTION FAILED: isSymbol() in Source/JavaScriptCore/runtime/JSCell.cpp(188)</short_desc>
          <delta_ts>2020-07-28 09:38:41 -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>Linux</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>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>wmrabb</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>product-security</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1675314</commentid>
    <comment_count>0</comment_count>
      <attachid>405296</attachid>
    <who name="">wmrabb</who>
    <bug_when>2020-07-27 11:07:03 -0700</bug_when>
    <thetext>Created attachment 405296
The JS file that causes a crash in the built JSC binary

I&apos;ve attached the JS file that causes a crash on an asan-enabled JavaScriptCore binary. Here is how I built the binary (note: the commit hash for the version of WebKit I used is 3215a5ce92987ec8184b9133114e9f8213ae43ab):
=====================
git clone git://git.webkit.org/WebKit.git
cd WebKit
Tools/Scripts/set-webkit-configuration --asan --debug
Tools/Scripts/build-webkit --debug --jsc-only
=====================

Here is the output of JSC: 
=====================
ASSERTION FAILED: isSymbol()
../../Source/JavaScriptCore/runtime/JSCell.cpp(188) : JSC::JSObject* JSC::JSCell::toObjectSlow(JSC::JSGlobalObject*) const
Aborted
=====================

This is the function where it crashes (the arrow denotes the exact line):
=====================
JSObject* JSCell::toObjectSlow(JSGlobalObject* globalObject) const
{
    Integrity::auditStructureID(globalObject-&gt;vm(), structureID());
    ASSERT(!isObject());
    if (isString())
        return static_cast&lt;const JSString*&gt;(this)-&gt;toObject(globalObject);
    if (isHeapBigInt())
        return static_cast&lt;const JSBigInt*&gt;(this)-&gt;toObject(globalObject);
    =====&gt; ASSERT(isSymbol());
    return static_cast&lt;const Symbol*&gt;(this)-&gt;toObject(globalObject);
}
=====================</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675315</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-27 11:07:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/66171782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675497</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-27 19:04:19 -0700</bug_when>
    <thetext>This is not a real bug.  The test was iterating over special properties in the jsc shell that are only for testing use.  This scenario cannot manifest in any productized version of JSC because these special test properties will not be present.

I&apos;ll put together a patch to make all the special test properties non-enumerable so that they will stop tripping up people who doing blind enumeration on the jsc shell&apos;s test global object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675508</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-27 20:44:10 -0700</bug_when>
    <thetext>Thanks for this report.  I will upload a patch to mitigate this issue shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675509</commentid>
    <comment_count>4</comment_count>
      <attachid>405339</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-27 20:44:52 -0700</bug_when>
    <thetext>Created attachment 405339
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675628</commentid>
    <comment_count>5</comment_count>
      <attachid>405339</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-28 09:13:03 -0700</bug_when>
    <thetext>Comment on attachment 405339
proposed patch.

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

&gt; Source/JavaScriptCore/jsc.cpp:477
&gt; +    static constexpr unsigned DontEnum = 0 | PropertyAttribute::DontEnum;

What is the purpose of the &quot;0 |&quot; here? Is it a way to convert an enumeration value to an integer? Why is it better than static_cast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675638</commentid>
    <comment_count>6</comment_count>
      <attachid>405339</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-28 09:21:08 -0700</bug_when>
    <thetext>Comment on attachment 405339
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/jsc.cpp:477
&gt;&gt; +    static constexpr unsigned DontEnum = 0 | PropertyAttribute::DontEnum;
&gt; 
&gt; What is the purpose of the &quot;0 |&quot; here? Is it a way to convert an enumeration value to an integer? Why is it better than static_cast?

Yes, it&apos;s for converting the enumeration into an integer.  I chose it because it&apos;s less verbose than a static_cast&lt;unsigned&gt; cast.  It&apos;s better in my eyes because it concisely expresses the idea, but &quot;better&quot; here is subjective.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675642</commentid>
    <comment_count>7</comment_count>
      <attachid>405339</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-28 09:29:37 -0700</bug_when>
    <thetext>Comment on attachment 405339
proposed patch.

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

&gt;&gt;&gt; Source/JavaScriptCore/jsc.cpp:477
&gt;&gt;&gt; +    static constexpr unsigned DontEnum = 0 | PropertyAttribute::DontEnum;
&gt;&gt; 
&gt;&gt; What is the purpose of the &quot;0 |&quot; here? Is it a way to convert an enumeration value to an integer? Why is it better than static_cast?
&gt; 
&gt; Yes, it&apos;s for converting the enumeration into an integer.  I chose it because it&apos;s less verbose than a static_cast&lt;unsigned&gt; cast.  It&apos;s better in my eyes because it concisely expresses the idea, but &quot;better&quot; here is subjective.

It’s oblique. Prettier and more elegant if you understand it, but no connotation of &quot;converting type&quot; unless you happen to know the idiom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675647</commentid>
    <comment_count>8</comment_count>
      <attachid>405339</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-28 09:35:42 -0700</bug_when>
    <thetext>Comment on attachment 405339
proposed patch.

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/jsc.cpp:477
&gt;&gt;&gt;&gt; +    static constexpr unsigned DontEnum = 0 | PropertyAttribute::DontEnum;
&gt;&gt;&gt; 
&gt;&gt;&gt; What is the purpose of the &quot;0 |&quot; here? Is it a way to convert an enumeration value to an integer? Why is it better than static_cast?
&gt;&gt; 
&gt;&gt; Yes, it&apos;s for converting the enumeration into an integer.  I chose it because it&apos;s less verbose than a static_cast&lt;unsigned&gt; cast.  It&apos;s better in my eyes because it concisely expresses the idea, but &quot;better&quot; here is subjective.
&gt; 
&gt; It’s oblique. Prettier and more elegant if you understand it, but no connotation of &quot;converting type&quot; unless you happen to know the idiom.

There are places where we set more than one attribute value using enums (e.g. PropertyAttribute::DontEnum | PropertyAttribute::DontDelete).  In those places, we also don&apos;t do the static_cast, and arguably, one would also have to understand the same idiom to understand why it works.  I think we should adopt this idiom.  Also, it&apos;s a very common idiom for &quot;converting to integer&quot; in JS code.  Given that this is JSC, the idiom should not be that foreign.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675650</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-28 09:38:40 -0700</bug_when>
    <thetext>Committed r264991: &lt;https://trac.webkit.org/changeset/264991&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405339.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>405296</attachid>
            <date>2020-07-27 11:07:03 -0700</date>
            <delta_ts>2020-07-27 11:07:03 -0700</delta_ts>
            <desc>The JS file that causes a crash in the built JSC binary</desc>
            <filename>testcase.js</filename>
            <type>text/javascript</type>
            <size>230</size>
            <attacher>wmrabb</attacher>
            
              <data encoding="base64">ZnVuY3Rpb24gdjAodjEpew0KICAgICAgICBmb3IodmFyIHYyIGluIHYxKXsNCiAgICAgICAgICAg
ICAgICBmb3IodmFyIHYzIGluIHYxW3YyXSl7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9
DQp9DQp2YXIgdjQgPSAoZnVuY3Rpb24gKCl7DQogICAgICAgIGZvcih2YXIgdjEgaW4gdGhpcyl7
DQogICAgICAgICAgICAgICAgdjAodGhpc1t2MV0pOw0KICAgICAgICB9DQp9KTsNCnY0KCdsY2wn
KTs=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405339</attachid>
            <date>2020-07-27 20:44:52 -0700</date>
            <delta_ts>2020-07-28 09:38:41 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-214837.patch</filename>
            <type>text/plain</type>
            <size>7568</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjQ5NjIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBpc1N5bWJvbCgpIGluIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAoMTg4KQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0ODM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvanNjLXNoZWxsLXRlc3QtcHJvcGVy
dGllcy1zaG91bGQtbm90LWJlLWVudW1lcmFibGUuanM6IEFkZGVkLgorCiAyMDIwLTA3LTI1ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRlc3Qy
NjIKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2pzYy1zaGVsbC10ZXN0LXByb3BlcnRpZXMtc2hvdWxk
LW5vdC1iZS1lbnVtZXJhYmxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2pzYy1z
aGVsbC10ZXN0LXByb3BlcnRpZXMtc2hvdWxkLW5vdC1iZS1lbnVtZXJhYmxlLmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2pzYy1zaGVsbC10ZXN0LXByb3BlcnRpZXMtc2hvdWxk
LW5vdC1iZS1lbnVtZXJhYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKKy8v
QCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGJhcihvKSB7CisgICAgZm9yICh2YXIgeCBpbiBvKSB7
CisgICAgICAgIGZvcih2YXIgeSBpbiBvW3hdKSB7IH0KKyAgICB9Cit9CisKK3ZhciBmb28gPSAo
ZnVuY3Rpb24gKCkgeworICAgIGZvciAodmFyIHByb3AgaW4gdGhpcykgeworICAgICAgICBiYXIo
dGhpc1twcm9wXSk7CisgICAgfQorfSk7CisKK2ZvbygpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQ5MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDctMjcgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGlzU3lt
Ym9sKCkgaW4gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCgxODgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ4MzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaXNzdWUg
Zm91bmQgYnkgdGhpcyBidWcgd2FzIHRoYXQganNjIHNoZWxsIHRlc3QgcHJvcGVydGllcyB3ZXJl
IGVudW1lcmFibGUuCisgICAgICAgIFRoZXNlIHByb3BlcnRpZXMgYXJlIG9ubHkgbWVhbnQgZm9y
IHRlc3QgZGV2ZWxvcG1lbnQgdXNlLiAgVGhleSB3aWxsIG5ldmVyIGJlCisgICAgICAgIHByZXNl
bnQgaW4gYSBwcm9kdWN0aXplZCBKYXZhU2NyaXB0IGVudmlyb25tZW50LgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaGVscHMgcmVkdWNlIHRoZSBjaGFuZ2Ugb2YgdXNlcnMgb2YgdGhlIGpzYyBzaGVs
bCB0cmlwcGluZyB1cCBvbiB0aGVzZQorICAgICAgICB0ZXN0IHByb3BlcnRpZXMgd2hlbiBlbnVt
ZXJhdGluZyB0aGUgZ2xvYmFsIG9iamVjdC4KKworICAgICAgICAqIGpzYy5jcHA6CisKIDIwMjAt
MDctMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIHBsdWdpbkVs
ZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoKSBzaG91bGQgc3VwcG9ydCBWTUlucXVpcnkg
cmVxdWVzdHMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjY0OTI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NCw2ICs0
NzQsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEdsb2JhbE9iamVjdChWTSYsIFN0cnVjdHVy
ZSopOwogCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBEb250RW51bSA9IDAgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW07CisKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKQEAgLTUyMSwxMiArNTIzLDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2xlYXJTYW1wbGluZ0ZsYWdzIiwgZnVuY3Rpb25DbGVhclNh
bXBsaW5nRmxhZ3MsIDEpOwogI2VuZGlmCiAKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJPU1JFeGl0IiksIDAsIGZ1
bmN0aW9uVW5kZWZpbmVkMSwgT1NSRXhpdEludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImlzRmluYWxUaWVy
IiksIDAsIGZ1bmN0aW9uRmFsc2UsIElzRmluYWxUaWVySW50cmluc2ljLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJl
ZGljdEludDMyIiksIDAsIGZ1bmN0aW9uVW5kZWZpbmVkMiwgU2V0SW50MzJIZWFwUHJlZGljdGlv
bkludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImlzSW50MzIiKSwgMCwgZnVuY3Rpb25Jc0ludDMyLCBDaGVj
a0ludDMySW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaXNQdXJlTmFOIiksIDAsIGZ1bmN0aW9uSXNQdXJl
TmFOLCBDaGVja0ludDMySW50cmluc2ljLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlhdEludDUyIiksIDAsIGZ1bmN0
aW9uSWRlbnRpdHksIEZpYXRJbnQ1MkludHJpbnNpYywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbih2bSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIk9TUkV4aXQiKSwgMCwg
ZnVuY3Rpb25VbmRlZmluZWQxLCBPU1JFeGl0SW50cmluc2ljLCBEb250RW51bSk7CisgICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiaXNGaW5hbFRpZXIiKSwgMCwgZnVuY3Rpb25GYWxzZSwgSXNGaW5hbFRpZXJJbnRyaW5z
aWMsIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcmVkaWN0SW50MzIiKSwgMCwgZnVuY3Rpb25V
bmRlZmluZWQyLCBTZXRJbnQzMkhlYXBQcmVkaWN0aW9uSW50cmluc2ljLCBEb250RW51bSk7Cisg
ICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiaXNJbnQzMiIpLCAwLCBmdW5jdGlvbklzSW50MzIsIENoZWNrSW50MzJJbnRy
aW5zaWMsIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRo
aXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpc1B1cmVOYU4iKSwgMCwgZnVuY3Rpb25J
c1B1cmVOYU4sIENoZWNrSW50MzJJbnRyaW5zaWMsIERvbnRFbnVtKTsKKyAgICAgICAgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJm
aWF0SW50NTIiKSwgMCwgZnVuY3Rpb25JZGVudGl0eSwgRmlhdEludDUySW50cmluc2ljLCBEb250
RW51bSk7CiAgICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImVmZmVjdGZ1bDQyIiwg
ZnVuY3Rpb25FZmZlY3RmdWw0MiwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAibWFrZU1h
c3F1ZXJhZGVyIiwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIsIDApOwpAQCAtNTgyLDIyICs1ODQs
MjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1w
dHlBcnJheSh0aGlzLCBudWxscHRyKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIGFycmF5LT5wdXREaXJl
Y3RJbmRleCh0aGlzLCBpLCBqc1N0cmluZyh2bSwgYXJndW1lbnRzW2ldKSk7Ci0gICAgICAgICAg
ICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJhcmd1bWVudHMiKSwg
YXJyYXkpOworICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiYXJndW1lbnRzIiksIGFycmF5LCBEb250RW51bSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjb25zb2xlIiksIGpz
VW5kZWZpbmVkKCkpOworICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjb25zb2xlIiksIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtKTsKICAgICAgICAgCiAg
ICAgICAgIFN0cnVjdHVyZSogcGxhaW5PYmplY3RTdHJ1Y3R1cmUgPSBKU0ZpbmFsT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG9iamVjdFByb3RvdHlwZSgpLCAwKTsKICAgICAgICAg
CiAgICAgICAgIEpTT2JqZWN0KiBkb2xsYXIgPSBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUodm0sIHBs
YWluT2JqZWN0U3RydWN0dXJlKTsKLSAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiJCIpLCBkb2xsYXIpOwotICAgICAgICBwdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICIkMjYyIiksIGRvbGxhcik7CisgICAgICAgIHB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIiQiKSwgZG9sbGFyLCBEb250RW51bSk7
CisgICAgICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIiQyNjIi
KSwgZG9sbGFyLCBEb250RW51bSk7CiAgICAgICAgIAogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ZG9sbGFyLCAiY3JlYXRlUmVhbG0iLCBmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtLCAwKTsKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImRldGFjaEFycmF5QnVmZmVyIiwgZnVuY3Rp
b25UcmFuc2ZlckFycmF5QnVmZmVyLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxh
ciwgImV2YWxTY3JpcHQiLCBmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQsIDEpOwogICAgICAgICAK
LSAgICAgICAgZG9sbGFyLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJnbG9iYWwiKSwgdGhpcyk7CisgICAgICAgIGRvbGxhci0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZ2xvYmFsIiksIHRoaXMsIERvbnRFbnVtKTsKICAgICAgICAg
ZG9sbGFyLT5wdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIklzSFRNTEREQSIpLAogICAgICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sIFtdKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25NYWtlTWFzcXVl
cmFkZXIoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKQEAgLTYwNiw3ICs2MDgsNyBAQCBwcml2YXRl
OgogICAgICAgICApOwogCiAgICAgICAgIEpTT2JqZWN0KiBhZ2VudCA9IEpTRmluYWxPYmplY3Q6
OmNyZWF0ZSh2bSwgcGxhaW5PYmplY3RTdHJ1Y3R1cmUpOwotICAgICAgICBkb2xsYXItPnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFnZW50IiksIGFnZW50KTsKKyAg
ICAgICAgZG9sbGFyLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJh
Z2VudCIpLCBhZ2VudCwgRG9udEVudW0pOwogICAgICAgICAKICAgICAgICAgLy8gVGhlIHRlc3Qy
NjIgSU5URVJQUkVUSU5HLm1kIGRvY3VtZW50IHNheXMgdGhhdCBzb21lIG9mIHRoZXNlIGZ1bmN0
aW9ucyBhcmUganVzdCBpbiB0aGUgbWFpbgogICAgICAgICAvLyB0aHJlYWQgYW5kIHNvbWUgYXJl
IGluIHRoZSBvdGhlciB0aHJlYWRzLiBXZSBqdXN0IHB1dCB0aGVtIGluIGFsbCB0aHJlYWRzLgpA
QCAtNjM2LDcgKzYzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRGdW5jdGlvbihWTSYgdm0s
IEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0
aW9uLCB1bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBuYW1lKTsKLSAgICAgICAgb2JqZWN0
LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
YXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbikpOworICAgICAgICBvYmpl
Y3QtPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uKSwgRG9udEVudW0pOwog
ICAgIH0KIAogICAgIHZvaWQgYWRkRnVuY3Rpb24oVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>