summaryrefslogtreecommitdiffstats
path: root/sandbox/src/filesystem_dispatcher.h
diff options
context:
space:
mode:
authorerg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-13 20:49:23 +0000
committererg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-13 20:49:23 +0000
commite628fde3462899ba06af2fbc5285563c456ed5c4 (patch)
treee3ed3eb98c0044b055606bdf8628191b9b99c17c /sandbox/src/filesystem_dispatcher.h
parent23d6315575647756c4be985b895ec2c447e2f088 (diff)
downloadchromium_src-e628fde3462899ba06af2fbc5285563c456ed5c4.zip
chromium_src-e628fde3462899ba06af2fbc5285563c456ed5c4.tar.gz
chromium_src-e628fde3462899ba06af2fbc5285563c456ed5c4.tar.bz2
Emergency revert; rietveld broke; tree broke
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146646 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sandbox/src/filesystem_dispatcher.h')
-rw-r--r--sandbox/src/filesystem_dispatcher.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/sandbox/src/filesystem_dispatcher.h b/sandbox/src/filesystem_dispatcher.h
new file mode 100644
index 0000000..d828715
--- /dev/null
+++ b/sandbox/src/filesystem_dispatcher.h
@@ -0,0 +1,57 @@
+// Copyright (c) 2010 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_FILESYSTEM_DISPATCHER_H__
+#define SANDBOX_SRC_FILESYSTEM_DISPATCHER_H__
+
+#include "base/basictypes.h"
+#include "sandbox/src/crosscall_server.h"
+#include "sandbox/src/sandbox_policy_base.h"
+
+namespace sandbox {
+
+// This class handles file system-related IPC calls.
+class FilesystemDispatcher : public Dispatcher {
+ public:
+ explicit FilesystemDispatcher(PolicyBase* policy_base);
+ ~FilesystemDispatcher() {}
+
+ // Dispatcher interface.
+ virtual bool SetupService(InterceptionManager* manager, int service);
+
+ private:
+ // Processes IPC requests coming from calls to NtCreateFile in the target.
+ bool NtCreateFile(IPCInfo* ipc, std::wstring* name, DWORD attributes,
+ DWORD desired_access, DWORD file_attributes,
+ DWORD share_access, DWORD create_disposition,
+ DWORD create_options);
+
+ // Processes IPC requests coming from calls to NtOpenFile in the target.
+ bool NtOpenFile(IPCInfo* ipc, std::wstring* name, DWORD attributes,
+ DWORD desired_access, DWORD share_access,
+ DWORD create_options);
+
+ // Processes IPC requests coming from calls to NtQueryAttributesFile in the
+ // target.
+ bool NtQueryAttributesFile(IPCInfo* ipc, std::wstring* name, DWORD attributes,
+ CountedBuffer* info);
+
+ // Processes IPC requests coming from calls to NtQueryFullAttributesFile in
+ // the target.
+ bool NtQueryFullAttributesFile(IPCInfo* ipc, std::wstring* name,
+ DWORD attributes, CountedBuffer* info);
+
+ // Processes IPC requests coming from calls to NtSetInformationFile with the
+ // rename information class.
+ bool NtSetInformationFile(IPCInfo* ipc, HANDLE handle, CountedBuffer* status,
+ CountedBuffer* info, DWORD length,
+ DWORD info_class);
+
+ PolicyBase* policy_base_;
+ DISALLOW_COPY_AND_ASSIGN(FilesystemDispatcher);
+};
+
+} // namespace sandbox
+
+#endif // SANDBOX_SRC_FILESYSTEM_DISPATCHER_H__