diff options
author | Steve Dower <steve.dower@microsoft.com> | 2017-02-04 15:05:50 -0800 |
---|---|---|
committer | Steve Dower <steve.dower@microsoft.com> | 2017-02-04 15:05:50 -0800 |
commit | 3b0e4320092ac0504b6670cafaf0301b908c91fc (patch) | |
tree | d3be1b6b844d61763bb366fa21ceed475e5703fd /Modules/_ctypes/cfield.c | |
parent | b2fa705fd3887c326e811c418469c784353027f4 (diff) | |
parent | f687fbcd73c14dfcbe086eb5cd94b298f1e81e72 (diff) | |
download | cpython-3b0e4320092ac0504b6670cafaf0301b908c91fc.tar.gz |
Issue #29392: Prevent crash when passing invalid arguments into msvcrt module.
Diffstat (limited to 'Modules/_ctypes/cfield.c')
-rw-r--r-- | Modules/_ctypes/cfield.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c index a43585f1b8..bb9b115bd2 100644 --- a/Modules/_ctypes/cfield.c +++ b/Modules/_ctypes/cfield.c @@ -498,7 +498,7 @@ get_ulonglong(PyObject *v, unsigned long long *p) #ifdef _CTYPES_DEBUG_KEEP #define _RET(x) Py_INCREF(x); return x #else -#define _RET(X) Py_INCREF(Py_None); return Py_None +#define _RET(X) Py_RETURN_NONE #endif /***************************************************************** @@ -1337,8 +1337,7 @@ z_get(void *ptr, Py_ssize_t size) return PyBytes_FromStringAndSize(*(char **)ptr, strlen(*(char **)ptr)); } else { - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } } @@ -1360,8 +1359,7 @@ Z_set(void *ptr, PyObject *value, Py_ssize_t size) #else *(wchar_t **)ptr = (wchar_t *)PyLong_AsUnsignedLongMask(value); #endif - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } if (!PyUnicode_Check(value)) { PyErr_Format(PyExc_TypeError, @@ -1392,8 +1390,7 @@ Z_get(void *ptr, Py_ssize_t size) if (p) { return PyUnicode_FromWideChar(p, wcslen(p)); } else { - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } } #endif @@ -1452,8 +1449,7 @@ BSTR_get(void *ptr, Py_ssize_t size) /* Hm, it seems NULL pointer and zero length string are the same in BSTR, see Don Box, p 81 */ - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } } #endif @@ -1493,8 +1489,7 @@ static PyObject * P_get(void *ptr, Py_ssize_t size) { if (*(void **)ptr == NULL) { - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } return PyLong_FromVoidPtr(*(void **)ptr); } |