diff options
author | Alexandre Vassalotti <alexandre@peadrop.com> | 2009-08-04 23:19:13 (GMT) |
---|---|---|
committer | Alexandre Vassalotti <alexandre@peadrop.com> | 2009-08-04 23:19:13 (GMT) |
commit | ba5c74329dadfb685bb921407916ffbb2efb78cc (patch) | |
tree | 87cb09d927b70eda261d80b064285dc3b0aec752 | |
parent | bbffb25c69f748a8842bb16718d79b86ad16b867 (diff) | |
download | cpython-ba5c74329dadfb685bb921407916ffbb2efb78cc.zip cpython-ba5c74329dadfb685bb921407916ffbb2efb78cc.tar.gz cpython-ba5c74329dadfb685bb921407916ffbb2efb78cc.tar.bz2 |
Issue 5449: Fix io.BytesIO to not accept arbitrary keywords
Patch contributed by Erick Tryzelaar.
-rw-r--r-- | Lib/test/test_memoryio.py | 5 | ||||
-rw-r--r-- | Modules/_io/bytesio.c | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/Lib/test/test_memoryio.py b/Lib/test/test_memoryio.py index 7dd1658..6ab8328 100644 --- a/Lib/test/test_memoryio.py +++ b/Lib/test/test_memoryio.py @@ -461,6 +461,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 7b56551..5ca878d 100644 --- a/Modules/_io/bytesio.c +++ b/Modules/_io/bytesio.c @@ -759,9 +759,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. */ |