bpo-35062: Fix parsing _io.IncrementalNewlineDecoder's *translate* argument. (GH-10217)
_io.IncrementalNewlineDecoder's initializer possibly assigns out-of-range
value to the bitwise struct field.
(cherry picked from commit b08746bfdf
)
Co-authored-by: Xiang Zhang <angwerzx@126.com>
This commit is contained in:
parent
da15389fdd
commit
71b6c1af72
|
@ -3748,6 +3748,16 @@ class IncrementalNewlineDecoderTest(unittest.TestCase):
|
|||
dec = self.IncrementalNewlineDecoder(None, translate=True)
|
||||
_check(dec)
|
||||
|
||||
def test_translate(self):
|
||||
# issue 35062
|
||||
for translate in (-2, -1, 1, 2):
|
||||
decoder = codecs.getincrementaldecoder("utf-8")()
|
||||
decoder = self.IncrementalNewlineDecoder(decoder, translate)
|
||||
self.check_newline_decoding_utf8(decoder)
|
||||
decoder = codecs.getincrementaldecoder("utf-8")()
|
||||
decoder = self.IncrementalNewlineDecoder(decoder, translate=0)
|
||||
self.assertEqual(decoder.decode(b"\r\r\n"), "\r\r\n")
|
||||
|
||||
class CIncrementalNewlineDecoderTest(IncrementalNewlineDecoderTest):
|
||||
pass
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix incorrect parsing of :class:`_io.IncrementalNewlineDecoder`'s
|
||||
*translate* argument.
|
|
@ -261,7 +261,7 @@ _io_IncrementalNewlineDecoder___init___impl(nldecoder_object *self,
|
|||
}
|
||||
Py_INCREF(self->errors);
|
||||
|
||||
self->translate = translate;
|
||||
self->translate = translate ? 1 : 0;
|
||||
self->seennl = 0;
|
||||
self->pendingcr = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue