[PATCH 2/2] s4-pyrpc: Fix talloc hierachy in dceprc interface functions.
Andreas Schneider
asn at samba.org
Fri Feb 14 10:03:01 MST 2014
Signed-off-by: Andreas Schneider <asn at samba.org>
---
source4/librpc/rpc/pyrpc.c | 22 +++++++---------------
source4/librpc/rpc/pyrpc_util.c | 15 +++++++--------
2 files changed, 14 insertions(+), 23 deletions(-)
diff --git a/source4/librpc/rpc/pyrpc.c b/source4/librpc/rpc/pyrpc.c
index 0de3681..d77b35d 100644
--- a/source4/librpc/rpc/pyrpc.c
+++ b/source4/librpc/rpc/pyrpc.c
@@ -356,7 +356,6 @@ static PyObject *dcerpc_interface_new(PyTypeObject *type, PyObject *args, PyObje
} else {
struct tevent_context *event_ctx;
struct loadparm_context *lp_ctx;
- struct cli_credentials *credentials;
event_ctx = s4_event_context_init(ret->mem_ctx);
if (event_ctx == NULL) {
@@ -372,20 +371,13 @@ static PyObject *dcerpc_interface_new(PyTypeObject *type, PyObject *args, PyObje
return NULL;
}
- credentials = cli_credentials_from_py_object(py_credentials);
- if (credentials == NULL) {
- PyErr_SetString(PyExc_TypeError, "Expected credentials");
- TALLOC_FREE(ret->mem_ctx);
- return NULL;
- }
- status = dcerpc_pipe_connect(ret->mem_ctx, &ret->pipe, binding_string,
- table, credentials, event_ctx, lp_ctx);
-
- /*
- * the event context is cached under the connection,
- * so let it be a child of it.
- */
- talloc_steal(ret->pipe->conn, event_ctx);
+ status = dcerpc_pipe_connect_creds_helper(ret->mem_ctx,
+ event_ctx,
+ binding_string,
+ table,
+ py_credentials,
+ lp_ctx,
+ &ret->pipe);
}
if (!NT_STATUS_IS_OK(status)) {
diff --git a/source4/librpc/rpc/pyrpc_util.c b/source4/librpc/rpc/pyrpc_util.c
index f90f350..c887181 100644
--- a/source4/librpc/rpc/pyrpc_util.c
+++ b/source4/librpc/rpc/pyrpc_util.c
@@ -200,14 +200,13 @@ PyObject *py_dcerpc_interface_init_helper(PyTypeObject *type, PyObject *args, Py
ret->pipe = talloc_steal(ret->mem_ctx, ret->pipe);
} else {
- credentials = cli_credentials_from_py_object(py_credentials);
- if (credentials == NULL) {
- PyErr_SetString(PyExc_TypeError, "Expected credentials");
- talloc_free(mem_ctx);
- return NULL;
- }
- status = dcerpc_pipe_connect(event_ctx, &ret->pipe, binding_string,
- table, credentials, event_ctx, lp_ctx);
+ status = dcerpc_pipe_connect_creds_helper(ret->mem_ctx,
+ event_ctx,
+ binding_string,
+ table,
+ py_credentials,
+ lp_ctx,
+ &ret->pipe);
}
if (NT_STATUS_IS_ERR(status)) {
PyErr_SetNTSTATUS(status);
--
1.8.5.2
More information about the samba-technical
mailing list