mirror of
https://github.com/samba-team/samba.git
synced 2025-08-04 08:22:08 +03:00
Merge branch 'v4-0-test' of git://git.samba.org/samba into 4-0-local
This commit is contained in:
@ -41,6 +41,8 @@ struct finddcs_state {
|
||||
struct nbtd_getdcname r;
|
||||
struct nbt_name_status node_status;
|
||||
|
||||
struct smb_iconv_convenience *iconv_convenience;
|
||||
|
||||
int num_dcs;
|
||||
struct nbt_dc_name *dcs;
|
||||
uint16_t nbt_port;
|
||||
@ -67,6 +69,7 @@ struct composite_context *finddcs_send(TALLOC_CTX *mem_ctx,
|
||||
const char *domain_name,
|
||||
int name_type,
|
||||
struct dom_sid *domain_sid,
|
||||
struct smb_iconv_convenience *iconv_convenience,
|
||||
struct resolve_context *resolve_ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct messaging_context *msg_ctx)
|
||||
@ -87,6 +90,7 @@ struct composite_context *finddcs_send(TALLOC_CTX *mem_ctx,
|
||||
state->nbt_port = nbt_port;
|
||||
state->my_netbios_name = talloc_strdup(state, my_netbios_name);
|
||||
state->domain_name = talloc_strdup(state, domain_name);
|
||||
state->iconv_convenience = iconv_convenience;
|
||||
if (composite_nomem(state->domain_name, c)) return c;
|
||||
|
||||
if (domain_sid) {
|
||||
@ -197,7 +201,7 @@ static void fallback_node_status(struct finddcs_state *state)
|
||||
state->node_status.in.retries = 2;
|
||||
|
||||
nbtsock = nbt_name_socket_init(state, state->ctx->event_ctx,
|
||||
lp_iconv_convenience(global_loadparm));
|
||||
state->iconv_convenience);
|
||||
if (composite_nomem(nbtsock, state->ctx)) return;
|
||||
|
||||
name_req = nbt_name_status_send(nbtsock, &state->node_status);
|
||||
@ -255,6 +259,7 @@ NTSTATUS finddcs(TALLOC_CTX *mem_ctx,
|
||||
uint16_t nbt_port,
|
||||
const char *domain_name, int name_type,
|
||||
struct dom_sid *domain_sid,
|
||||
struct smb_iconv_convenience *iconv_convenience,
|
||||
struct resolve_context *resolve_ctx,
|
||||
struct event_context *event_ctx,
|
||||
struct messaging_context *msg_ctx,
|
||||
@ -264,7 +269,9 @@ NTSTATUS finddcs(TALLOC_CTX *mem_ctx,
|
||||
my_netbios_name,
|
||||
nbt_port,
|
||||
domain_name, name_type,
|
||||
domain_sid, resolve_ctx,
|
||||
domain_sid,
|
||||
iconv_convenience,
|
||||
resolve_ctx,
|
||||
event_ctx, msg_ctx);
|
||||
return finddcs_recv(c, mem_ctx, num_dcs, dcs);
|
||||
}
|
||||
|
@ -150,7 +150,7 @@ struct composite_context *smb_composite_fetchfile_send(struct smb_composite_fetc
|
||||
state->connect->in.options = io->in.options;
|
||||
|
||||
state->creq = smb_composite_connect_send(state->connect, state,
|
||||
lp_resolve_context(global_loadparm), event_ctx);
|
||||
io->in.resolve_ctx, event_ctx);
|
||||
if (state->creq == NULL) goto failed;
|
||||
|
||||
state->creq->async.private_data = c;
|
||||
|
@ -56,6 +56,7 @@ struct smb_composite_fetchfile {
|
||||
const char *workgroup;
|
||||
const char *filename;
|
||||
struct smbcli_options options;
|
||||
struct resolve_context *resolve_ctx;
|
||||
} in;
|
||||
struct {
|
||||
uint8_t *data;
|
||||
|
@ -197,7 +197,8 @@ struct composite_context* libnet_LookupDCs_send(struct libnet_context *ctx,
|
||||
|
||||
c = finddcs_send(mem_ctx, lp_netbios_name(ctx->lp_ctx), lp_nbt_port(ctx->lp_ctx),
|
||||
io->in.domain_name, io->in.name_type,
|
||||
NULL, ctx->resolve_ctx, ctx->event_ctx, msg_ctx);
|
||||
NULL, lp_iconv_convenience(ctx->lp_ctx),
|
||||
ctx->resolve_ctx, ctx->event_ctx, msg_ctx);
|
||||
return c;
|
||||
}
|
||||
|
||||
|
@ -96,7 +96,7 @@ bool torture_groupinfo(struct torture_context *torture)
|
||||
/*
|
||||
* Testing synchronous version
|
||||
*/
|
||||
if (!test_opendomain(p, mem_ctx, &h, &name, &sid)) {
|
||||
if (!test_opendomain(torture, p, mem_ctx, &h, &name, &sid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
|
@ -67,12 +67,10 @@ bool torture_groupadd(struct torture_context *torture)
|
||||
&p,
|
||||
&ndr_table_samr);
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(torture, status, "RPC connection");
|
||||
|
||||
domain_name.string = lp_workgroup(torture->lp_ctx);
|
||||
if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
|
@ -152,12 +152,12 @@ bool torture_userinfo(struct torture_context *torture)
|
||||
/*
|
||||
* Testing synchronous version
|
||||
*/
|
||||
if (!test_opendomain(p, mem_ctx, &h, &name, &sid)) {
|
||||
if (!test_opendomain(torture, p, mem_ctx, &h, &name, &sid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_user_create(p, mem_ctx, &h, TEST_USERNAME, &rid)) {
|
||||
if (!test_user_create(torture, p, mem_ctx, &h, TEST_USERNAME, &rid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@ -167,7 +167,7 @@ bool torture_userinfo(struct torture_context *torture)
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_user_cleanup(p, mem_ctx, &h, TEST_USERNAME)) {
|
||||
if (!test_user_cleanup(torture, p, mem_ctx, &h, TEST_USERNAME)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@ -175,12 +175,12 @@ bool torture_userinfo(struct torture_context *torture)
|
||||
/*
|
||||
* Testing asynchronous version and monitor messages
|
||||
*/
|
||||
if (!test_opendomain(p, mem_ctx, &h, &name, &sid)) {
|
||||
if (!test_opendomain(torture, p, mem_ctx, &h, &name, &sid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_user_create(p, mem_ctx, &h, TEST_USERNAME, &rid)) {
|
||||
if (!test_user_create(torture, p, mem_ctx, &h, TEST_USERNAME, &rid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@ -190,7 +190,7 @@ bool torture_userinfo(struct torture_context *torture)
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_user_cleanup(p, mem_ctx, &h, TEST_USERNAME)) {
|
||||
if (!test_user_cleanup(torture, p, mem_ctx, &h, TEST_USERNAME)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
|
@ -79,7 +79,8 @@ static bool test_useradd_async(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
|
||||
}
|
||||
|
||||
static bool test_usermod(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
static bool test_usermod(struct torture_context *tctx, struct dcerpc_pipe *p,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
struct policy_handle *handle, int num_changes,
|
||||
struct libnet_rpc_usermod *mod, char **username)
|
||||
{
|
||||
@ -102,9 +103,10 @@ static bool test_usermod(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
mod->in.username = talloc_strdup(mem_ctx, *username);
|
||||
mod->in.domain_handle = *handle;
|
||||
|
||||
printf("modifying user (%d simultaneous change(s))\n", num_changes);
|
||||
torture_comment(tctx, "modifying user (%d simultaneous change(s))\n",
|
||||
num_changes);
|
||||
|
||||
printf("fields to change: [");
|
||||
torture_comment(tctx, "fields to change: [");
|
||||
|
||||
for (i = 0; i < num_changes && i < FIELDS_NUM - 1; i++) {
|
||||
const char *fldname;
|
||||
@ -201,13 +203,10 @@ static bool test_usermod(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
|
||||
printf(((i < num_changes - 1) ? "%s," : "%s"), fldname);
|
||||
}
|
||||
printf("]\n");
|
||||
torture_comment(tctx, "]\n");
|
||||
|
||||
status = libnet_rpc_usermod(p, mem_ctx, mod);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("Failed to call sync libnet_rpc_usermod - %s\n", nt_errstr(status));
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(tctx, status, "Failed to call sync libnet_rpc_usermod");
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -266,7 +265,8 @@ static bool test_userdel(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
}
|
||||
|
||||
|
||||
static bool test_compare(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
static bool test_compare(struct torture_context *tctx,
|
||||
struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
struct policy_handle *handle, struct libnet_rpc_usermod *mod,
|
||||
const char *username)
|
||||
{
|
||||
@ -282,10 +282,7 @@ static bool test_compare(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
info.in.level = 21; /* the most rich infolevel available */
|
||||
|
||||
status = libnet_rpc_userinfo(p, mem_ctx, &info);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("Failed to call sync libnet_rpc_userinfo - %s\n", nt_errstr(status));
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(tctx, status, "Failed to call sync libnet_rpc_userinfo");
|
||||
|
||||
i = &info.out.info.info21;
|
||||
|
||||
@ -321,12 +318,10 @@ bool torture_useradd(struct torture_context *torture)
|
||||
&p,
|
||||
&ndr_table_samr);
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(torture, status, "RPC connect failed");
|
||||
|
||||
domain_name.string = lp_workgroup(torture->lp_ctx);
|
||||
if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@ -336,12 +331,12 @@ bool torture_useradd(struct torture_context *torture)
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_user_cleanup(p, mem_ctx, &h, name)) {
|
||||
if (!test_user_cleanup(torture, p, mem_ctx, &h, name)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@ -351,7 +346,7 @@ bool torture_useradd(struct torture_context *torture)
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_user_cleanup(p, mem_ctx, &h, name)) {
|
||||
if (!test_user_cleanup(torture, p, mem_ctx, &h, name)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@ -385,12 +380,12 @@ bool torture_userdel(struct torture_context *torture)
|
||||
}
|
||||
|
||||
domain_name.string = lp_workgroup(torture->lp_ctx);
|
||||
if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_user_create(p, mem_ctx, &h, name, &rid)) {
|
||||
if (!test_user_create(torture, p, mem_ctx, &h, name, &rid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@ -425,20 +420,17 @@ bool torture_usermod(struct torture_context *torture)
|
||||
&p,
|
||||
&ndr_table_samr);
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
torture_assert_ntstatus_ok(torture, status, "RPC connect");
|
||||
|
||||
domain_name.string = lp_workgroup(torture->lp_ctx);
|
||||
name = talloc_strdup(mem_ctx, TEST_USERNAME);
|
||||
|
||||
if (!test_opendomain(p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
if (!test_opendomain(torture, p, mem_ctx, &h, &domain_name, &sid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_user_create(p, mem_ctx, &h, name, &rid)) {
|
||||
if (!test_user_create(torture, p, mem_ctx, &h, name, &rid)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
@ -446,19 +438,19 @@ bool torture_usermod(struct torture_context *torture)
|
||||
for (i = 1; i < FIELDS_NUM; i++) {
|
||||
struct libnet_rpc_usermod m;
|
||||
|
||||
if (!test_usermod(p, mem_ctx, &h, i, &m, &name)) {
|
||||
if (!test_usermod(torture, p, mem_ctx, &h, i, &m, &name)) {
|
||||
ret = false;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!test_compare(p, mem_ctx, &h, &m, name)) {
|
||||
if (!test_compare(torture, p, mem_ctx, &h, &m, name)) {
|
||||
ret = false;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
if (!test_user_cleanup(p, mem_ctx, &h, name)) {
|
||||
if (!test_user_cleanup(torture, p, mem_ctx, &h, name)) {
|
||||
ret = false;
|
||||
goto done;
|
||||
}
|
||||
|
@ -29,7 +29,8 @@
|
||||
#include "param/param.h"
|
||||
|
||||
|
||||
bool test_opendomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
bool test_opendomain(struct torture_context *tctx,
|
||||
struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
struct policy_handle *handle, struct lsa_String *domname,
|
||||
struct dom_sid2 *sid)
|
||||
{
|
||||
@ -39,51 +40,41 @@ bool test_opendomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
struct samr_LookupDomain r2;
|
||||
struct samr_OpenDomain r3;
|
||||
|
||||
printf("connecting\n");
|
||||
torture_comment(tctx, "connecting\n");
|
||||
|
||||
r1.in.system_name = 0;
|
||||
r1.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
|
||||
r1.out.connect_handle = &h;
|
||||
|
||||
status = dcerpc_samr_Connect(p, mem_ctx, &r1);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("Connect failed - %s\n", nt_errstr(status));
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(tctx, status, "Connect failed");
|
||||
|
||||
r2.in.connect_handle = &h;
|
||||
r2.in.domain_name = domname;
|
||||
|
||||
printf("domain lookup on %s\n", domname->string);
|
||||
torture_comment(tctx, "domain lookup on %s\n", domname->string);
|
||||
|
||||
status = dcerpc_samr_LookupDomain(p, mem_ctx, &r2);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("LookupDomain failed - %s\n", nt_errstr(status));
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(tctx, status, "LookupDomain failed");
|
||||
|
||||
r3.in.connect_handle = &h;
|
||||
r3.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
|
||||
r3.in.sid = r2.out.sid;
|
||||
r3.out.domain_handle = &domain_handle;
|
||||
|
||||
printf("opening domain\n");
|
||||
torture_comment(tctx, "opening domain\n");
|
||||
|
||||
status = dcerpc_samr_OpenDomain(p, mem_ctx, &r3);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("OpenDomain failed - %s\n", nt_errstr(status));
|
||||
return false;
|
||||
} else {
|
||||
*handle = domain_handle;
|
||||
}
|
||||
torture_assert_ntstatus_ok(tctx, status, "OpenDomain failed");
|
||||
*handle = domain_handle;
|
||||
|
||||
*sid = *r2.out.sid;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool test_user_cleanup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
struct policy_handle *domain_handle,
|
||||
bool test_user_cleanup(struct torture_context *tctx, struct dcerpc_pipe *p,
|
||||
TALLOC_CTX *mem_ctx, struct policy_handle *domain_handle,
|
||||
const char *name)
|
||||
{
|
||||
NTSTATUS status;
|
||||
@ -100,13 +91,10 @@ bool test_user_cleanup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
r1.in.num_names = 1;
|
||||
r1.in.names = names;
|
||||
|
||||
printf("user account lookup '%s'\n", name);
|
||||
torture_comment(tctx, "user account lookup '%s'\n", name);
|
||||
|
||||
status = dcerpc_samr_LookupNames(p, mem_ctx, &r1);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("LookupNames failed - %s\n", nt_errstr(status));
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(tctx, status, "LookupNames failed");
|
||||
|
||||
rid = r1.out.rids.ids[0];
|
||||
|
||||
@ -115,30 +103,25 @@ bool test_user_cleanup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
r2.in.rid = rid;
|
||||
r2.out.user_handle = &user_handle;
|
||||
|
||||
printf("opening user account\n");
|
||||
torture_comment(tctx, "opening user account\n");
|
||||
|
||||
status = dcerpc_samr_OpenUser(p, mem_ctx, &r2);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("OpenUser failed - %s\n", nt_errstr(status));
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(tctx, status, "OpenUser failed");
|
||||
|
||||
r3.in.user_handle = &user_handle;
|
||||
r3.out.user_handle = &user_handle;
|
||||
|
||||
printf("deleting user account\n");
|
||||
torture_comment(tctx, "deleting user account\n");
|
||||
|
||||
status = dcerpc_samr_DeleteUser(p, mem_ctx, &r3);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("DeleteUser failed - %s\n", nt_errstr(status));
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(tctx, status, "DeleteUser failed");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool test_user_create(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
bool test_user_create(struct torture_context *tctx,
|
||||
struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
struct policy_handle *handle, const char *name,
|
||||
uint32_t *rid)
|
||||
{
|
||||
@ -155,25 +138,22 @@ bool test_user_create(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
r.out.user_handle = &user_handle;
|
||||
r.out.rid = rid;
|
||||
|
||||
printf("creating user account %s\n", name);
|
||||
torture_comment(tctx, "creating user account %s\n", name);
|
||||
|
||||
status = dcerpc_samr_CreateUser(p, mem_ctx, &r);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("CreateUser failed - %s\n", nt_errstr(status));
|
||||
|
||||
if (NT_STATUS_EQUAL(status, NT_STATUS_USER_EXISTS)) {
|
||||
printf("User (%s) already exists - attempting to delete and recreate account again\n", name);
|
||||
if (!test_user_cleanup(p, mem_ctx, handle, name)) {
|
||||
torture_comment(tctx, "User (%s) already exists - attempting to delete and recreate account again\n", name);
|
||||
if (!test_user_cleanup(tctx, p, mem_ctx, handle, name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
printf("creating user account\n");
|
||||
torture_comment(tctx, "creating user account\n");
|
||||
|
||||
status = dcerpc_samr_CreateUser(p, mem_ctx, &r);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
printf("CreateUser failed - %s\n", nt_errstr(status));
|
||||
return false;
|
||||
}
|
||||
torture_assert_ntstatus_ok(tctx, status, "CreateUser failed");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -19,15 +19,18 @@
|
||||
*/
|
||||
|
||||
|
||||
bool test_opendomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
bool test_opendomain(struct torture_context *tctx,
|
||||
struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
struct policy_handle *handle, struct lsa_String *domname,
|
||||
struct dom_sid2 *sid);
|
||||
|
||||
bool test_user_create(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
bool test_user_create(struct torture_context *tctx,
|
||||
struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
struct policy_handle *handle, const char *name,
|
||||
uint32_t *rid);
|
||||
|
||||
bool test_user_cleanup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
bool test_user_cleanup(struct torture_context *tctx,
|
||||
struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
|
||||
struct policy_handle *domain_handle,
|
||||
const char *name);
|
||||
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "lib/cmdline/popt_common.h"
|
||||
#include "torture/util.h"
|
||||
#include "param/param.h"
|
||||
#include "libcli/resolve/resolve.h"
|
||||
|
||||
#define BASEDIR "\\composite"
|
||||
|
||||
@ -161,6 +162,7 @@ static bool test_fetchfile(struct smbcli_state *cli, struct torture_context *tct
|
||||
io2.in.credentials = cmdline_credentials;
|
||||
io2.in.workgroup = lp_workgroup(tctx->lp_ctx);
|
||||
io2.in.filename = fname;
|
||||
io2.in.resolve_ctx = lp_resolve_context(tctx->lp_ctx);
|
||||
lp_smbcli_options(tctx->lp_ctx, &io2.in.options);
|
||||
|
||||
printf("testing parallel fetchfile with %d ops\n", torture_numops);
|
||||
|
@ -71,6 +71,7 @@ struct composite_context *wb_get_dom_info_send(TALLOC_CTX *mem_ctx,
|
||||
lp_nbt_port(service->task->lp_ctx),
|
||||
domain_name, NBT_NAME_LOGON,
|
||||
dom_sid,
|
||||
lp_iconv_convenience(service->task->lp_ctx),
|
||||
lp_resolve_context(service->task->lp_ctx),
|
||||
service->task->event_ctx,
|
||||
service->task->msg_ctx);
|
||||
|
Reference in New Issue
Block a user