Chromium Code Reviews| Index: sandbox/mac/policy.h |
| diff --git a/sandbox/mac/policy.h b/sandbox/mac/policy.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f1b1320224eafb847f6ed6ec697abb4ca508f62e |
| --- /dev/null |
| +++ b/sandbox/mac/policy.h |
| @@ -0,0 +1,55 @@ |
| +// 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> |
| + |
| +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_SUBSTITUE_PORT, |
|
Avi (use Gerrit)
2014/05/09 21:02:06
typo: SUBSTITUTE
Robert Sesek
2014/05/09 22:04:03
Ooof. Done.
|
| + 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_SUBSTITUE_PORT, then |
| +// |substitute_port| must be NULL. If result is POLICY_SUBSTITUE_PORT, then |
|
Avi (use Gerrit)
2014/05/09 21:02:06
Fix the constant names on this line and the line a
Robert Sesek
2014/05/09 22:04:03
Done.
|
| +// |substitute_port| must not be NULL. |
| +struct 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. |
| +bool IsPolicyValid(const BootstrapSandboxPolicy& policy); |
| + |
| +} // namespace sandbox |
| + |
| +#endif // SANDBOX_MAC_POLICY_H_ |