From ef453c63af3d29c428029aa39a5b59b0317c76ce Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 25 Dec 2009 14:48:45 +0100 Subject: py_net/libnet: Remove C++-style comments, add more error checking, move initialization of dcerpc subsystem to libnet. --- source4/libnet/libnet.c | 3 +++ source4/libnet/py_net.c | 14 +++++++++----- 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); } -- cgit