From: Mark Dickinson Date: Mon, 23 Aug 2021 14:24:12 +0000 (+0100) Subject: Fix bytes.__bytes__ to not truncate at a zero byte (GH-27902) X-Git-Tag: v3.11.0a1~360 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ae5259171b8ef62165e061b9dea7ad645a5131a2;p=thirdparty%2FPython%2Fcpython.git Fix bytes.__bytes__ to not truncate at a zero byte (GH-27902) --- diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index c45c69f3f22c..c2fe2cc25420 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 13f94b4c82fb..27f766bef6ed 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)); } }