From f573177c352c2df89c7d5ffd425a37b46b12166c Mon Sep 17 00:00:00 2001 From: Joseph Sutton Date: Mon, 24 Apr 2023 10:42:39 +1200 Subject: python: Safely clear structure members Using Py_CLEAR() ensures that these structures are observed in a consistent state by any Python code that may run during deconstruction. Signed-off-by: Joseph Sutton Reviewed-by: Andrew Bartlett --- source4/librpc/rpc/pyrpc.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'source4/librpc/rpc/pyrpc.c') diff --git a/source4/librpc/rpc/pyrpc.c b/source4/librpc/rpc/pyrpc.c index 7b6bcef9eba..61b3c6357b0 100644 --- a/source4/librpc/rpc/pyrpc.c +++ b/source4/librpc/rpc/pyrpc.c @@ -492,8 +492,7 @@ static void py_dcerpc_ndr_pointer_dealloc(PyObject* self) struct py_dcerpc_ndr_pointer *obj = pytalloc_get_type(self, struct py_dcerpc_ndr_pointer); - Py_DECREF(obj->value); - obj->value = NULL; + Py_CLEAR(obj->value); self->ob_type->tp_free(self); } @@ -512,7 +511,7 @@ static int py_dcerpc_ndr_pointer_set_value(PyObject *self, PyObject *value, void struct py_dcerpc_ndr_pointer *obj = pytalloc_get_type(self, struct py_dcerpc_ndr_pointer); - Py_DECREF(obj->value); + Py_CLEAR(obj->value); obj->value = value; Py_INCREF(obj->value); return 0; -- cgit v1.2.1