Index: sandbox/win/src/policy_engine_processor.cc |
diff --git a/sandbox/win/src/policy_engine_processor.cc b/sandbox/win/src/policy_engine_processor.cc |
deleted file mode 100644 |
index 960db085c37cbbebe42d161a956d9a36933e57d6..0000000000000000000000000000000000000000 |
--- a/sandbox/win/src/policy_engine_processor.cc |
+++ /dev/null |
@@ -1,110 +0,0 @@ |
-// Copyright (c) 2006-2008 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. |
- |
-#include <stddef.h> |
-#include <stdint.h> |
- |
-#include "sandbox/win/src/policy_engine_processor.h" |
- |
-namespace sandbox { |
- |
-void PolicyProcessor::SetInternalState(size_t index, EvalResult result) { |
- state_.current_index_ = index; |
- state_.current_result_ = result; |
-} |
- |
-EvalResult PolicyProcessor::GetAction() const { |
- return state_.current_result_; |
-} |
- |
-// Decides if an opcode can be skipped (not evaluated) or not. The function |
-// takes as inputs the opcode and the current evaluation context and returns |
-// true if the opcode should be skipped or not and also can set keep_skipping |
-// to false to signal that the current instruction should be skipped but not |
-// the next after the current one. |
-bool SkipOpcode(const PolicyOpcode& opcode, MatchContext* context, |
- bool* keep_skipping) { |
- if (opcode.IsAction()) { |
- uint32_t options = context->options; |
- context->Clear(); |
- *keep_skipping = false; |
- return (kPolUseOREval != options); |
- } |
- *keep_skipping = true; |
- return true; |
-} |
- |
-PolicyResult PolicyProcessor::Evaluate(uint32_t options, |
- ParameterSet* parameters, |
- size_t param_count) { |
- if (NULL == policy_) { |
- return NO_POLICY_MATCH; |
- } |
- if (0 == policy_->opcode_count) { |
- return NO_POLICY_MATCH; |
- } |
- if (!(kShortEval & options)) { |
- return POLICY_ERROR; |
- } |
- |
- MatchContext context; |
- bool evaluation = false; |
- bool skip_group = false; |
- SetInternalState(0, EVAL_FALSE); |
- size_t count = policy_->opcode_count; |
- |
- // Loop over all the opcodes Evaluating in sequence. Since we only support |
- // short circuit evaluation, we stop as soon as we find an 'action' opcode |
- // and the current evaluation is true. |
- // |
- // Skipping opcodes can happen when we are in AND mode (!kPolUseOREval) and |
- // have got EVAL_FALSE or when we are in OR mode (kPolUseOREval) and got |
- // EVAL_TRUE. Skipping will stop at the next action opcode or at the opcode |
- // after the action depending on kPolUseOREval. |
- |
- for (size_t ix = 0; ix != count; ++ix) { |
- PolicyOpcode& opcode = policy_->opcodes[ix]; |
- // Skipping block. |
- if (skip_group) { |
- if (SkipOpcode(opcode, &context, &skip_group)) { |
- continue; |
- } |
- } |
- // Evaluation block. |
- EvalResult result = opcode.Evaluate(parameters, param_count, &context); |
- switch (result) { |
- case EVAL_FALSE: |
- evaluation = false; |
- if (kPolUseOREval != context.options) { |
- skip_group = true; |
- } |
- break; |
- case EVAL_ERROR: |
- if (kStopOnErrors & options) { |
- return POLICY_ERROR; |
- } |
- break; |
- case EVAL_TRUE: |
- evaluation = true; |
- if (kPolUseOREval == context.options) { |
- skip_group = true; |
- } |
- break; |
- default: |
- // We have evaluated an action. |
- SetInternalState(ix, result); |
- return POLICY_MATCH; |
- } |
- } |
- |
- if (evaluation) { |
- // Reaching the end of the policy with a positive evaluation is probably |
- // an error: we did not find a final action opcode? |
- return POLICY_ERROR; |
- } |
- return NO_POLICY_MATCH; |
-} |
- |
- |
-} // namespace sandbox |