if (!NT_STATUS_IS_OK(status) || r.out.result != 0) {
break;
}
- for (i=0;i<r.out.num_ents;i++) {
+ for (i=0;i<*r.out.num_ents;i++) {
add_epm_entry(mem_ctx, r.out.entries[i].annotation, &r.out.entries[i].tower->tower);
}
} while (NT_STATUS_IS_OK(status) &&
r.out.result == 0 &&
- r.out.num_ents == r.in.max_ents);
+ *r.out.num_ents == r.in.max_ents);
if (!NT_STATUS_IS_OK(status)) {
gtk_show_ntstatus(mainwin, "Error adding endpoint mapper entry", status);
endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]",
"ncalrpc:[EPMAPPER]"),
helpstring("EndPoint Mapper"),
- pointer_default_top(sptr),
- pointer_default(sptr)
+ pointer_default(ptr)
]
interface epmapper
{
[in] uint32 vers_option,
[in,out,ref] policy_handle *entry_handle,
[in] uint32 max_ents,
- [out] uint32 num_ents,
- [out, length_is(num_ents), size_is(max_ents)] epm_entry_t entries[]
+ [out] uint32 *num_ents,
+ [out, length_is(*num_ents), size_is(max_ents)] epm_entry_t entries[]
);
[in] epm_twr_t *map_tower,
[in,out,ref] policy_handle *entry_handle,
[in] uint32 max_towers,
- [out] uint32 num_towers,
- [out, length_is(num_towers), size_is(max_towers)] epm_twr_p_t towers[]
+ [out] uint32 *num_towers,
+ [out, length_is(*num_towers), size_is(max_towers)] epm_twr_p_t towers[]
);
c->status = dcerpc_pipe_connect_b_recv(ctx, c, &s->pipe);
if (!composite_is_ok(c)) return;
+ s->pipe->conn->flags |= DCERPC_NDR_REF_ALLOC;
+
/* prepare requested binding parameters */
s->binding->object = s->table->syntax_id;
if (!composite_is_ok(c)) return;
/* check the details */
- if (s->r.out.result != 0 || s->r.out.num_towers != 1) {
+ if (s->r.out.result != 0 || *s->r.out.num_towers != 1) {
composite_error(c, NT_STATUS_PORT_UNREACHABLE);
return;
}
}
*r->out.entry_handle = h->wire_handle;
- r->out.num_ents = num_ents;
+ r->out.num_ents = talloc(mem_ctx, uint32_t);
+ *r->out.num_ents = num_ents;
if (num_ents == 0) {
r->out.entries = NULL;
count = build_ep_list(mem_ctx, dce_call->conn->dce_ctx->endpoint_list, &eps);
ZERO_STRUCT(*r->out.entry_handle);
- r->out.num_towers = 1;
+ r->out.num_towers = talloc(mem_ctx, uint32_t);
+ *r->out.num_towers = 1;
r->out.towers = talloc(mem_ctx, struct epm_twr_p_t);
if (!r->out.towers) {
return EPMAPPER_STATUS_NO_MEMORY;
failed:
- r->out.num_towers = 0;
+ *r->out.num_towers = 0;
r->out.towers->twr = NULL;
return EPMAPPER_STATUS_NO_MORE_ENTRIES;
status = dcerpc_epm_Map(p, mem_ctx, &r);
if (NT_STATUS_IS_OK(status) && r.out.result == 0) {
- for (i=0;i<r.out.num_towers;i++) {
+ for (i=0;i<*r.out.num_towers;i++) {
if (r.out.towers[i].twr) {
display_tower(mem_ctx, &r.out.towers[i].twr->tower);
}
status = dcerpc_epm_Map(p, mem_ctx, &r);
if (NT_STATUS_IS_OK(status) && r.out.result == 0) {
- for (i=0;i<r.out.num_towers;i++) {
+ for (i=0;i<*r.out.num_towers;i++) {
if (r.out.towers[i].twr) {
display_tower(mem_ctx, &r.out.towers[i].twr->tower);
}
status = dcerpc_epm_Map(p, mem_ctx, &r);
if (NT_STATUS_IS_OK(status) && r.out.result == 0) {
- for (i=0;i<r.out.num_towers;i++) {
+ for (i=0;i<*r.out.num_towers;i++) {
if (r.out.towers[i].twr) {
display_tower(mem_ctx, &r.out.towers[i].twr->tower);
}
status = dcerpc_epm_Map(p, mem_ctx, &r);
if (NT_STATUS_IS_OK(status) && r.out.result == 0) {
- for (i=0;i<r.out.num_towers;i++) {
+ for (i=0;i<*r.out.num_towers;i++) {
if (r.out.towers[i].twr) {
display_tower(mem_ctx, &r.out.towers[i].twr->tower);
}
}
printf("epm_Lookup returned %d events GUID %s\n",
- r.out.num_ents, GUID_string(mem_ctx, &handle.uuid));
+ *r.out.num_ents, GUID_string(mem_ctx, &handle.uuid));
- for (i=0;i<r.out.num_ents;i++) {
+ for (i=0;i<*r.out.num_ents;i++) {
printf("\nFound '%s'\n", r.out.entries[i].annotation);
display_tower(mem_ctx, &r.out.entries[i].tower->tower);
if (r.out.entries[i].tower->tower.num_floors == 5) {
}
} while (NT_STATUS_IS_OK(status) &&
r.out.result == 0 &&
- r.out.num_ents == r.in.max_ents &&
+ *r.out.num_ents == r.in.max_ents &&
!policy_handle_empty(&handle));
if (!NT_STATUS_IS_OK(status)) {