8000 bpo-42576: Raise TypeError when passing in keyword arguments to Gener… · miss-islington/cpython@b2b2cef · GitHub
[go: up one dir, main page]

Skip to content

Commit b2b2cef

Browse files
Fidget-Spinnermiss-islington
authored andcommitted
bpo-42576: Raise TypeError when passing in keyword arguments to GenericAlias (pythonGH-23656)
Use `_PyArg_NoKeywords` instead of `_PyArg_NoKwnames` when checking the `kwds` tuple when creating `GenericAlias`. This fixes an interpreter crash when passing in keyword arguments to `GenericAlias`'s constructor. Needs backport to 3.9. Automerge-Triggered-By: GH:gvanrossum (cherry picked from commit 804d689) Co-authored-by: kj <28750310+Fidget-Spinner@users.noreply.github.com>
1 parent b630ca7 commit b2b2cef

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

Lib/test/test_genericalias.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,11 @@ def test_weakref(self):
302302
alias = t[int]
303303
self.assertEqual(ref(alias)(), alias)
304304

305+
def test_no_kwargs(self):
306+
# bpo-42576
307+
with self.assertRaises(TypeError):
308+
GenericAlias(bad=float)
309+
305310

306311
if __name__ == "__main__":
307312
unittest.main()
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
``types.GenericAlias`` will now raise a ``TypeError`` when attempting to
2+
initialize with a keyword argument. Previously, this would cause the
3+
interpreter to crash. Patch by Ken Jin.

Objects/genericaliasobject.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ static PyGetSetDef ga_properties[] = {
566566
static PyObject *
567567
ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
568568
{
569-
if (!_PyArg_NoKwnames("GenericAlias", kwds)) {
569+
if (!_PyArg_NoKeywords("GenericAlias", kwds)) {
570570
return NULL;
571571
}
572572
if (!_PyArg_CheckPositional("GenericAlias", PyTuple_GET_SIZE(args), 2, 2)) {

0 commit comments

Comments
 (0)
0