| Index: sandbox/mac/policy.h
|
| diff --git a/sandbox/mac/policy.h b/sandbox/mac/policy.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..01ea85af511d5c60028368010aed11f4b7328864
|
| --- /dev/null
|
| +++ b/sandbox/mac/policy.h
|
| @@ -0,0 +1,57 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef SANDBOX_MAC_POLICY_H_
|
| +#define SANDBOX_MAC_POLICY_H_
|
| +
|
| +#include <mach/mach.h>
|
| +
|
| +#include <map>
|
| +#include <string>
|
| +
|
| +#include "sandbox/sandbox_export.h"
|
| +
|
| +namespace sandbox {
|
| +
|
| +enum PolicyDecision {
|
| + POLICY_DECISION_INVALID,
|
| + // Explicitly allows the real service to be looked up from launchd.
|
| + POLICY_ALLOW,
|
| + // Deny the look up request by replying with a MIG error. This is the
|
| + // default behavior for servers not given an explicit rule.
|
| + POLICY_DENY_ERROR,
|
| + // Deny the look up request with a well-formed reply containing a
|
| + // Mach port with a send right, messages to which will be ignored.
|
| + POLICY_DENY_DUMMY_PORT,
|
| + // Reply to the look up request with a send right to the substitute_port
|
| + // specified in the Rule.
|
| + POLICY_SUBSTITUTE_PORT,
|
| + POLICY_DECISION_LAST,
|
| +};
|
| +
|
| +// A Rule expresses the action to take when a service port is requested via
|
| +// bootstrap_look_up. If |result| is not POLICY_SUBSTITUTE_PORT, then
|
| +// |substitute_port| must be NULL. If result is POLICY_SUBSTITUTE_PORT, then
|
| +// |substitute_port| must not be NULL.
|
| +struct SANDBOX_EXPORT Rule {
|
| + Rule();
|
| + explicit Rule(PolicyDecision result);
|
| + explicit Rule(mach_port_t override_port);
|
| +
|
| + PolicyDecision result;
|
| +
|
| + // The Rule does not take ownership of this port, but additional send rights
|
| + // will be allocated to it before it is sent to a client.
|
| + mach_port_t substitute_port;
|
| +};
|
| +
|
| +// A SandboxPolicy maps bootstrap server names to policy Rules.
|
| +typedef std::map<std::string, Rule> BootstrapSandboxPolicy;
|
| +
|
| +// Checks that a policy is well-formed.
|
| +SANDBOX_EXPORT bool IsPolicyValid(const BootstrapSandboxPolicy& policy);
|
| +
|
| +} // namespace sandbox
|
| +
|
| +#endif // SANDBOX_MAC_POLICY_H_
|
|
|