From: Zackery Spytz <zspytz@gmail.com>
Date: Thu, 12 Sep 2019 10:09:32 +0000 (-0600)
Subject: closes bpo-38127: _ctypes: PyObject_IsSubclass() should be checked for failure. ... 
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ea683deccc505a78bbbb1eb8c6a88b0835ad5151;p=python

closes bpo-38127: _ctypes: PyObject_IsSubclass() should be checked for failure. (GH-16011)

An exception may occur during a PyObject_IsSubclass() call.
---

diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index d2f6391fa6..16a0cfe8dd 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -1168,7 +1168,11 @@ PyCPointerType_from_param(PyObject *type, PyObject *value)
         */
         StgDictObject *v = PyObject_stgdict(value);
         assert(v); /* Cannot be NULL for pointer or array objects */
-        if (PyObject_IsSubclass(v->proto, typedict->proto)) {
+        int ret = PyObject_IsSubclass(v->proto, typedict->proto);
+        if (ret < 0) {
+            return NULL;
+        }
+        if (ret) {
             Py_INCREF(value);
             return value;
         }