summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorDennis Sweeney <36520290+sweeneyde@users.noreply.github.com>2021-07-24 09:17:19 (GMT)
committerGitHub <noreply@github.com>2021-07-24 09:17:19 (GMT)
commit5370f0a82aaa4ba617070d5c71d2b18236096ac0 (patch)
treeb833f672b6668de93d0003d92e77a46085d34118 /Objects
parent4463fa2fa111e03f7ec47e6e9d433104aa943605 (diff)
downloadcpython-5370f0a82aaa4ba617070d5c71d2b18236096ac0.zip
cpython-5370f0a82aaa4ba617070d5c71d2b18236096ac0.tar.gz
cpython-5370f0a82aaa4ba617070d5c71d2b18236096ac0.tar.bz2
bpo-44720: Don't crash when calling weakref.proxy(not_an_iterator).__next__ (GH-27316)
Diffstat (limited to 'Objects')
-rw-r--r--Objects/weakrefobject.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c
index c36d239..bb56c7d 100644
--- a/Objects/weakrefobject.c
+++ b/Objects/weakrefobject.c
@@ -657,6 +657,12 @@ proxy_iternext(PyWeakReference *proxy)
return NULL;
PyObject *obj = PyWeakref_GET_OBJECT(proxy);
+ if (!PyIter_Check(obj)) {
+ PyErr_Format(PyExc_TypeError,
+ "Weakref proxy referenced a non-iterator '%.200s' object",
+ Py_TYPE(obj)->tp_name);
+ return NULL;
+ }
Py_INCREF(obj);
PyObject* res = PyIter_Next(obj);
Py_DECREF(obj);