1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "sandbox/mac/policy.h"
10 : result(POLICY_DECISION_INVALID
),
11 substitute_port(MACH_PORT_NULL
) {
14 Rule::Rule(PolicyDecision result
)
16 substitute_port(MACH_PORT_NULL
) {
19 Rule::Rule(mach_port_t override_port
)
20 : result(POLICY_SUBSTITUTE_PORT
),
21 substitute_port(override_port
) {
24 BootstrapSandboxPolicy::BootstrapSandboxPolicy()
25 : default_rule(POLICY_DENY_ERROR
) {
28 BootstrapSandboxPolicy::~BootstrapSandboxPolicy() {}
30 static bool IsRuleValid(const Rule
& rule
) {
31 if (!(rule
.result
> POLICY_DECISION_INVALID
&&
32 rule
.result
< POLICY_DECISION_LAST
)) {
35 if (rule
.result
== POLICY_SUBSTITUTE_PORT
) {
36 if (rule
.substitute_port
== MACH_PORT_NULL
)
39 if (rule
.substitute_port
!= MACH_PORT_NULL
)
45 bool IsPolicyValid(const BootstrapSandboxPolicy
& policy
) {
46 if (!IsRuleValid(policy
.default_rule
))
49 for (const auto& pair
: policy
.rules
) {
50 if (!IsRuleValid(pair
.second
))
56 } // namespace sandbox