From: Dmitry Antipov Date: Thu, 30 Mar 2023 11:04:37 +0000 (+0300) Subject: s4:param: replace calls to deprecated Python methods X-Git-Tag: ldb-2.8.0~85 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=980c1565ed11e609d415ae4daec50a587c77960c;p=thirdparty%2Fsamba.git s4:param: replace calls to deprecated Python methods Replace calls to (obsolete but still stable) PyEval_CallObjectWithKeywords() with PyObject_Call() by using trivial wrapper. Signed-off-by: Dmitry Antipov Reviewed-by: Douglas Bagnall Reviewed-by: Andrew Bartlett [abartlet@samba.org Adjusted to always use the PyObject_Call() as it is available in all of Samba's supported python versions] --- diff --git a/source4/param/provision.c b/source4/param/provision.c index e0b7c690e07..d6d120647e6 100644 --- a/source4/param/provision.c +++ b/source4/param/provision.c @@ -101,6 +101,18 @@ static PyObject *PyLdb_FromLdbContext(struct ldb_context *ldb_ctx) return (PyObject *)ret; } +static PyObject *call_wrapper(PyObject *callable, PyObject *kwargs) +{ + /* + * Helper for calls with zero non-keyword arguments. + */ + PyObject *empty = PyTuple_New(0), *result = NULL; + SMB_ASSERT(empty); + result = PyObject_Call(callable, empty, kwargs); + Py_XDECREF(empty); + return result; +} + NTSTATUS provision_bare(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, struct provision_settings *settings, struct provision_result *result) @@ -265,7 +277,7 @@ NTSTATUS provision_bare(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, goto out; } - py_result = PyEval_CallObjectWithKeywords(provision_fn, NULL, parameters); + py_result = call_wrapper(provision_fn, parameters); if (py_result == NULL) { status = NT_STATUS_UNSUCCESSFUL; @@ -453,7 +465,7 @@ NTSTATUS provision_store_self_join(TALLOC_CTX *mem_ctx, struct loadparm_context goto out; } - py_result = PyEval_CallObjectWithKeywords(provision_fn, NULL, parameters); + py_result = call_wrapper(provision_fn, parameters); if (py_result == NULL) { ldb_transaction_cancel(ldb); @@ -538,7 +550,7 @@ struct ldb_context *provision_get_schema(TALLOC_CTX *mem_ctx, } } - py_result = PyEval_CallObjectWithKeywords(schema_fn, NULL, parameters); + py_result = call_wrapper(schema_fn, parameters); Py_DECREF(parameters);