static BOOL test_Lookup(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) { NTSTATUS status; struct epm_Lookup r; struct GUID uuid; struct rpc_if_id_t iface; struct policy_handle handle; ZERO_STRUCT(handle); r.in.inquiry_type = 0; r.in.object = &uuid; r.in.interface_id = &iface; r.in.vers_option = 0; r.in.entry_handle = &handle; r.out.entry_handle = &handle; r.in.max_ents = 10; do { int i; ZERO_STRUCT(uuid); ZERO_STRUCT(iface); status = dcerpc_epm_Lookup(p, mem_ctx, &r); if (!NT_STATUS_IS_OK(status) || r.out.result != 0) { break; } printf("epm_Lookup returned %d events GUID %s\n", *r.out.num_ents, GUID_string(mem_ctx, &handle.uuid)); 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) { test_Map(p, mem_ctx, r.out.entries[i].tower); } } } while (NT_STATUS_IS_OK(status) && r.out.result == 0 && *r.out.num_ents == r.in.max_ents && !policy_handle_empty(&handle)); if (!NT_STATUS_IS_OK(status)) { printf("Lookup failed - %s\n", nt_errstr(status)); return False; } return True; }
static bool test_Lookup(struct torture_context *tctx, struct dcerpc_pipe *p) { NTSTATUS status; struct epm_Lookup r; struct GUID uuid; struct rpc_if_id_t iface; struct policy_handle handle; uint32_t num_ents; ZERO_STRUCT(handle); r.in.inquiry_type = 0; r.in.object = &uuid; r.in.interface_id = &iface; r.in.vers_option = 0; r.in.entry_handle = &handle; r.out.entry_handle = &handle; r.in.max_ents = 10; r.out.num_ents = &num_ents; do { int i; ZERO_STRUCT(uuid); ZERO_STRUCT(iface); status = dcerpc_epm_Lookup(p, tctx, &r); if (!NT_STATUS_IS_OK(status) || r.out.result != 0) { break; } printf("epm_Lookup returned %d events GUID %s\n", *r.out.num_ents, GUID_string(tctx, &handle.uuid)); for (i=0;i<*r.out.num_ents;i++) { printf("\nFound '%s'\n", r.out.entries[i].annotation); display_tower(tctx, &r.out.entries[i].tower->tower); if (r.out.entries[i].tower->tower.num_floors == 5) { test_Map(p, tctx, r.out.entries[i].tower); } } } while (NT_STATUS_IS_OK(status) && r.out.result == 0 && *r.out.num_ents == r.in.max_ents && !policy_handle_empty(&handle)); torture_assert_ntstatus_ok(tctx, status, "Lookup failed"); return true; }