<?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>213524</bug_id>
          
          <creation_ts>2020-06-23 10:49:42 -0700</creation_ts>
          <short_desc>Handle string overflow in DFG graph dump while validating AI.</short_desc>
          <delta_ts>2020-06-23 11:49:53 -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 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</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>1665445</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-23 10:49:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/64635620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665447</commentid>
    <comment_count>1</comment_count>
      <attachid>402569</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-23 10:56:49 -0700</bug_when>
    <thetext>Created attachment 402569
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665458</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-23 11:16:26 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r263405: &lt;http://trac.webkit.org/r263405&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665461</commentid>
    <comment_count>3</comment_count>
      <attachid>402569</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-23 11:22:41 -0700</bug_when>
    <thetext>Comment on attachment 402569
proposed patch.

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:563
&gt; +            auto expectedString = out.tryToString();
&gt; +            m_graphDump = expectedString ? expectedString.value() : String(&quot;&lt;out of memory while dumping graph&gt;&quot;_s);

I would have written this using valueOr. I think it possibly be this one-liner:

    m_graphDump = out.tryToString().valueOr(&quot;&lt;out of memory while dumping graph&gt;&quot;_s);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665468</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-23 11:44:07 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 402569 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=402569&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:563
&gt; &gt; +            auto expectedString = out.tryToString();
&gt; &gt; +            m_graphDump = expectedString ? expectedString.value() : String(&quot;&lt;out of memory while dumping graph&gt;&quot;_s);
&gt; 
&gt; I would have written this using valueOr. I think it possibly be this
&gt; one-liner:
&gt; 
&gt;     m_graphDump = out.tryToString().valueOr(&quot;&lt;out of memory while dumping
&gt; graph&gt;&quot;_s);

Nice.  Will apply this (except with Expected::value_or(); there&apos;s no valueOr() method).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665477</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-23 11:49:53 -0700</bug_when>
    <thetext>Landed follow up in r263408: &lt;http://trac.webkit.org/r263408&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402569</attachid>
            <date>2020-06-23 10:56:49 -0700</date>
            <delta_ts>2020-06-23 10:59:26 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-213524.patch</filename>
            <type>text/plain</type>
            <size>4479</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjM0MDMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTA2LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBIYW5kbGUgc3RyaW5nIG92ZXJmbG93IGluIERGRyBncmFwaCBkdW1wIHdo
