- From: <bugzilla@jessica.w3.org>
- Date: Fri, 09 Jul 2010 00:15:07 +0000
- To: public-html-bugzilla@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=10117 Summary: Tag name state algorithm has mis-ordered step Product: HTML WG Version: unspecified Platform: All URL: http://dev.w3.org/html5/spec/Overview.html#tag-name-st ate OS/Version: All Status: NEW Severity: normal Priority: P3 Component: HTML5 spec (editor: Ian Hickson) AssignedTo: ian@hixie.ch ReportedBy: adrianba@microsoft.com QAContact: public-html-bugzilla@w3.org CC: mike@w3.org, public-html@w3.org Change U+003E GREATER-THAN SIGN (>) Emit the current tag token. Switch to the data state. to U+003E GREATER-THAN SIGN (>) Switch to the data state. Emit the current tag token. ---------------- Details of issue: Section 8.2.4.10 (Tag name state) says U+003E GREATER-THAN SIGN (>) Emit the current tag token. Switch to the data state. The "Emit the current tag token" step is defined in section 8.2.4 as: When a token is emitted, it must immediately be handled by the tree construction stage. The tree construction stage can affect the state of the tokenization stage, and can insert additional characters into the stream. So let us consider the following HTML: <html> <head> <script><!-- window.alert(); --></script> </head> <body></body> </html> At the closing '>' of '<script>', the tokenizer is in tag name state. It emits the current tag token, which is a 'script' start tag. The tree construction stage, in section 8.2.5.7 ("in head" insertion mode), specifies: A start tag whose tag name is "script" Run these steps: ... 5.Switch the tokenizer to the script data state. The tree construction stage therefore resets the tokenizer state immediately. After completing, the tree construction stage returns to the tokenizer. *And at that point, the tokenizer is specified to reset to the data state!* This state update overwrites the state update from the tree construction stage, and the script is not parsed as script. The identical bug exists in all the other states that can emit start tags which can contain content (8.2.4.34 through 8.2.4.37, and 8.2.4.42). The fix is to reverse the order of the state update and the token emission: U+003E GREATER-THAN SIGN (>) Switch to the data state. Emit the current tag token. -- Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug.
Received on Friday, 9 July 2010 00:15:09 UTC