From ae5259171b8ef62165e061b9dea7ad645a5131a2 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Mon, 23 Aug 2021 15:24:12 +0100 Subject: [PATCH] Fix bytes.__bytes__ to not truncate at a zero byte (GH-27902) --- Lib/test/test_bytes.py | 4 ++-- Objects/bytesobject.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index c45c69f3f22..c2fe2cc2542 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -982,14 +982,14 @@ class BytesTest(BaseBytesTest, unittest.TestCase): type2test = bytes def test__bytes__(self): - foo = b'foo' + foo = b'foo\x00bar' self.assertEqual(foo.__bytes__(), foo) self.assertEqual(type(foo.__bytes__()), self.type2test) class bytes_subclass(bytes): pass - bar = bytes_subclass(b'bar') + bar = bytes_subclass(b'bar\x00foo') self.assertEqual(bar.__bytes__(), bar) self.assertEqual(type(bar.__bytes__()), self.type2test) diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c index 13f94b4c82f..27f766bef6e 100644 --- a/Objects/bytesobject.c +++ b/Objects/bytesobject.c @@ -1701,7 +1701,7 @@ bytes___bytes___impl(PyBytesObject *self) return (PyObject *)self; } else { - return PyBytes_FromString(self->ob_sval); + return PyBytes_FromStringAndSize(self->ob_sval, Py_SIZE(self)); } }