aWxlIHZhbGlkYXRpbmcgQUkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTM1MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0NjM1NjIwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3N0
cmluZy1vdmVyZmxvdy1pbi1kZmctZ3JhcGgtZHVtcC5qczogQWRkZWQuCisKIDIwMjAtMDYtMjEg
IE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgQXR0
ZW1wdCB0byB1bnNraXAgc3RyZXNzIHRlc3QgYXJyYXktYnVmZmVyLXZpZXctd2F0Y2hwb2ludC1j
YW4tYmUtZmlyZWQtcmVhbGx5LWFkZC1pbi1kZmcuanMgb24gbW9zdCBhcmNoaXRlY3R1cmVzCklu
ZGV4OiBKU1Rlc3RzL3N0cmVzcy9zdHJpbmctb3ZlcmZsb3ctaW4tZGZnLWdyYXBoLWR1bXAuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLW92ZXJmbG93LWluLWRmZy1ncmFw
aC1kdW1wLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3N0cmluZy1vdmVyZmxv
dy1pbi1kZmctZ3JhcGgtZHVtcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACisv
L0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAorLy9AIHJ1bkRlZmF1bHQoIi0tdmFsaWRhdGVBYnN0
cmFjdEludGVycHJldGVyU3RhdGU9MSIsICItLWppdFBvbGljeVNjYWxlPTAiLCAiLS11c2VDb25j
dXJyZW50SklUPTAiKQorCitjb25zdCBzID0gJ0EnLnJlcGVhdCgyKioyNSAqIDUpOworY29uc3Qg
byA9IHt9OworZm9yIChsZXQgaSA9IDA7IGkgPCAxOyBpKyspIHsKKyAgICBvW3NdOworICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgMTA7IGorKykgeworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjYzNDAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA2LTIzICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc3RyaW5nIG92ZXJm
bG93IGluIERGRyBncmFwaCBkdW1wIHdoaWxlIHZhbGlkYXRpbmcgQUkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1MjQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY0NjM1NjIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlTdGF0ZSk6CisKIDIwMjAtMDYtMjMgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIEtleWZyYW1lIGFuaW1h
dGlvbiBkb2Vzbid0ICd0IHNob3cgdXAgaW4gdGhlIEFuaW1hdGlvbnMgdGltZWxpbmUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDI2MzQwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU5LDcgKzU1OSw4IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmICghbV9ncmFwaER1bXApIHsKICAgICAgICAgICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsK
ICAgICAgICAgICAgIG1fZ3JhcGguZHVtcChvdXQpOwotICAgICAgICAgICAgbV9ncmFwaER1bXAg
PSBvdXQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRTdHJpbmcgPSBvdXQu
dHJ5VG9TdHJpbmcoKTsKKyAgICAgICAgICAgIG1fZ3JhcGhEdW1wID0gZXhwZWN0ZWRTdHJpbmcg
PyBleHBlY3RlZFN0cmluZy52YWx1ZSgpIDogU3RyaW5nKCI8b3V0IG9mIG1lbW9yeSB3aGlsZSBk
dW1waW5nIGdyYXBoPiJfcyk7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9w
KCkpIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM0MDMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA2LTIzICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc3RyaW5nIG92ZXJmbG93IGluIERG
RyBncmFwaCBkdW1wIHdoaWxlIHZhbGlkYXRpbmcgQUkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzY0NjM1NjIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nUHJp
bnRTdHJlYW06OnRyeVRvU3RyaW5nKToKKyAgICAgICAgKiB3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aDoKKwogMjAyMC0wNi0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBbGxvdyBidWlsZGluZyBKYXZhU2NyaXB0Q29yZSBNYWMrYXJtNjQgaW4gcHVibGljIFNE
SyBidWlsZApJbmRleDogU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmNwcAkocmV2aXNpb24g
MjYzNDAzKQorKysgU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NSw2ICs5NSwxNCBAQCB2b2lkIFN0cmluZ1ByaW50U3RyZWFtOjpyZXNldCgp
CiAgICAgbV9idWZmZXJbMF0gPSAwOwogfQogCitFeHBlY3RlZDxTdHJpbmcsIFVURjhDb252ZXJz
aW9uRXJyb3I+IFN0cmluZ1ByaW50U3RyZWFtOjp0cnlUb1N0cmluZygpCit7CisgICAgQVNTRVJU
KG1fbmV4dCA9PSBzdHJsZW4obV9idWZmZXIpKTsKKyAgICBpZiAobV9uZXh0ID4gU3RyaW5nOjpN
YXhMZW5ndGgpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChVVEY4Q29udmVyc2lvbkVy
cm9yOjpPdXRPZk1lbW9yeSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgobV9idWZmZXIs
IG1fbmV4dCk7Cit9CisKIFN0cmluZyBTdHJpbmdQcmludFN0cmVhbTo6dG9TdHJpbmcoKQogewog
ICAgIEFTU0VSVChtX25leHQgPT0gc3RybGVuKG1fYnVmZmVyKSk7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0
cmluZ1ByaW50U3RyZWFtLmgJKHJldmlzaW9uIDI2MzQwMykKKysrIFNvdXJjZS9XVEYvd3RmL1N0
cmluZ1ByaW50U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGlj
OgogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0KICAgICAKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyB0b0NTdHJpbmcoKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgRXhwZWN0ZWQ8U3RyaW5nLCBVVEY4Q29udmVyc2lvbkVycm9yPiB0cnlUb1N0cmlu
ZygpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdG9TdHJpbmcoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHRvU3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXQoKTsK
</data>
<flag name="review"
          id="417991"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>