aboutsummaryrefslogtreecommitdiff
path: root/www/chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'www/chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc')
-rw-r--r--www/chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc88
1 files changed, 4 insertions, 84 deletions
diff --git a/www/chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc b/www/chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc
index ac2e0f6b2691..a35c8d880061 100644
--- a/www/chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc
+++ b/www/chromium/files/patch-base_memory_platform__shared__memory__region__posix.cc
@@ -1,18 +1,6 @@
---- base/memory/platform_shared_memory_region_posix.cc.orig 2022-01-20 10:35:46 UTC
+--- base/memory/platform_shared_memory_region_posix.cc.orig 2022-02-07 13:39:41 UTC
+++ base/memory/platform_shared_memory_region_posix.cc
-@@ -23,7 +23,11 @@ struct ScopedPathUnlinkerTraits {
- static const FilePath* InvalidValue() { return nullptr; }
-
- static void Free(const FilePath* path) {
-+#if defined(OS_BSD)
-+ if (shm_unlink(path->value().c_str()))
-+#else
- if (unlink(path->value().c_str()))
-+#endif
- PLOG(WARNING) << "unlink";
- }
- };
-@@ -70,7 +74,7 @@ FDPair ScopedFDPair::get() const {
+@@ -70,7 +70,7 @@ FDPair ScopedFDPair::get() const {
return {fd.get(), readonly_fd.get()};
}
@@ -21,16 +9,7 @@
// static
ScopedFD PlatformSharedMemoryRegion::ExecutableRegion::CreateFD(size_t size) {
PlatformSharedMemoryRegion region =
-@@ -79,7 +83,7 @@ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion:
- return region.PassPlatformHandle().fd;
- return ScopedFD();
- }
--#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
-+#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
-
- // static
- PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Take(
-@@ -204,7 +208,7 @@ bool PlatformSharedMemoryRegion::MapAtInternal(off_t o
+@@ -204,7 +204,7 @@ bool PlatformSharedMemoryRegion::MapAtInternal(off_t o
// static
PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
size_t size
@@ -39,7 +18,7 @@
,
bool executable
#endif
-@@ -233,7 +237,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
+@@ -233,7 +233,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
// flag.
FilePath directory;
if (!GetShmemTempDir(
@@ -48,62 +27,3 @@
executable,
#else
false /* executable */,
-@@ -242,6 +246,22 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
- return {};
- }
-
-+#if defined(OS_BSD)
-+ UnguessableToken token = UnguessableToken::Create();
-+ FilePath path = directory.Append(token.ToString());
-+ ScopedFD fd{HANDLE_EINTR(shm_open(path.value().c_str(), O_CREAT | O_RDWR, 0700))};
-+ File shm_file(fd.release());
-+
-+ if (!shm_file.IsValid()) {
-+ PLOG(ERROR) << "Creating shared memory failed";
-+ return {};
-+ }
-+
-+ if (HANDLE_EINTR(ftruncate(shm_file.GetPlatformFile(), size)) == -1) {
-+ PLOG(ERROR) << "Failed to extend shared memory object to size " << size;
-+ return {};
-+ }
-+#else
- FilePath path;
- ScopedFD fd = CreateAndOpenFdForTemporaryFileInDir(directory, &path);
- File shm_file(fd.release());
-@@ -258,6 +278,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
- }
- return {};
- }
-+#endif // OS_BSD
-
- // Deleting the file prevents anyone else from mapping it in (making it
- // private), and prevents the need for cleanup (once the last fd is
-@@ -267,7 +288,11 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
- ScopedFD readonly_fd;
- if (mode == Mode::kWritable) {
- // Also open as readonly so that we can ConvertToReadOnly().
-+#if defined(OS_BSD)
-+ readonly_fd.reset(HANDLE_EINTR(shm_open(path.value().c_str(), O_RDONLY, 0400)));
-+#else
- readonly_fd.reset(HANDLE_EINTR(open(path.value().c_str(), O_RDONLY)));
-+#endif
- if (!readonly_fd.is_valid()) {
- DPLOG(ERROR) << "open(\"" << path.value() << "\", O_RDONLY) failed";
- return {};
-@@ -298,9 +323,15 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
- }
- }
-
-+#if defined(OS_BSD)
- return PlatformSharedMemoryRegion(
- {ScopedFD(shm_file.TakePlatformFile()), std::move(readonly_fd)}, mode,
-+ size, token);
-+#else
-+ return PlatformSharedMemoryRegion(
-+ {ScopedFD(shm_file.TakePlatformFile()), std::move(readonly_fd)}, mode,
- size, UnguessableToken::Create());
-+#endif // OS_BSD
- #endif // !defined(OS_NACL)
- }
-