<?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>15456</bug_id>
          
          <creation_ts>2007-10-10 14:07:43 -0700</creation_ts>
          <short_desc>XML parser modifies the document when using foo.innerHtml = &quot;some string&quot;</short_desc>
          <delta_ts>2007-10-21 22:25:25 -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>XML</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Lars Knoll">lars.knoll</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>58249</commentid>
    <comment_count>0</comment_count>
    <who name="Lars Knoll">lars.knoll</who>
    <bug_when>2007-10-10 14:07:43 -0700</bug_when>
    <thetext>The XMLTokenizer.cpp has a constructor that takes a document fragment and parses XML into this fragment (which is used at least for handling innerHtml, maybe other places as well).

While parsing this fragment, the parser calls lots of methods on the document, amongst others finishedParsing(), which can lead to memory corruption when innerHtml is used form within the onload handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58251</commentid>
    <comment_count>1</comment_count>
      <attachid>16617</attachid>
    <who name="Lars Knoll">lars.knoll</who>
    <bug_when>2007-10-10 14:10:56 -0700</bug_when>
    <thetext>Created attachment 16617
Protects some of the calls into the document

This patch fixes the memory corruption seen with LayoutTests/fast/innerHTML/innerHTML-script-tag-crash.xhtml. It does however not clean up all issues, and is untested for builds that use the libxml based parser.

The main issues remaining are things related to XSLT support (see XMLTokenizer.cpp around line 1210).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58252</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-10 14:13:42 -0700</bug_when>
    <thetext>This is a reproducible memory smasher as demonstrated by the valgrind output:
http://paste.lisp.org/display/48987</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58282</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-11 00:54:07 -0700</bug_when>
    <thetext>*** Bug 15455 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58286</commentid>
    <comment_count>4</comment_count>
      <attachid>16624</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-11 01:22:37 -0700</bug_when>
    <thetext>Created attachment 16624
Test case for QXML

After extensive investigation, I have decided that this bug does not affect the libxml based parser.  These changes are not harmful to the libxml based parser, but they are not necessary.  libxml doesn&apos;t set any of the touched methods as handlers during the parseXMLDocumentFragment codepath.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58303</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-10-11 10:14:29 -0700</bug_when>
    <thetext>Has this been landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58365</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-12 05:23:35 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Has this been landed?

Apparently it landed in r26356.

http://trac.webkit.org/projects/webkit/changeset/26356

I don&apos;t see any indication of a review in the ChangeLog, however.  Perhaps the review was given via IRC?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59081</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-21 22:25:25 -0700</bug_when>
    <thetext>This can be closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16617</attachid>
            <date>2007-10-10 14:10:56 -0700</date>
            <delta_ts>2007-10-10 14:10:56 -0700</delta_ts>
            <desc>Protects some of the calls into the document</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>2921</size>
            <attacher name="Lars Knoll">lars.knoll</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAgYi9XZWJDb3JlL2RvbS9Y
