Commit 5a88853b authored by Ezio Melotti's avatar Ezio Melotti

#20288: fix handling of invalid numeric charrefs in HTMLParser.

parent 383952d5
...@@ -195,9 +195,9 @@ class HTMLParser(markupbase.ParserBase): ...@@ -195,9 +195,9 @@ class HTMLParser(markupbase.ParserBase):
i = self.updatepos(i, k) i = self.updatepos(i, k)
continue continue
else: else:
if ";" in rawdata[i:]: #bail by consuming &# if ";" in rawdata[i:]: # bail by consuming '&#'
self.handle_data(rawdata[0:2]) self.handle_data(rawdata[i:i+2])
i = self.updatepos(i, 2) i = self.updatepos(i, i+2)
break break
elif startswith('&', i): elif startswith('&', i):
match = entityref.match(rawdata, i) match = entityref.match(rawdata, i)
......
...@@ -394,6 +394,12 @@ text ...@@ -394,6 +394,12 @@ text
("data", "&#bad;"), ("data", "&#bad;"),
("endtag", "p"), ("endtag", "p"),
]) ])
# add the [] as a workaround to avoid buffering (see #20288)
self._run_check(["<div>&#bad;</div>"], [
("starttag", "div", []),
("data", "&#bad;"),
("endtag", "div"),
])
def test_unescape_function(self): def test_unescape_function(self):
parser = HTMLParser.HTMLParser() parser = HTMLParser.HTMLParser()
......
...@@ -38,6 +38,8 @@ Core and Builtins ...@@ -38,6 +38,8 @@ Core and Builtins
Library Library
------- -------
- Issue #20288: fix handling of invalid numeric charrefs in HTMLParser.
- Issue #19456: ntpath.join() now joins relative paths correctly when a drive - Issue #19456: ntpath.join() now joins relative paths correctly when a drive
is present. is present.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment