Merged revisions 78435 via svnmerge from
authorLarry Hastings <larry@hastings.org>
Wed, 24 Feb 2010 22:58:18 +0000 (22:58 +0000)
committerLarry Hastings <larry@hastings.org>
Wed, 24 Feb 2010 22:58:18 +0000 (22:58 +0000)
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
Modules/_ctypes/callproc.c

index b20056cc62fce677bb2ed24856e7a913cc6dae7a..64d5309837eb182f9c18799e932e4abfbd144825 100644 (file)
--- 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.
index f5eaa0d0babec8fe835eb918d8087117815e9fef..2a75fb108485c2278e57459177639842169de513 100644 (file)
@@ -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)