WERROR netr_GetAnyDCName(
[in,unique] [string,charset(UTF16)] uint16 *logon_server,
[in,unique] [string,charset(UTF16)] uint16 *domainname,
- [out,unique] [string,charset(UTF16)] uint16 *dcname
+ [out,ref] [string,charset(UTF16)] uint16 **dcname
);
{
NTSTATUS status;
struct netr_GetAnyDCName r;
+ const char *dcname = NULL;
r.in.logon_server = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p));
r.in.domainname = lp_workgroup(tctx->lp_ctx);
+ r.out.dcname = &dcname;
status = dcerpc_netr_GetAnyDCName(p, tctx, &r);
torture_assert_ntstatus_ok(tctx, status, "GetAnyDCName");
- if (r.out.dcname) {
- torture_comment(tctx, "\tDC is at '%s'\n", r.out.dcname);
+ if (dcname) {
+ torture_comment(tctx, "\tDC is at '%s'\n", dcname);
}
return true;
struct lsa_EnumTrustDom t;
uint32_t resume_handle = 0;
struct netr_GetAnyDCName d;
+ const char *dcname = NULL;
int i;
d.in.logon_server = talloc_asprintf(tctx, "\\\\%s",
dcerpc_server_name(p));
+ d.out.dcname = &dcname;
for (i=0; i<domains.count * 4; i++) {
struct lsa_DomainInfo *info =
torture_assert_ntstatus_ok(tctx, status, "GetAnyDCName");
torture_comment(tctx, "\tDC for domain %s is %s\n", info->name.string,
- d.out.dcname ? d.out.dcname : "unknown");
+ dcname ? dcname : "unknown");
}
return true;
state, "\\\\%s",
dcerpc_server_name(domain->netlogon_pipe));
state->g.in.domainname = state->domain_name;
+ state->g.out.dcname = talloc(state, const char **);
req = dcerpc_netr_GetAnyDCName_send(domain->netlogon_pipe, state,
&state->g);
talloc_get_type(c->private_data, struct cmd_getdcname_state);
NTSTATUS status = composite_wait(c);
if (NT_STATUS_IS_OK(status)) {
- const char *p = state->g.out.dcname;
+ const char *p = *(state->g.out.dcname);
if (*p == '\\') p += 1;
if (*p == '\\') p += 1;
*dcname = talloc_strdup(mem_ctx, p);
state, "\\\\%s",
dcerpc_server_name(state->my_domain->netlogon_pipe));
state->g.in.domainname = state->info->name;
+ state->g.out.dcname = talloc(state, const char *);
req = dcerpc_netr_GetAnyDCName_send(state->my_domain->netlogon_pipe,
state, &state->g);
state->info->num_dcs = 1;
state->info->dcs = talloc(state->info, struct nbt_dc_name);
state->info->dcs[0].name = talloc_steal(state->info,
- state->g.out.dcname);
+ *(state->g.out.dcname));
if (*state->info->dcs[0].name == '\\') state->info->dcs[0].name++;
if (*state->info->dcs[0].name == '\\') state->info->dcs[0].name++;