From 06068603084562be40f3180561fe7af5700ff4e8 Mon Sep 17 00:00:00 2001 From: Douglas Bagnall Date: Tue, 7 May 2019 13:25:01 +1200 Subject: [PATCH] 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 --- source4/librpc/rpc/pyrpc.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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 -- 2.47.3