aboutsummaryrefslogtreecommitdiff
path: root/www/chromium/files/patch-base_posix_unix__domain__socket.cc
diff options
context:
space:
mode:
Diffstat (limited to 'www/chromium/files/patch-base_posix_unix__domain__socket.cc')
-rw-r--r--www/chromium/files/patch-base_posix_unix__domain__socket.cc78
1 files changed, 34 insertions, 44 deletions
diff --git a/www/chromium/files/patch-base_posix_unix__domain__socket.cc b/www/chromium/files/patch-base_posix_unix__domain__socket.cc
index 7064cdc080f5..db441a342cef 100644
--- a/www/chromium/files/patch-base_posix_unix__domain__socket.cc
+++ b/www/chromium/files/patch-base_posix_unix__domain__socket.cc
@@ -1,49 +1,39 @@
---- base/posix/unix_domain_socket.cc.orig 2021-09-14 01:51:47 UTC
+--- base/posix/unix_domain_socket.cc.orig 2022-02-07 13:39:41 UTC
+++ base/posix/unix_domain_socket.cc
-@@ -5,7 +5,10 @@
- #include "base/posix/unix_domain_socket.h"
+@@ -50,7 +50,7 @@ bool CreateSocketPair(ScopedFD* one, ScopedFD* two) {
- #include <errno.h>
-+#include <sys/param.h>
- #include <sys/socket.h>
-+#include <sys/types.h>
-+#include <sys/ucred.h>
- #if !defined(OS_NACL_NONSFI)
- #include <sys/un.h>
- #endif
-@@ -28,6 +31,14 @@ namespace base {
+ // static
+ bool UnixDomainSocket::EnableReceiveProcessId(int fd) {
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
+ const int enable = 1;
+ return setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)) == 0;
+ #else
+@@ -140,7 +140,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
- const size_t UnixDomainSocket::kMaxFileDescriptors = 16;
-
-+#ifndef SCM_CREDENTIALS
-+# define SCM_CREDENTIALS 0x9001
-+#endif
-+
-+#ifndef SO_PASSCRED
-+# define SO_PASSCRED 0x9002
-+#endif
-+
- #if !defined(OS_NACL_NONSFI)
- bool CreateSocketPair(ScopedFD* one, ScopedFD* two) {
- int raw_socks[2];
-@@ -150,7 +161,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
- #if !defined(OS_NACL_NONSFI) && !defined(OS_APPLE)
- // The PNaCl toolchain for Non-SFI binary build and macOS do not support
- // ucred. macOS supports xucred, but this structure is insufficient.
-- + CMSG_SPACE(sizeof(struct ucred))
-+ + CMSG_SPACE(sizeof(struct cmsgcred))
- #endif // !defined(OS_NACL_NONSFI) && !defined(OS_APPLE)
- ;
- char control_buffer[kControlBufferSize];
-@@ -180,9 +191,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
- // SCM_CREDENTIALS.
+ const size_t kControlBufferSize =
+ CMSG_SPACE(sizeof(int) * kMaxFileDescriptors)
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
+ // macOS does not support ucred.
+ // macOS supports xucred, but this structure is insufficient.
+ + CMSG_SPACE(sizeof(struct ucred))
+@@ -168,7 +168,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ wire_fds = reinterpret_cast<int*>(CMSG_DATA(cmsg));
+ wire_fds_len = payload_len / sizeof(int);
+ }
+-#if !defined(OS_APPLE)
++#if !defined(OS_APPLE) && !defined(OS_BSD)
+ // macOS does not support SCM_CREDENTIALS.
if (cmsg->cmsg_level == SOL_SOCKET &&
cmsg->cmsg_type == SCM_CREDENTIALS) {
-- DCHECK_EQ(payload_len, sizeof(struct ucred));
-+ DCHECK_EQ(payload_len, sizeof(struct cmsgcred));
- DCHECK_EQ(pid, -1);
-- pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid;
-+ pid = getpid();
- }
- #endif // !defined(OS_NACL_NONSFI) && !defined(OS_APPLE)
- }
+@@ -202,6 +202,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ socklen_t pid_size = sizeof(pid);
+ if (getsockopt(fd, SOL_LOCAL, LOCAL_PEERPID, &pid, &pid_size) != 0)
+ pid = -1;
++#elif defined(OS_BSD)
++ NOTIMPLEMENTED();
++ pid = -1;
+ #else
+ // |pid| will legitimately be -1 if we read EOF, so only DCHECK if we
+ // actually received a message. Unfortunately, Linux allows sending zero