From e5fd21f11f09c106b0b77a1dee2c25e69f48b84a Mon Sep 17 00:00:00 2001 From: Larry Hastings Date: Wed, 24 Feb 2010 22:58:18 +0000 Subject: [PATCH] Merged revisions 78435 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r78435 | larry.hastings | 2010-02-24 17:49:58 -0500 (Wed, 24 Feb 2010) | 4 lines Issue #5939: Add additional runtime checking to ensure a valid capsule in Modules/_ctypes/callproc.c. Reviewed by Benjamin P. My first commit! ........ --- Misc/NEWS | 4 +++- Modules/_ctypes/callproc.c | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index b20056cc62fc..64d5309837eb 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,7 +12,9 @@ What's New in Python 3.1.2? Core and Builtins ----------------- -======= +- Issue #5939: Add additional runtime checking to ensure a valid capsule + in Modules/_ctypes/callproc.c. + - Issue #7309: Fix unchecked attribute access when converting UnicodeEncodeError, UnicodeDecodeError, and UnicodeTranslateError to strings. diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index f5eaa0d0babe..2a75fb108485 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -139,8 +139,14 @@ _ctypes_get_errobj(int **pspace) return NULL; } errobj = PyDict_GetItem(dict, error_object_name); - if (errobj) + if (errobj) { + if (!PyCapsule_IsValid(errobj, CTYPES_CAPSULE_NAME_PYMEM)) { + PyErr_SetString(PyExc_RuntimeError, + "ctypes.error_object is an invalid capsule"); + return NULL; + } Py_INCREF(errobj); + } else { void *space = PyMem_Malloc(sizeof(int) * 2); if (space == NULL)