We should not implicitly use the tevent_context as talloc parent.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
NTSTATUS rv;
/* Initialise the libnet context */
- net_ctx = libnet_context_init(ev_ctx, lp_ctx);
+ net_ctx = libnet_context_init(mem_ctx, ev_ctx, lp_ctx);
net_ctx->cred = credentials;
/* Prepare libnet lookup structure for looking a DC (PDC is correct). */
#include "param/param.h"
#include "libcli/resolve/resolve.h"
-struct libnet_context *libnet_context_init(struct tevent_context *ev,
+struct libnet_context *libnet_context_init(TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
struct loadparm_context *lp_ctx)
{
struct libnet_context *ctx;
}
/* create brand new libnet context */
- ctx = talloc_zero(ev, struct libnet_context);
+ ctx = talloc_zero(mem_ctx, struct libnet_context);
if (!ctx) {
return NULL;
}
static void py_net_dealloc(py_net_Object *self)
{
- talloc_free(self->ev);
+ /* explicitly free libnet_ctx before ev */
+ talloc_free(self->libnet_ctx);
+ talloc_free(self->mem_ctx);
PyObject_Del(self);
}
/* FIXME: we really need to get a context from the caller or we may end
* up with 2 event contexts */
- ret->ev = s4_event_context_init(NULL);
- ret->mem_ctx = talloc_new(ret->ev);
+ ret->mem_ctx = talloc_new(NULL);
+ ret->ev = s4_event_context_init(ret->mem_ctx);
lp = lpcfg_from_py_object(ret->mem_ctx, py_lp);
if (lp == NULL) {
return NULL;
}
- ret->libnet_ctx = libnet_context_init(ret->ev, lp);
+ ret->libnet_ctx = libnet_context_init(ret->mem_ctx, ret->ev, lp);
if (ret->libnet_ctx == NULL) {
PyErr_SetString(PyExc_RuntimeError, "Unable to initialize net");
Py_DECREF(ret);
mem_ctx = talloc_init("test_domain_open");
- net_ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ net_ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
status = torture_rpc_connection(torture,
&net_ctx->samr.pipe,
location);
torture_assert(torture, s, "libnet_vampire_cb_state_init");
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
ZERO_STRUCT(b);
of specific server name. */
domain_name = lpcfg_workgroup(torture->lp_ctx);
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
if (ctx == NULL) {
torture_comment(torture, "failed to create libnet context\n");
return false;
return false;
}
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
if (ctx == NULL) {
torture_comment(torture, "failed to create libnet context\n");
ret = false;
mem_ctx = talloc_init("test_domainopen_lsa");
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
/* we're accessing domain controller so the domain name should be
return false;
}
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
if (ctx == NULL) {
torture_comment(torture, "failed to create libnet context\n");
ret = false;
return false;
}
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
if (ctx == NULL) {
torture_comment(torture, "failed to create libnet context\n");
ret = false;
struct libnet_GroupList req;
int i;
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
domain_name.string = lpcfg_workgroup(torture->lp_ctx);
mem_ctx = talloc_init("test_creategroup");
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
req.in.group_name = TEST_GROUPNAME;
mem_ctx = talloc_init("test_lookup");
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
lookup.in.hostname = torture_setting_string(torture, "host", NULL);
mem_ctx = talloc_init("test_lookup_host");
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
lookup.in.hostname = torture_setting_string(torture, "host", NULL);
mem_ctx = talloc_init("test_lookup_pdc");
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
talloc_steal(ctx, mem_ctx);
struct libnet_LookupName r;
bool ret = true;
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
mem_ctx = talloc_init("torture lookup sam name");
{
struct libnet_context *ctx;
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
torture_comment(torture, "Testing connection to LSA interface\n");
goto done;
}
- libnetctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ libnetctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
if (!libnetctx) {
torture_comment(torture, "Couldn't allocate libnet context\n");
ret = false;
status = torture_rpc_binding(torture, &binding);
torture_assert_ntstatus_ok(torture, status, "Failed to get binding");
- libnetctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ libnetctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
libnetctx->cred = samba_cmdline_get_creds();
status = torture_rpc_connection(torture,
struct libnet_UserList req;
int i;
- ctx = libnet_context_init(torture->ev, torture->lp_ctx);
+ ctx = libnet_context_init(torture, torture->ev, torture->lp_ctx);
ctx->cred = samba_cmdline_get_creds();
domain_name.string = lpcfg_workgroup(torture->lp_ctx);
bool bret = true;
struct libnet_context *net_ctx;
- net_ctx = libnet_context_init(tctx->ev, tctx->lp_ctx);
+ net_ctx = libnet_context_init(tctx, tctx->ev, tctx->lp_ctx);
torture_assert(tctx, net_ctx != NULL, "Failed to create libnet_context");
/* Use command line credentials for testing */
printf("Creating share %s\n", sharename);
- if (!(libnetctx = libnet_context_init(tctx->ev, tctx->lp_ctx))) {
+ if (!(libnetctx = libnet_context_init(tctx, tctx->ev, tctx->lp_ctx))) {
return false;
}
torture_comment(tctx, "Deleting share %s\n", sharename);
- if (!(libnetctx = libnet_context_init(tctx->ev, tctx->lp_ctx))) {
+ if (!(libnetctx = libnet_context_init(tctx, tctx->ev, tctx->lp_ctx))) {
return false;
}
return NULL;
}
- libnet_ctx = libnet_context_init(tctx->ev, tctx->lp_ctx);
+ libnet_ctx = libnet_context_init(tctx, tctx->ev, tctx->lp_ctx);
if (!libnet_ctx) {
talloc_free(tj);
return NULL;