Example #1
0
static BOOL test_opendomain_lsa(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
				struct policy_handle *handle, struct lsa_String *domname,
				uint32_t *access_mask)
{
	NTSTATUS status;
	struct lsa_OpenPolicy2 open;
	struct lsa_ObjectAttribute attr;
	struct lsa_QosInfo qos;

	*access_mask = SEC_FLAG_MAXIMUM_ALLOWED;

	ZERO_STRUCT(attr);
	ZERO_STRUCT(qos);

	qos.len                 = 0;
	qos.impersonation_level = 2;
	qos.context_mode        = 1;
	qos.effective_only      = 0;
	
	attr.sec_qos = &qos;

	open.in.system_name = domname->string;
	open.in.attr        = &attr;
	open.in.access_mask = *access_mask;
	open.out.handle     = handle;
	
	status = dcerpc_lsa_OpenPolicy2(p, mem_ctx, &open);
	if (!NT_STATUS_IS_OK(status)) {
		return False;
	}

	return True;
}
Example #2
0
NTSTATUS dcerpc_lsa_open_policy2(struct dcerpc_binding_handle *h,
				 TALLOC_CTX *mem_ctx,
				 const char *srv_name_slash,
				 bool sec_qos,
				 uint32_t des_access,
				 struct policy_handle *pol,
				 NTSTATUS *result)
{
	struct lsa_ObjectAttribute attr;
	struct lsa_QosInfo qos;

	ZERO_STRUCT(attr);

	attr.len	= 0x18;

	if (sec_qos) {
		qos.len			= 0xc;
		qos.impersonation_level	= 2;
		qos.context_mode	= 1;
		qos.effective_only	= 0;

		attr.sec_qos		= &qos;
	}

	return dcerpc_lsa_OpenPolicy2(h,
				      mem_ctx,
				      srv_name_slash,
				      &attr,
				      des_access,
				      pol,
				      result);
}
Example #3
0
static BOOL open_policy(TALLOC_CTX *mem_ctx, struct dcerpc_pipe *p,
			struct policy_handle **handle)
{
	struct lsa_ObjectAttribute attr;
	struct lsa_QosInfo qos;
	struct lsa_OpenPolicy2 r;
	NTSTATUS status;

	*handle = talloc(mem_ctx, struct policy_handle);
	if (!*handle) {
		return False;
	}

	qos.len = 0;
	qos.impersonation_level = 2;
	qos.context_mode = 1;
	qos.effective_only = 0;

	attr.len = 0;
	attr.root_dir = NULL;
	attr.object_name = NULL;
	attr.attributes = 0;
	attr.sec_desc = NULL;
	attr.sec_qos = &qos;

	r.in.system_name = "\\";
	r.in.attr = &attr;
	r.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
	r.out.handle = *handle;

	status = dcerpc_lsa_OpenPolicy2(p, mem_ctx, &r);

	return NT_STATUS_IS_OK(status);
}