diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/libcli/finddcs.c | 11 | ||||
-rw-r--r-- | source4/libcli/smb_composite/fetchfile.c | 2 | ||||
-rw-r--r-- | source4/libcli/smb_composite/smb_composite.h | 1 | ||||
-rw-r--r-- | source4/libnet/libnet_lookup.c | 3 | ||||
-rw-r--r-- | source4/torture/libnet/groupinfo.c | 2 | ||||
-rw-r--r-- | source4/torture/libnet/groupman.c | 6 | ||||
-rw-r--r-- | source4/torture/libnet/userinfo.c | 12 | ||||
-rw-r--r-- | source4/torture/libnet/userman.c | 54 | ||||
-rw-r--r-- | source4/torture/libnet/utils.c | 68 | ||||
-rw-r--r-- | source4/torture/libnet/utils.h | 9 | ||||
-rw-r--r-- | source4/torture/raw/composite.c | 2 | ||||
-rw-r--r-- | source4/winbind/wb_dom_info.c | 1 |
12 files changed, 78 insertions, 93 deletions
diff --git a/source4/libcli/finddcs.c b/source4/libcli/finddcs.c index 67ba47ddc6..56f931ce19 100644 --- a/source4/libcli/finddcs.c +++ b/source4/libcli/finddcs.c @@ -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); } diff --git a/source4/libcli/smb_composite/fetchfile.c b/source4/libcli/smb_composite/fetchfile.c index e4312794c9..d8d7481270 100644 --- a/source4/libcli/smb_composite/fetchfile.c +++ b/source4/libcli/smb_composite/fetchfile.c @@ -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; diff --git a/source4/libcli/smb_composite/smb_composite.h b/source4/libcli/smb_composite/smb_composite.h index 964ffb0936..e7e131869c 100644 --- a/source4/libcli/smb_composite/smb_composite.h +++ b/source4/libcli/smb_composite/smb_composite.h @@ -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; diff --git a/source4/libnet/libnet_lookup.c b/source4/libnet/libnet_lookup.c index 409cc7575b..cab4d9e73f 100644 --- a/source4/libnet/libnet_lookup.c +++ b/source4/libnet/libnet_lookup.c @@ -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; } diff --git a/source4/torture/libnet/groupinfo.c b/source4/torture/libnet/groupinfo.c index 55edb9d40d..4ddb1cefbe 100644 --- a/source4/torture/libnet/groupinfo.c +++ b/source4/torture/libnet/groupinfo.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; } diff --git a/source4/torture/libnet/groupman.c b/source4/torture/libnet/groupman.c index adb055c750..51b1c65b30 100644 --- a/source4/torture/libnet/groupman.c +++ b/source4/torture/libnet/groupman.c @@ -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; } diff --git a/source4/torture/libnet/userinfo.c b/source4/torture/libnet/userinfo.c index e862435d20..11e57f852d 100644 --- a/source4/torture/libnet/userinfo.c +++ b/source4/torture/libnet/userinfo.c @@ -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; } diff --git a/source4/torture/libnet/userman.c b/source4/torture/libnet/userman.c index 1d630e5ecd..5ce0a64022 100644 --- a/source4/torture/libnet/userman.c +++ b/source4/torture/libnet/userman.c @@ -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; } diff --git a/source4/torture/libnet/utils.c b/source4/torture/libnet/utils.c index 47bb9315c7..d4124cc823 100644 --- a/source4/torture/libnet/utils.c +++ b/source4/torture/libnet/utils.c @@ -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; diff --git a/source4/torture/libnet/utils.h b/source4/torture/libnet/utils.h index ff94ec49e9..b513b1a29e 100644 --- a/source4/torture/libnet/utils.h +++ b/source4/torture/libnet/utils.h @@ -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); diff --git a/source4/torture/raw/composite.c b/source4/torture/raw/composite.c index 7238a2fd46..1f31fbc515 100644 --- a/source4/torture/raw/composite.c +++ b/source4/torture/raw/composite.c @@ -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); diff --git a/source4/winbind/wb_dom_info.c b/source4/winbind/wb_dom_info.c index 7558fc9d62..4fcbf3a6e5 100644 --- a/source4/winbind/wb_dom_info.c +++ b/source4/winbind/wb_dom_info.c @@ -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); |