From: Antoine Pitrou Date: Sat, 24 Oct 2009 12:28:22 +0000 (+0000) Subject: Manual py3k backport: [svn r74316] Issue #5449: Fix io.BytesIO to not accept arbitrar... X-Git-Tag: v2.7a1~259 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f7820c162648b7b724d0195541896a64ac5df294;p=python Manual py3k backport: [svn r74316] Issue #5449: Fix io.BytesIO to not accept arbitrary keywords --- diff --git a/Lib/test/test_memoryio.py b/Lib/test/test_memoryio.py index d94d1a6359..e55a811fda 100644 --- a/Lib/test/test_memoryio.py +++ b/Lib/test/test_memoryio.py @@ -467,6 +467,11 @@ class PyBytesIOTest(MemoryTestMixin, MemorySeekTestMixin, unittest.TestCase): self.assertEqual(memio.write(a), 10) self.assertEqual(memio.getvalue(), buf) + def test_issue5449(self): + buf = self.buftype("1234567890") + self.ioclass(initial_bytes=buf) + self.assertRaises(TypeError, self.ioclass, buf, foo=None) + class TextIOTestMixin: diff --git a/Modules/_io/bytesio.c b/Modules/_io/bytesio.c index beba11c82e..d25cb673f5 100644 --- a/Modules/_io/bytesio.c +++ b/Modules/_io/bytesio.c @@ -766,9 +766,11 @@ bytesio_new(PyTypeObject *type, PyObject *args, PyObject *kwds) static int bytesio_init(bytesio *self, PyObject *args, PyObject *kwds) { + char *kwlist[] = {"initial_bytes", NULL}; PyObject *initvalue = NULL; - if (!PyArg_ParseTuple(args, "|O:BytesIO", &initvalue)) + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:BytesIO", kwlist, + &initvalue)) return -1; /* In case, __init__ is called multiple times. */