bool torture_groupinfo(struct torture_context *torture) { NTSTATUS status; struct dcerpc_pipe *p; TALLOC_CTX *mem_ctx; bool ret = true; struct policy_handle h; struct lsa_String name; struct dom_sid2 sid; uint32_t rid; struct dcerpc_binding_handle *b; mem_ctx = talloc_init("test_userinfo"); status = torture_rpc_connection(torture, &p, &ndr_table_samr); if (!NT_STATUS_IS_OK(status)) { return false; } b = p->binding_handle; name.string = lpcfg_workgroup(torture->lp_ctx); /* * Testing synchronous version */ if (!test_domain_open(torture, b, &name, mem_ctx, &h, &sid)) { ret = false; goto done; } if (!test_group_create(torture, b, mem_ctx, &h, TEST_GROUPNAME, &rid)) { ret = false; goto done; } if (!test_groupinfo(torture, p, mem_ctx, &h, &sid, TEST_GROUPNAME, &rid)) { ret = false; goto done; } if (!test_group_cleanup(torture, b, mem_ctx, &h, TEST_GROUPNAME)) { ret = false; goto done; } done: talloc_free(mem_ctx); return ret; }
bool torture_groupinfo_api(struct torture_context *torture) { const char *name = TEST_GROUPNAME; bool ret = true; NTSTATUS status; TALLOC_CTX *mem_ctx = NULL, *prep_mem_ctx; struct libnet_context *ctx = NULL; struct dcerpc_pipe *p; struct policy_handle h; struct lsa_String domain_name; struct libnet_GroupInfo req; prep_mem_ctx = talloc_init("prepare torture group info"); status = torture_rpc_connection(torture, &p, &ndr_table_samr); if (!NT_STATUS_IS_OK(status)) { return false; } domain_name.string = lpcfg_workgroup(torture->lp_ctx); if (!test_domain_open(torture, p->binding_handle, &domain_name, prep_mem_ctx, &h, NULL)) { ret = false; goto done; } if (!test_group_create(torture, p->binding_handle, prep_mem_ctx, &h, name, NULL)) { ret = false; goto done; } mem_ctx = talloc_init("torture group info"); if (!test_libnet_context_init(torture, true, &ctx)) { return false; } ZERO_STRUCT(req); req.in.domain_name = domain_name.string; req.in.level = GROUP_INFO_BY_NAME; req.in.data.group_name = name; status = libnet_GroupInfo(ctx, mem_ctx, &req); if (!NT_STATUS_IS_OK(status)) { torture_comment(torture, "libnet_GroupInfo call failed: %s\n", nt_errstr(status)); ret = false; goto done; } if (!test_group_cleanup(torture, ctx->samr.pipe->binding_handle, mem_ctx, &ctx->samr.handle, TEST_GROUPNAME)) { torture_comment(torture, "cleanup failed\n"); ret = false; goto done; } if (!test_samr_close_handle(torture, ctx->samr.pipe->binding_handle, mem_ctx, &ctx->samr.handle)) { torture_comment(torture, "domain close failed\n"); ret = false; } done: talloc_free(ctx); talloc_free(mem_ctx); return ret; }