summaryrefslogtreecommitdiff
path: root/sandbox/linux/syscall_broker/broker_policy.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/linux/syscall_broker/broker_policy.cc')
-rw-r--r--sandbox/linux/syscall_broker/broker_policy.cc99
1 files changed, 0 insertions, 99 deletions
diff --git a/sandbox/linux/syscall_broker/broker_policy.cc b/sandbox/linux/syscall_broker/broker_policy.cc
deleted file mode 100644
index d9f69e3b81..0000000000
--- a/sandbox/linux/syscall_broker/broker_policy.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-// 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.
-
-#include "sandbox/linux/syscall_broker/broker_policy.h"
-
-#include <fcntl.h>
-#include <stdint.h>
-#include <string.h>
-
-#include <string>
-#include <vector>
-
-#include "base/logging.h"
-#include "sandbox/linux/syscall_broker/broker_common.h"
-
-namespace sandbox {
-namespace syscall_broker {
-
-BrokerPolicy::BrokerPolicy(int denied_errno,
- const std::vector<BrokerFilePermission>& permissions)
- : denied_errno_(denied_errno),
- permissions_(permissions),
- num_of_permissions_(permissions.size()) {
- // The spec guarantees vectors store their elements contiguously
- // so set up a pointer to array of element so it can be used
- // in async signal safe code instead of vector operations.
- if (num_of_permissions_ > 0) {
- permissions_array_ = &permissions_[0];
- } else {
- permissions_array_ = NULL;
- }
-}
-
-BrokerPolicy::~BrokerPolicy() {
-}
-
-// Check if calling access() should be allowed on |requested_filename| with
-// mode |requested_mode|.
-// Note: access() being a system call to check permissions, this can get a bit
-// confusing. We're checking if calling access() should even be allowed with
-// the same policy we would use for open().
-// If |file_to_access| is not NULL, we will return the matching pointer from
-// the whitelist. For paranoia a caller should then use |file_to_access|. See
-// GetFileNameIfAllowedToOpen() for more explanation.
-// return true if calling access() on this file should be allowed, false
-// otherwise.
-// Async signal safe if and only if |file_to_access| is NULL.
-bool BrokerPolicy::GetFileNameIfAllowedToAccess(
- const char* requested_filename,
- int requested_mode,
- const char** file_to_access) const {
- if (file_to_access && *file_to_access) {
- // Make sure that callers never pass a non-empty string. In case callers
- // wrongly forget to check the return value and look at the string
- // instead, this could catch bugs.
- RAW_LOG(FATAL, "*file_to_access should be NULL");
- return false;
- }
- for (size_t i = 0; i < num_of_permissions_; i++) {
- if (permissions_array_[i].CheckAccess(requested_filename, requested_mode,
- file_to_access)) {
- return true;
- }
- }
- return false;
-}
-
-// Check if |requested_filename| can be opened with flags |requested_flags|.
-// If |file_to_open| is not NULL, we will return the matching pointer from the
-// whitelist. For paranoia, a caller should then use |file_to_open| rather
-// than |requested_filename|, so that it never attempts to open an
-// attacker-controlled file name, even if an attacker managed to fool the
-// string comparison mechanism.
-// Return true if opening should be allowed, false otherwise.
-// Async signal safe if and only if |file_to_open| is NULL.
-bool BrokerPolicy::GetFileNameIfAllowedToOpen(const char* requested_filename,
- int requested_flags,
- const char** file_to_open,
- bool* unlink_after_open) const {
- if (file_to_open && *file_to_open) {
- // Make sure that callers never pass a non-empty string. In case callers
- // wrongly forget to check the return value and look at the string
- // instead, this could catch bugs.
- RAW_LOG(FATAL, "*file_to_open should be NULL");
- return false;
- }
- for (size_t i = 0; i < num_of_permissions_; i++) {
- if (permissions_array_[i].CheckOpen(requested_filename, requested_flags,
- file_to_open, unlink_after_open)) {
- return true;
- }
- }
- return false;
-}
-
-} // namespace syscall_broker
-
-} // namespace sandbox