From: Victor Stinner Date: Wed, 27 Jul 2016 14:58:47 +0000 (+0200) Subject: ctypes: fix CThunkObject_new() X-Git-Tag: v3.6.0a4~109^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e33797b686d764014aeaf80d7b4cb24863d238d9;p=thirdparty%2FPython%2Fcpython.git ctypes: fix CThunkObject_new() * Initialize restype and flags fields to fix a crash when Python runs on a read-only file system * Use Py_ssize_t type rather than int for the "i" iterator variable * Reorder assignements to be able to more easily check if all fields are initialized Issue #11048. Initial patch written by Marcin Bachry. --- diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c index 7cd61640f819..91413d7dbf03 100644 --- a/Modules/_ctypes/callbacks.c +++ b/Modules/_ctypes/callbacks.c @@ -305,7 +305,7 @@ static void closure_fcn(ffi_cif *cif, static CThunkObject* CThunkObject_new(Py_ssize_t nArgs) { CThunkObject *p; - int i; + Py_ssize_t i; p = PyObject_GC_NewVar(CThunkObject, &PyCThunk_Type, nArgs); if (p == NULL) { @@ -313,11 +313,13 @@ static CThunkObject* CThunkObject_new(Py_ssize_t nArgs) return NULL; } - p->pcl_exec = NULL; p->pcl_write = NULL; + p->pcl_exec = NULL; memset(&p->cif, 0, sizeof(p->cif)); + p->flags = 0; p->converters = NULL; p->callable = NULL; + p->restype = NULL; p->setfunc = NULL; p->ffi_restype = NULL;