From: Thomas Heller Date: Fri, 11 Jan 2008 19:48:46 +0000 (+0000) Subject: Added NEWS entry, plus: X-Git-Tag: v2.5.2c1~78 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b9c741c43cdd08a18120f23cfca81afeaead9820;p=python Added NEWS entry, plus: Merged revisions 59925 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk/Modules/_ctypes ........ r59925 | thomas.heller | 2008-01-11 20:34:06 +0100 (Fr, 11 Jan 2008) | 5 lines Raise an error instead of crashing with a segfault when a NULL function pointer is called. Will backport to release25-maint. ........ --- diff --git a/Lib/ctypes/test/test_funcptr.py b/Lib/ctypes/test/test_funcptr.py index 7ea873f0a4..92bf89bb60 100644 --- a/Lib/ctypes/test/test_funcptr.py +++ b/Lib/ctypes/test/test_funcptr.py @@ -123,5 +123,11 @@ class CFuncPtrTestCase(unittest.TestCase): self.failUnlessEqual(strtok(None, "\n"), "c") self.failUnlessEqual(strtok(None, "\n"), None) + def test_NULL_funcptr(self): + tp = CFUNCTYPE(c_int) + func = tp() # NULL function pointer + # raise a ValueError when we try to call it + self.assertRaises(ValueError, func) + if __name__ == '__main__': unittest.main() diff --git a/Misc/NEWS b/Misc/NEWS index 47b3c5a9a0..1e742fb374 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.5.2c1? Core and builtins ----------------- +- Prevent a segfault when a ctypes NULL function pointer is called. + - Bug #1517: Possible segfault in lookup(). - Issue #1638: %zd configure test fails on Linux. diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 73b5cbdc2e..47fab8a00a 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -3305,6 +3305,11 @@ CFuncPtr_call(CFuncPtrObject *self, PyObject *inargs, PyObject *kwds) pProc = *(void **)self->b_ptr; + if (pProc == NULL) { + PyErr_SetString(PyExc_ValueError, + "attempt to call NULL function pointer"); + return NULL; + } #ifdef MS_WIN32 if (self->index) { /* It's a COM method */