TUxUb2tlbml6ZXIuY3BwCmluZGV4IGJiMjBkNzMuLjRiMGU2MmIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL1hNTFRva2VuaXplci5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNw
cApAQCAtNTk4LDEwICs1OTgsMTIgQEAgYm9vbCBYTUxUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgcywgYm9vbCAvKmFwcGVuZERhdGEqLykKICAgICAgICAgICAgICAgICBT
dHJpbmcgdmVyc2lvbiA9IGF0dHJzLmdldCgidmVyc2lvbiIpOwogICAgICAgICAgICAgICAgIFN0
cmluZyBlbmNvZGluZyA9IGF0dHJzLmdldCgiZW5jb2RpbmciKTsKICAgICAgICAgICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb24uaXNFbXB0
eSgpKQotICAgICAgICAgICAgICAgICAgICBtX2RvYy0+c2V0WE1MVmVyc2lvbih2ZXJzaW9uLCBl
Yyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbmNvZGluZy5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgICAgIG1fZG9jLT5zZXRYTUxFbmNvZGluZyhlbmNvZGluZyk7CisgICAgICAgICAgICAg
ICAgaWYgKCFtX3BhcnNpbmdGcmFnbWVudCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXZl
cnNpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9kb2MtPnNldFhNTFZl
cnNpb24odmVyc2lvbiwgZWMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWVuY29kaW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZG9jLT5zZXRYTUxFbmNvZGluZyhl
bmNvZGluZyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIG1fc3RyZWFtLmFkZERhdGEoZGF0YSk7CkBAIC05MjcsMTIgKzkyOSwxNCBAQCB2b2lk
IFhNTFRva2VuaXplcjo6Y29tbWVudChjb25zdCB4bWxDaGFyKiBzKQogdm9pZCBYTUxUb2tlbml6
ZXI6OnN0YXJ0RG9jdW1lbnQoY29uc3QgeG1sQ2hhciogdmVyc2lvbiwgY29uc3QgeG1sQ2hhciog
ZW5jb2RpbmcsIGludCBzdGFuZGFsb25lKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIAotICAgIGlmICh2ZXJzaW9uKQotICAgICAgICBtX2RvYy0+c2V0WE1MVmVyc2lvbih0b1N0
cmluZyh2ZXJzaW9uKSwgZWMpOwotICAgIG1fZG9jLT5zZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxv
bmUgPT0gMSwgZWMpOyAvLyBwb3NzaWJsZSB2YWx1ZXMgYXJlIDAsIDEsIGFuZCAtMQotICAgIGlm
IChlbmNvZGluZykKLSAgICAgICAgbV9kb2MtPnNldFhNTEVuY29kaW5nKHRvU3RyaW5nKGVuY29k
aW5nKSk7CisKKyAgICBpZiAoIW1fcGFyc2luZ0ZyYWdtZW50KSB7CisgICAgICAgIGlmICh2ZXJz
aW9uKQorICAgICAgICAgICAgbV9kb2MtPnNldFhNTFZlcnNpb24odG9TdHJpbmcodmVyc2lvbiks
IGVjKTsKKyAgICAgICAgbV9kb2MtPnNldFhNTFN0YW5kYWxvbmUoc3RhbmRhbG9uZSA9PSAxLCBl
Yyk7IC8vIHBvc3NpYmxlIHZhbHVlcyBhcmUgMCwgMSwgYW5kIC0xCisgICAgICAgIGlmIChlbmNv
ZGluZykKKyAgICAgICAgICAgIG1fZG9jLT5zZXRYTUxFbmNvZGluZyh0b1N0cmluZyhlbmNvZGlu
ZykpOworICAgIH0KIH0KIAogdm9pZCBYTUxUb2tlbml6ZXI6OmludGVybmFsU3Vic2V0KGNvbnN0
IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIq
IHN5c3RlbUlEKQpAQCAtMTIzNywxMSArMTI0MSwxMyBAQCB2b2lkIFhNTFRva2VuaXplcjo6ZW5k
KCkKICAgICAgICAgaW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKTsKICAgICBlbHNlIHsKICAgICAg
ICAgZXhpdFRleHQoKTsKLSAgICAgICAgbV9kb2MtPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKKyAg
ICAgICAgaWYgKCFtX3BhcnNpbmdGcmFnbWVudCkKKyAgICAgICAgICAgIG1fZG9jLT51cGRhdGVT
dHlsZVNlbGVjdG9yKCk7CiAgICAgfQogICAgIAogICAgIHNldEN1cnJlbnROb2RlKDApOwotICAg
IG1fZG9jLT5maW5pc2hlZFBhcnNpbmcoKTsgICAgCisgICAgaWYgKCFtX3BhcnNpbmdGcmFnbWVu
dCkKKyAgICAgICAgbV9kb2MtPmZpbmlzaGVkUGFyc2luZygpOyAgICAKIH0KIAogdm9pZCBYTUxU
b2tlbml6ZXI6OmZpbmlzaCgpCkBAIC0xNzE1LDcgKzE3MjEsOCBAQCB2b2lkIFhNTFRva2VuaXpl
cjo6c3RhcnREb2N1bWVudCgpCiAgICAgaW5pdGlhbGl6ZVBhcnNlckNvbnRleHQoKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKIAotICAgIG1fZG9jLT5zZXRYTUxTdGFuZGFsb25lKG1fc3Ry
ZWFtLmlzU3RhbmRhbG9uZURvY3VtZW50KCksIGVjKTsKKyAgICBpZiAoIW1fcGFyc2luZ0ZyYWdt
ZW50KQorICAgICAgICBtX2RvYy0+c2V0WE1MU3RhbmRhbG9uZShtX3N0cmVhbS5pc1N0YW5kYWxv
bmVEb2N1bWVudCgpLCBlYyk7CiB9CiAKIHZvaWQgWE1MVG9rZW5pemVyOjpwYXJzZVN0YXJ0RWxl
bWVudCgpCkBAIC0xOTc3LDcgKzE5ODQsOCBAQCB2b2lkIFhNTFRva2VuaXplcjo6cGFyc2VEdGQo
KQogICAgICAgICB8fCAocHVibGljSWQgPT0gIi0vL1dBUEZPUlVNLy9EVEQgWEhUTUwgTW9iaWxl
IDEuMC8vRU4iKSkgewogICAgICAgICBzZXRJc1hIVE1MRG9jdW1lbnQodHJ1ZSk7IC8vIGNvbnRy
b2xzIGlmIHdlIHJlcGxhY2UgZW50aXRpZXMgb3Igbm90LgogICAgIH0KLSAgICBtX2RvYy0+c2V0
RG9jVHlwZShuZXcgRG9jdW1lbnRUeXBlKG1fZG9jLCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQp
KTsKKyAgICBpZiAoIW1fcGFyc2luZ0ZyYWdtZW50KQorICAgICAgICBtX2RvYy0+c2V0RG9jVHlw
ZShuZXcgRG9jdW1lbnRUeXBlKG1fZG9jLCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpKTsKICAg
ICAKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16624</attachid>
            <date>2007-10-11 01:22:37 -0700</date>
            <delta_ts>2007-10-11 01:22:37 -0700</delta_ts>
            <desc>Test case for QXML</desc>
            <filename>script.xhtml</filename>
            <type>application/xhtml+xml</type>
            <size>1547</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8
IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAi
aHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1s
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KPGRpdiBpZD0ibG9nIj48L2Rp
dj4KPHNjcmlwdD48IVtDREFUQVsKICB2YXIgeGh0bWxOUyA9ICJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sIjsKICAKICB2YXIgbG9nRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxv
ZyIpOwogIAogIGZ1bmN0aW9uIGRlYnVnTG9nKHMpIHsKICAgIHZhciBsb2dEaXYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIik7CiAgICBsb2dEaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUocykpOwogICAgbG9nRGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJiciIpKTsKICB9CiAg
CiAgZGVidWdMb2coImRvY3VtZW50LnhtbEVuY29kaW5nIDogIiArIGRvY3VtZW50LnhtbEVuY29k
aW5nKTsKICBkZWJ1Z0xvZygiZG9jdW1lbnQueG1sVmVyc2lvbiA6ICIgKyBkb2N1bWVudC54bWxW
ZXJzaW9uKTsKICBkZWJ1Z0xvZygiZG9jdW1lbnQueG1sU3RhbmRhbG9uZSA6ICIgKyBkb2N1bWVu
dC54bWxTdGFuZGFsb25lKTsKICBkZWJ1Z0xvZygiZG9jdW1lbnQucmVhZHlTdGF0ZSA6ICIgKyBk
b2N1bWVudC5yZWFkeVN0YXRlKTsKICAKICAKICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKHhodG1sTlMsICJkaXYiKTsKCiAgdmFyIG5ld1hNTCA9ICcnCiAgbmV3WE1MICs9ICc8
P3htbCB2ZXJzaW9uPSIxLjAiPz4nOwogIG5ld1hNTCArPSAnPCFET0NUWVBFIGh0bWwgUFVCTElD
ICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RS
L3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPicKICBuZXdYTUwgKz0gJzxodG1sIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4nOwogIG5ld1hNTCArPSAnPC9odG1sPic7
CgogIHRyeSB7CiAgICBkaXYuaW5uZXJIVE1MID0gbmV3WE1MOwogIH0gY2F0Y2ggKGUpIHsKICAg
IGRlYnVnTG9nKCJkaXYuaW5uZXJIVE1MID0gdGhyZXcgZXhjZXB0aW9uOiAiICsgZSk7CiAgfSBm
aW5hbGx5IHsKICAgIGRlYnVnTG9nKCJkb2N1bWVudC54bWxFbmNvZGluZyA6ICIgKyBkb2N1bWVu
dC54bWxFbmNvZGluZyk7CiAgICBkZWJ1Z0xvZygiZG9jdW1lbnQueG1sVmVyc2lvbiA6ICIgKyBk
b2N1bWVudC54bWxWZXJzaW9uKTsKICAgIGRlYnVnTG9nKCJkb2N1bWVudC54bWxTdGFuZGFsb25l
IDogIiArIGRvY3VtZW50LnhtbFN0YW5kYWxvbmUpOwogICAgZGVidWdMb2coImRvY3VtZW50LnJl
YWR5U3RhdGUgOiAiICsgZG9jdW1lbnQucmVhZHlTdGF0ZSk7CiAgfQogIApdXT48L3NjcmlwdD4K
PC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>