Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3414)

Unified Diff: sandbox/win/src/policy_low_level.h

Issue 1851213002: Remove sandbox on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix nacl compile issues Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sandbox/win/src/policy_engine_unittest.cc ('k') | sandbox/win/src/policy_low_level.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sandbox/win/src/policy_low_level.h
diff --git a/sandbox/win/src/policy_low_level.h b/sandbox/win/src/policy_low_level.h
deleted file mode 100644
index f77787c7723cfefba0158461aea476b8adc005ef..0000000000000000000000000000000000000000
--- a/sandbox/win/src/policy_low_level.h
+++ /dev/null
@@ -1,193 +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.
-
-#ifndef SANDBOX_SRC_POLICY_LOW_LEVEL_H__
-#define SANDBOX_SRC_POLICY_LOW_LEVEL_H__
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <list>
-
-#include "base/macros.h"
-#include "base/strings/string16.h"
-#include "sandbox/win/src/ipc_tags.h"
-#include "sandbox/win/src/policy_engine_opcodes.h"
-#include "sandbox/win/src/policy_engine_params.h"
-
-// Low level policy classes.
-// Built on top of the PolicyOpcode and OpcodeFatory, the low level policy
-// provides a way to define rules on strings and numbers but it is unaware
-// of Windows specific details or how the Interceptions must be set up.
-// To use these classes you construct one or more rules and add them to the
-// LowLevelPolicy object like this:
-//
-// PolicyRule rule1(ASK_BROKER);
-// rule1.AddStringMatch(IF, 0, L"\\\\/?/?\\c:\\*Microsoft*\\*.exe", true);
-// rule1.AddNumberMatch(IF_NOT, 1, CREATE_ALWAYS, EQUAL);
-// rule1.AddNumberMatch(IF, 2, FILE_ATTRIBUTE_NORMAL, EQUAL);
-//
-// PolicyRule rule2(FAKE_SUCCESS);
-// rule2.AddStringMatch(IF, 0, L"\\\\/?/?\\Pipe\\Chrome.*", false));
-// rule2.AddNumberMatch(IF, 1, OPEN_EXISTING, EQUAL));
-//
-// LowLevelPolicy policyGen(*policy_memory);
-// policyGen.AddRule(kNtCreateFileSvc, &rule1);
-// policyGen.AddRule(kNtCreateFileSvc, &rule2);
-// policyGen.Done();
-//
-// At this point (error checking omitted) the policy_memory can be copied
-// to the target process where it can be evaluated.
-
-namespace sandbox {
-
-// TODO(cpu): Move this constant to crosscall_client.h.
-const size_t kMaxServiceCount = 32;
-static_assert(IPC_LAST_TAG <= kMaxServiceCount,
- "kMaxServiceCount is too low");
-
-// Defines the memory layout of the policy. This memory is filled by
-// LowLevelPolicy object.
-// For example:
-//
-// [Service 0] --points to---\
-// [Service 1] --------------|-----\
-// ...... | |
-// [Service N] | |
-// [data_size] | |
-// [Policy Buffer 0] <-------/ |
-// [opcodes of] |
-// ....... |
-// [Policy Buffer 1] <-------------/
-// [opcodes]
-// .......
-// .......
-// [Policy Buffer N]
-// [opcodes]
-// .......
-// <possibly unused space here>
-// .......
-// [opcode string ]
-// [opcode string ]
-// .......
-// [opcode string ]
-struct PolicyGlobal {
- PolicyBuffer* entry[kMaxServiceCount];
- size_t data_size;
- PolicyBuffer data[1];
-};
-
-class PolicyRule;
-
-// Provides the means to collect rules into a policy store (memory)
-class LowLevelPolicy {
- public:
- // policy_store: must contain allocated memory and the internal
- // size fields set to correct values.
- explicit LowLevelPolicy(PolicyGlobal* policy_store);
-
- // Destroys all the policy rules.
- ~LowLevelPolicy();
-
- // Adds a rule to be generated when Done() is called.
- // service: The id of the service that this rule is associated with,
- // for example the 'Open Thread' service or the "Create File" service.
- // returns false on error.
- bool AddRule(int service, PolicyRule* rule);
-
- // Generates all the rules added with AddRule() into the memory area
- // passed on the constructor. Returns false on error.
- bool Done();
-
- private:
- struct RuleNode {
- const PolicyRule* rule;
- int service;
- };
- std::list<RuleNode> rules_;
- PolicyGlobal* policy_store_;
- DISALLOW_IMPLICIT_CONSTRUCTORS(LowLevelPolicy);
-};
-
-// There are 'if' rules and 'if not' comparisons
-enum RuleType {
- IF = 0,
- IF_NOT = 1,
-};
-
-// Possible comparisons for numbers
-enum RuleOp {
- EQUAL,
- AND,
- RANGE // TODO(cpu): Implement this option.
-};
-
-// Provides the means to collect a set of comparisons into a single
-// rule and its associated action.
-class PolicyRule {
- friend class LowLevelPolicy;
-
- public:
- explicit PolicyRule(EvalResult action);
- PolicyRule(const PolicyRule& other);
- ~PolicyRule();
-
- // Adds a string comparison to the rule.
- // rule_type: possible values are IF and IF_NOT.
- // parameter: the expected index of the argument for this rule. For example
- // in a 'create file' service the file name argument can be at index 0.
- // string: is the desired matching pattern.
- // match_opts: if the pattern matching is case sensitive or not.
- bool AddStringMatch(RuleType rule_type,
- int16_t parameter,
- const wchar_t* string,
- StringMatchOptions match_opts);
-
- // Adds a number match comparison to the rule.
- // rule_type: possible values are IF and IF_NOT.
- // parameter: the expected index of the argument for this rule.
- // number: the value to compare the input to.
- // comparison_op: the comparison kind (equal, logical and, etc).
- bool AddNumberMatch(RuleType rule_type,
- int16_t parameter,
- uint32_t number,
- RuleOp comparison_op);
-
- // Returns the number of opcodes generated so far.
- size_t GetOpcodeCount() const {
- return buffer_->opcode_count;
- }
-
- // Called when there is no more comparisons to add. Internally it generates
- // the last opcode (the action opcode). Returns false if this operation fails.
- bool Done();
-
- private:
- void operator=(const PolicyRule&);
- // Called in a loop from AddStringMatch to generate the required string
- // match opcodes. rule_type, match_opts and parameter are the same as
- // in AddStringMatch.
- bool GenStringOpcode(RuleType rule_type,
- StringMatchOptions match_opts,
- uint16_t parameter,
- int state,
- bool last_call,
- int* skip_count,
- base::string16* fragment);
-
- // Loop over all generated opcodes and copy them to increasing memory
- // addresses from opcode_start and copy the extra data (strings usually) into
- // decreasing addresses from data_start. Extra data is only present in the
- // string evaluation opcodes.
- bool RebindCopy(PolicyOpcode* opcode_start, size_t opcode_size,
- char* data_start, size_t* data_size) const;
- PolicyBuffer* buffer_;
- OpcodeFactory* opcode_factory_;
- EvalResult action_;
- bool done_;
-};
-
-} // namespace sandbox
-
-#endif // SANDBOX_SRC_POLICY_LOW_LEVEL_H__
« no previous file with comments | « sandbox/win/src/policy_engine_unittest.cc ('k') | sandbox/win/src/policy_low_level.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698