<?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>144649</bug_id>
          
          <creation_ts>2015-05-05 17:30:30 -0700</creation_ts>
          <short_desc>[Content Extensions] Limit NFA size</short_desc>
          <delta_ts>2015-07-06 10:45:15 -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>WebCore Misc.</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091959</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 17:30:30 -0700</bug_when>
    <thetext>Right now we’re making an NFA with 249069 nodes.  The NFA uses 100MB of memory.  The DFA uses 241MB of memory.  This is bad.
Limiting the NFA size to 50000 splits this into 7 NFAs.  The largest NFA uses 27MB of memory.  The largest DFA uses 44 MB of memory.  
We could tune the max size later, but we really need a max size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091962</commentid>
    <comment_count>1</comment_count>
      <attachid>252424</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 17:37:27 -0700</bug_when>
    <thetext>Created attachment 252424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091972</commentid>
    <comment_count>2</comment_count>
      <attachid>252427</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 18:05:53 -0700</bug_when>
    <thetext>Created attachment 252427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091975</commentid>
    <comment_count>3</comment_count>
      <attachid>252427</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-05-05 18:11:59 -0700</bug_when>
    <thetext>Comment on attachment 252427
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091976</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-05 18:14:27 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/183845</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252424</attachid>
            <date>2015-05-05 17:37:27 -0700</date>
            <delta_ts>2015-05-05 18:05:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144649-20150505173611.patch</filename>
            <type>text/plain</type>
            <size>2639</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mzg0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA1LTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gTGltaXQgTkZBIHNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVy
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2VuZXJhdGVORkFG
b3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21iaW5l
ZFVSTEZpbHRlcnM6OnByb2Nlc3NORkFzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisKIDIwMTUtMDUtMDUgIFJvZ2VyIEZvbmcgIDxy
b2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBTb21lIGFzc2VydGlv
biBmYWlsdXJlcyBpbiBjb21wb3NpdGluZyBjb2RlIGFmdGVyIHIxODM4MjAuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmls
dGVycy5jcHAJKHJldmlzaW9uIDE4MzgzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw4ICsx
NzksMTIgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVORkFGb3JTdWJ0cmVlKE5GQSYgbgogICAgICAg
ICBpZiAoZWRnZUluZGV4IDwgdmVydGV4LmVkZ2VzLnNpemUoKSkgewogICAgICAgICAgICAgYXV0
byYgZWRnZSA9IHZlcnRleC5lZGdlc1tlZGdlSW5kZXhdOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICAvLyBRdWFudGlmaWVkIGVkZ2VzIGluIHRoZSBzdWJ0cmVlIHdpbGwgYmUgYSBwYXJ0IG9m
IGFub3RoZXIgTkZBLgotICAgICAgICAgICAgaWYgKCFlZGdlLnRlcm0uaGFzRml4ZWRMZW5ndGgo
KSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIHR1bmVkLiBNb3JlIE5GQXMg
dGFrZSBsb25nZXIgdG8gaW50ZXJwcmV0LCBmZXdlciB1c2UgbW9yZSBtZW1vcnkgYW5kIHRpbWUg
dG8gY29tcGlsZS4KKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIG1heE5GQVNpemUgPSA1MDAw
MDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gUXVhbnRpZmllZCBlZGdlcyBpbiB0aGUg
c3VidHJlZSB3aWxsIGJlIGEgcGFydCBvZiBhbm90aGVyIE5GQSwgb3IgY2xlYW4gdXAgYW5kIHJl
dHVybiBpZiB0aGlzIE5GQSBpcyB0b28gYmlnLgorICAgICAgICAgICAgaWYgKCFlZGdlLnRlcm0u
aGFzRml4ZWRMZW5ndGgoKQorICAgICAgICAgICAgICAgIHx8IG5mYS5ncmFwaFNpemUoKSA+IG1h
eE5GQVNpemUpIHsKICAgICAgICAgICAgICAgICBzdGFjay5sYXN0KCkuZWRnZUluZGV4Kys7CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25Db21waWxlci5jcHAJKHJldmlzaW9uIDE4MzgzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3MCw3ICsyNzAsNiBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRl
bnRFCiAjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1BFUkZPUk1BTkNFX1JFUE9SVElORwogICAgIGRv
dWJsZSB0b3RhbE5GQVRvQnl0ZUNvZGVCdWlsZFRpbWVFbmQgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKICAgICBkYXRhTG9nRigiICAgIFRpbWUgc3BlbnQgYnVpbGRpbmcgYW5kIGNv
bXBpbGluZyB0aGUgREZBczogJWZcbiIsICh0b3RhbE5GQVRvQnl0ZUNvZGVCdWlsZFRpbWVFbmQg
LSB0b3RhbE5GQVRvQnl0ZUNvZGVCdWlsZFRpbWVTdGFydCkpOwotICAgIGRhdGFMb2dGKCIgICAg
Qnl0ZWNvZGUgc2l6ZSAlenVcbiIsIGJ5dGVjb2RlLnNpemUoKSk7CiAjZW5kaWYKIAogICAgIGNs
aWVudC5maW5hbGl6ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252427</attachid>
            <date>2015-05-05 18:05:53 -0700</date>
            <delta_ts>2015-05-05 18:11:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144649-20150505180438.patch</filename>
            <type>text/plain</type>
            <size>3399</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mzg0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA1LTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gTGltaXQgTkZBIHNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVy
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2VuZXJhdGVORkFG
b3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21iaW5l
ZFVSTEZpbHRlcnM6OnByb2Nlc3NORkFzKToKKyAgICAgICAgQWRkIGEgbWF4aW11bSBORkEgc2l6
ZSB0byBlbnN1cmUgdGhhdCB3ZSBkbyBub3QgdXNlIHRvbyBtdWNoIG1lbW9yeSB3aGVuIGNvbXBp
bGluZy4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGls
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxl
TGlzdCk6CisgICAgICAgIFJlbW92ZSBkZWJ1Z2dpbmcgY29kZSB0aGF0IGRvZXNuJ3QgY29tcGls
ZSBhbnkgbW9yZS4KKwogMjAxNS0wNS0wNSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFNvbWUgYXNzZXJ0aW9uIGZhaWx1cmVzIGluIGNv
bXBvc2l0aW5nIGNvZGUgYWZ0ZXIgcjE4MzgyMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAkocmV2aXNp
b24gMTgzODM4KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRV
UkxGaWx0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDE1ICsxNzAsMjkgQEAgc3RhdGlj
IHZvaWQgZ2VuZXJhdGVORkFGb3JTdWJ0cmVlKE5GQSYgbgogICAgIFZlY3RvcjxBY3RpdmVTdWJ0
cmVlPiBzdGFjazsKICAgICBpZiAoIXJvb3QuZWRnZXMuaXNFbXB0eSgpKQogICAgICAgICBzdGFj
ay5hcHBlbmQoQWN0aXZlU3VidHJlZShyb290LCBuZmFSb290SWQsIDApKTsKKyAgICBib29sIG5m
YVRvb0JpZyA9IGZhbHNlOwogICAgIAogICAgIC8vIEdlbmVyYXRlIGdyYXBocyBmb3IgZWFjaCBz
dWJ0cmVlIHRoYXQgZG9lcyBub3QgY29udGFpbiBhbnkgcXVhbnRpZmllcnMuCiAgICAgd2hpbGUg
KCFzdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgUHJlZml4VHJlZVZlcnRleCYgdmVydGV4ID0g
c3RhY2subGFzdCgpLnZlcnRleDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgZWRnZUluZGV4ID0g
c3RhY2subGFzdCgpLmVkZ2VJbmRleDsKIAorICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUg
dHVuZWQuIE1vcmUgTkZBcyB0YWtlIGxvbmdlciB0byBpbnRlcnByZXQsIGZld2VyIHVzZSBtb3Jl
IG1lbW9yeSBhbmQgdGltZSB0byBjb21waWxlLgorICAgICAgICBjb25zdCB1bnNpZ25lZCBtYXhO
RkFTaXplID0gNTAwMDA7CisgICAgICAgIAorICAgICAgICAvLyBPbmx5IHN0b3AgZ2VuZXJhdGlu
ZyBhbiBORkEgYXQgYSBsZWFmIHRvIGVuc3VyZSB3ZSBoYXZlIGEgY29ycmVjdCBORkEuIFdlIGNv
dWxkIGdvIHNsaWdodGx5IG92ZXIgdGhlIG1heE5GQVNpemUuCisgICAgICAgIGlmICh2ZXJ0ZXgu
ZWRnZXMuaXNFbXB0eSgpICYmIG5mYS5ncmFwaFNpemUoKSA+IG1heE5GQVNpemUpCisgICAgICAg
ICAgICBuZmFUb29CaWcgPSB0cnVlOworICAgICAgICAKICAgICAgICAgaWYgKGVkZ2VJbmRleCA8
IHZlcnRleC5lZGdlcy5zaXplKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGVkZ2UgPSB2ZXJ0ZXgu
ZWRnZXNbZWRnZUluZGV4XTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2xlYW4gdXAg
YW55IHByb2Nlc3NlZCBsZWF2ZXMgYW5kIHJldHVybiBlYXJseSBpZiB3ZSBhcmUgcGFzdCB0aGUg
bWF4TkZBU2l6ZS4KKyAgICAgICAgICAgIGlmIChuZmFUb29CaWcpIHsKKyAgICAgICAgICAgICAg
ICBzdGFjay5sYXN0KCkuZWRnZUluZGV4ID0gc3RhY2subGFzdCgpLnZlcnRleC5lZGdlcy5zaXpl
KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIFF1YW50aWZpZWQgZWRnZXMgaW4gdGhlIHN1YnRyZWUgd2lsbCBi
ZSBhIHBhcnQgb2YgYW5vdGhlciBORkEuCiAgICAgICAgICAgICBpZiAoIWVkZ2UudGVybS5oYXNG
aXhlZExlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgc3RhY2subGFzdCgpLmVkZ2VJbmRleCsr
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bkNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODM4MzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsNyArMjcwLDYgQEAgc3RkOjplcnJvcl9jb2RlIGNv
bXBpbGVSdWxlTGlzdChDb250ZW50RQogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5D
RV9SRVBPUlRJTkcKICAgICBkb3VibGUgdG90YWxORkFUb0J5dGVDb2RlQnVpbGRUaW1lRW5kID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgZGF0YUxvZ0YoIiAgICBUaW1lIHNw
ZW50IGJ1aWxkaW5nIGFuZCBjb21waWxpbmcgdGhlIERGQXM6ICVmXG4iLCAodG90YWxORkFUb0J5
dGVDb2RlQnVpbGRUaW1lRW5kIC0gdG90YWxORkFUb0J5dGVDb2RlQnVpbGRUaW1lU3RhcnQpKTsK
LSAgICBkYXRhTG9nRigiICAgIEJ5dGVjb2RlIHNpemUgJXp1XG4iLCBieXRlY29kZS5zaXplKCkp
OwogI2VuZGlmCiAKICAgICBjbGllbnQuZmluYWxpemUoKTsK
</data>
<flag name="review"
          id="277278"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>