From: Douglas Bagnall Date: Tue, 7 May 2019 01:25:01 +0000 (+1200) Subject: pyrpc: ndr PY_CHECK_TYPE checks for NULL as well as type X-Git-Tag: tdb-1.4.1~125 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=06068603084562be40f3180561fe7af5700ff4e8;p=thirdparty%2Fsamba.git pyrpc: ndr PY_CHECK_TYPE checks for NULL as well as type Addresses CID 1361477 and others. Signed-off-by: Douglas Bagnall Reviewed-by: Gary Lockyer --- diff --git a/source4/librpc/rpc/pyrpc.h b/source4/librpc/rpc/pyrpc.h index 968bf863c4c..05c1adb8307 100644 --- a/source4/librpc/rpc/pyrpc.h +++ b/source4/librpc/rpc/pyrpc.h @@ -26,10 +26,19 @@ #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) #endif -#define PY_CHECK_TYPE(type, var, fail) \ - if (!PyObject_TypeCheck(var, type)) {\ - PyErr_Format(PyExc_TypeError, __location__ ": Expected type '%s' for '%s' of type '%s'", (type)->tp_name, #var, Py_TYPE(var)->tp_name); \ - fail; \ +#define PY_CHECK_TYPE(type, var, fail) \ + if (var == NULL) { \ + PyErr_Format(PyExc_TypeError, \ + __location__ \ + ": Expected type '%s' for '%s', got NULL", \ + (type)->tp_name, #var); \ + fail; \ + } else if (!PyObject_TypeCheck(var, type)) { \ + PyErr_Format(PyExc_TypeError, \ + __location__ \ + ": Expected type '%s' for '%s' of type '%s'", \ + (type)->tp_name, #var, Py_TYPE(var)->tp_name); \ + fail; \ } #define dom_sid0_Type dom_sid_Type