Commit 05acd44a authored by Miss Islington (bot)'s avatar Miss Islington (bot) Committed by GitHub

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 b08746bf)
Co-authored-by: default avatarXiang Zhang <angwerzx@126.com>
parent bc6f74a5
......@@ -2922,6 +2922,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
......
Fix incorrect parsing of :class:`_io.IncrementalNewlineDecoder`'s
*translate* argument.
......@@ -221,7 +221,7 @@ incrementalnewlinedecoder_init(nldecoder_object *self,
self->errors = errors;
}
self->translate = translate;
self->translate = translate ? 1 : 0;
self->seennl = 0;
self->pendingcr = 0;
......
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