summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/libnet/libnet.c3
-rw-r--r--source4/libnet/py_net.c14
2 files changed, 12 insertions, 5 deletions
diff --git a/source4/libnet/libnet.c b/source4/libnet/libnet.c
index b10fb65df6..86cf80b4da 100644
--- a/source4/libnet/libnet.c
+++ b/source4/libnet/libnet.c
@@ -42,6 +42,9 @@ struct libnet_context *libnet_context_init(struct tevent_context *ev,
ctx->event_ctx = ev;
ctx->lp_ctx = lp_ctx;
+ /* make sure dcerpc is initialized */
+ dcerpc_init(lp_ctx);
+
/* name resolution methods */
ctx->resolve_ctx = lp_resolve_context(lp_ctx);
diff --git a/source4/libnet/py_net.c b/source4/libnet/py_net.c
index 01afe595c4..e5ca5e1c97 100644
--- a/source4/libnet/py_net.c
+++ b/source4/libnet/py_net.c
@@ -66,10 +66,16 @@ static PyObject *py_net_join(PyObject *cls, PyObject *args, PyObject *kwargs)
creds = cli_credentials_from_py_object(py_creds);
if (creds == NULL) {
PyErr_SetString(PyExc_TypeError, "Expected credentials object");
+ talloc_free(mem_ctx);
return NULL;
}
libnet_ctx = py_net_ctx(cls, ev, creds);
+ if (libnet_ctx == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "Unable to initialize libnet");
+ talloc_free(mem_ctx);
+ return NULL;
+ }
status = libnet_Join(libnet_ctx, mem_ctx, &r);
if (NT_STATUS_IS_ERR(status)) {
@@ -109,8 +115,8 @@ static PyObject *py_net_set_password(PyObject *cls, PyObject *args, PyObject *kw
return NULL;
}
- // FIXME: we really need to get a context from the caller or we may end
- // up with 2 event contexts
+ /* FIXME: we really need to get a context from the caller or we may end
+ * up with 2 event contexts */
ev = s4_event_context_init(NULL);
mem_ctx = talloc_new(ev);
@@ -120,8 +126,6 @@ static PyObject *py_net_set_password(PyObject *cls, PyObject *args, PyObject *kw
return NULL;
}
- dcerpc_init(py_default_loadparm_context(NULL));
-
libnet_ctx = py_net_ctx(cls, ev, creds);
status = libnet_SetPassword(libnet_ctx, mem_ctx, &r);
@@ -158,6 +162,6 @@ static struct PyMethodDef net_methods[] = {
void initnet(void)
{
- Py_InitModule("net", net_methods);
+ Py_InitModule3("net", net_methods, NULL);
}