mirror of https://github.com/python/cpython
Backport of r77429. Not merged/blocked as svnmerge.py is not liking me right now.
This commit is contained in:
parent
dffc1b8932
commit
2f82738988
|
@ -510,6 +510,24 @@ class ChardataBufferTest(unittest.TestCase):
|
|||
parser.Parse(xml2, 1)
|
||||
self.assertEquals(self.n, 4)
|
||||
|
||||
class MalformedInputText(unittest.TestCase):
|
||||
def test1(self):
|
||||
xml = "\0\r\n"
|
||||
parser = expat.ParserCreate()
|
||||
try:
|
||||
parser.Parse(xml, True)
|
||||
self.fail()
|
||||
except expat.ExpatError as e:
|
||||
self.assertEquals(str(e), 'no element found: line 2, column 1')
|
||||
|
||||
def test2(self):
|
||||
xml = "<?xml version\xc2\x85='1.0'?>\r\n"
|
||||
parser = expat.ParserCreate()
|
||||
try:
|
||||
parser.Parse(xml, True)
|
||||
self.fail()
|
||||
except expat.ExpatError as e:
|
||||
self.assertEquals(str(e), 'XML declaration not well-formed: line 1, column 14')
|
||||
|
||||
def test_main():
|
||||
run_unittest(SetAttributeTest,
|
||||
|
@ -520,7 +538,8 @@ def test_main():
|
|||
HandlerExceptionTest,
|
||||
PositionTest,
|
||||
sf1296433Test,
|
||||
ChardataBufferTest)
|
||||
ChardataBufferTest,
|
||||
MalformedInputText)
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
||||
|
|
|
@ -184,6 +184,7 @@ Ismail Donmez
|
|||
Dima Dorfman
|
||||
Cesar Douady
|
||||
Dean Draayer
|
||||
Fred L. Drake, Jr.
|
||||
John DuBois
|
||||
Paul Dubois
|
||||
Graham Dumpleton
|
||||
|
@ -372,7 +373,6 @@ Irmen de Jong
|
|||
Lucas de Jonge
|
||||
John Jorgensen
|
||||
Jens B. Jorgensen
|
||||
Fred L. Drake, Jr.
|
||||
Andreas Jung
|
||||
Tattoo Mabonzo K.
|
||||
Bob Kahn
|
||||
|
@ -409,6 +409,7 @@ Holger Krekel
|
|||
Michael Kremer
|
||||
Fabian Kreutz
|
||||
Hannu Krosing
|
||||
Ivan Krstić
|
||||
Andrew Kuchling
|
||||
Vladimir Kushnir
|
||||
Cameron Laird
|
||||
|
|
|
@ -122,6 +122,8 @@ Library
|
|||
Extension Modules
|
||||
-----------------
|
||||
|
||||
- Fix a segfault that could be triggered by expat with specially formed input.
|
||||
|
||||
- Issue #6561: '\d' in a regex now matches only characters with
|
||||
Unicode category 'Nd' (Number, Decimal Digit). Previously it also
|
||||
matched characters with category 'No'.
|
||||
|
|
|
@ -1741,7 +1741,7 @@ PREFIX(updatePosition)(const ENCODING *enc,
|
|||
const char *end,
|
||||
POSITION *pos)
|
||||
{
|
||||
while (ptr != end) {
|
||||
while (ptr < end) {
|
||||
switch (BYTE_TYPE(enc, ptr)) {
|
||||
#define LEAD_CASE(n) \
|
||||
case BT_LEAD ## n: \
|
||||
|
|
Loading…
Reference in New Issue