commit | c1f747ad9b3569f676580b5a92c22c882bd7f803 | [log] [tgz] |
---|---|---|
author | Mark Mentovai <mark@chromium.org> | Mon Nov 29 23:39:35 2021 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Nov 29 23:39:35 2021 |
tree | 5250dd0324cc2e2262aa56e70d02d24d163b0ae0 | |
parent | 3238427a144ec5dc3da4b9d5dc23071a06a3c995 [diff] |
mac: Allow process singleton socket paths up to 253 bytes long When the temporary directory is too long, Chrome exited during startup. Previously, the limit was 103 bytes, based on the size of sockaddr_un::sun_path, leaving room for a NUL byte. Paths returned by NSTemporaryDirectory are normally 49 bytes, and to build a singleton socket path, 41 bytes (for com.google.Chrome, more for other bundle IDs) are added for a total of 90, within the 103-byte limit. In a future OS update, NSTemporaryDirectory may return a longer path, +28 bytes, resulting in a socket path 118 bytes long, exceeding the size available in sockaddr_un::sun_path. By providing a version of the sockaddr_un structure sized maximally as supported by the kernel, there's room for a 253-byte sun_path; more careful use of the socket API as supported on macOS eliminates the need to NUL-terminate the path, so that the full 253 bytes can be used for a singleton socket path. While still short of the 1024-byte PATH_MAX supported by most other parts of the system that operate on paths, it's still enough of an increase in headroom to dramatically reduce the risk of crashing at startup due to an inability to form a process singleton socket path within the required constraints. (cherry picked from commit 937fe536976a6e29ddfb29adfa80c8703d12661a) Bug: 1266817 Change-Id: I900753e0483d3566dd4e59767b25b95daeb8e152 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3260710 Reviewed-by: Avi Drissman <avi@chromium.org> Commit-Queue: Mark Mentovai <mark@chromium.org> Cr-Original-Commit-Position: refs/heads/main@{#938351} Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3298434 Auto-Submit: Mark Mentovai <mark@chromium.org> Commit-Queue: Avi Drissman <avi@chromium.org> Cr-Commit-Position: refs/branch-heads/4664@{#1178} Cr-Branched-From: 24dc4ee75e01a29d390d43c9c264372a169273a7-refs/heads/main@{#929512}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.