diff options
Diffstat (limited to 'base/shared_memory_unittest.cc')
-rw-r--r-- | base/shared_memory_unittest.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/base/shared_memory_unittest.cc b/base/shared_memory_unittest.cc index 9f69a5d..41b8ba5 100644 --- a/base/shared_memory_unittest.cc +++ b/base/shared_memory_unittest.cc @@ -15,6 +15,10 @@ #include "base/mac/scoped_nsautorelease_pool.h" #endif +#if defined(OS_POSIX) +#include <sys/mman.h> +#endif + static const int kNumThreads = 5; static const int kNumTasks = 5; @@ -332,6 +336,24 @@ TEST(SharedMemoryTest, AnonymousPrivate) { } } +#if defined(OS_POSIX) +// Create a shared memory object, mmap it, and mprotect it to PROT_EXEC. +TEST(SharedMemoryTest, AnonymousExecutable) { + const uint32 kTestSize = 1 << 16; + + SharedMemory shared_memory; + SharedMemoryCreateOptions options; + options.size = kTestSize; + options.executable = true; + + EXPECT_TRUE(shared_memory.Create(options)); + EXPECT_TRUE(shared_memory.Map(shared_memory.created_size())); + + EXPECT_EQ(0, mprotect(shared_memory.memory(), shared_memory.created_size(), + PROT_READ | PROT_EXEC)); +} +#endif + // On POSIX it is especially important we test shmem across processes, // not just across threads. But the test is enabled on all platforms. class SharedMemoryProcessTest : public MultiProcessTest { |