diff options
author | wfh@chromium.org <wfh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-30 15:17:05 +0000 |
---|---|---|
committer | wfh@chromium.org <wfh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-30 15:17:05 +0000 |
commit | 5c74461a29d66197afa19936247a0854ac4b1f01 (patch) | |
tree | 6ca755cd4af9c291fb4b301fb4ac785fa2cd700f /base/memory | |
parent | 75f378d8674dee28d3e8fc503fc32ed46d0adcaa (diff) | |
download | chromium_src-5c74461a29d66197afa19936247a0854ac4b1f01.zip chromium_src-5c74461a29d66197afa19936247a0854ac4b1f01.tar.gz chromium_src-5c74461a29d66197afa19936247a0854ac4b1f01.tar.bz2 |
Change access flags on duplicated shared memory handle to read only when the read_only_ parameter is passed
BUG=307301
TEST=base_unittests
Review URL: https://codereview.chromium.org/27483005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231836 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/memory')
-rw-r--r-- | base/memory/shared_memory_win.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/base/memory/shared_memory_win.cc b/base/memory/shared_memory_win.cc index 42e0b04..d27ebc1 100644 --- a/base/memory/shared_memory_win.cc +++ b/base/memory/shared_memory_win.cc @@ -60,8 +60,8 @@ SharedMemory::SharedMemory(SharedMemoryHandle handle, bool read_only, lock_(NULL) { ::DuplicateHandle(process, handle, GetCurrentProcess(), &mapped_file_, - STANDARD_RIGHTS_REQUIRED | - (read_only_ ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS), + read_only_ ? FILE_MAP_READ : FILE_MAP_READ | + FILE_MAP_WRITE, FALSE, 0); } @@ -147,8 +147,8 @@ bool SharedMemory::Open(const std::string& name, bool read_only) { name_ = ASCIIToWide(name); read_only_ = read_only; mapped_file_ = OpenFileMapping( - read_only_ ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS, false, - name_.empty() ? NULL : name_.c_str()); + read_only_ ? FILE_MAP_READ : FILE_MAP_READ | FILE_MAP_WRITE, + false, name_.empty() ? NULL : name_.c_str()); if (mapped_file_ != NULL) { // Note: size_ is not set in this case. return true; @@ -164,7 +164,8 @@ bool SharedMemory::MapAt(off_t offset, size_t bytes) { return false; memory_ = MapViewOfFile(mapped_file_, - read_only_ ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS, + read_only_ ? FILE_MAP_READ : FILE_MAP_READ | + FILE_MAP_WRITE, static_cast<uint64>(offset) >> 32, static_cast<DWORD>(offset), bytes); @@ -190,7 +191,7 @@ bool SharedMemory::ShareToProcessCommon(ProcessHandle process, SharedMemoryHandle *new_handle, bool close_self) { *new_handle = 0; - DWORD access = STANDARD_RIGHTS_REQUIRED | FILE_MAP_READ; + DWORD access = FILE_MAP_READ; DWORD options = 0; HANDLE mapped_file = mapped_file_; HANDLE result; |