| Index: base/files/file_util_mac.mm
|
| diff --git a/base/files/file_util_mac.mm b/base/files/file_util_mac.mm
|
| index 5a99aa0e81de2e19110872cc168e53b93555d0c5..d3e14a37870faa5be28dd730b2ac126c81180e32 100644
|
| --- a/base/files/file_util_mac.mm
|
| +++ b/base/files/file_util_mac.mm
|
| @@ -7,8 +7,10 @@
|
| #import <Foundation/Foundation.h>
|
| #include <copyfile.h>
|
| #include <stdlib.h>
|
| +#include <string.h>
|
|
|
| #include "base/files/file_path.h"
|
| +#include "base/logging.h"
|
| #include "base/mac/foundation_util.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/threading/thread_restrictions.h"
|
| @@ -24,10 +26,14 @@ bool CopyFile(const FilePath& from_path, const FilePath& to_path) {
|
| }
|
|
|
| bool GetTempDir(base::FilePath* path) {
|
| - // In order to facilitate hermetic runs on macOS, first check $TMPDIR.
|
| - // NOTE: $TMPDIR is ALMOST ALWAYS set on macOS (unless the user un-set it).
|
| - const char* env_tmpdir = getenv("TMPDIR");
|
| + // In order to facilitate hermetic runs on macOS, first check
|
| + // $MAC_CHROMIUM_TMPDIR. We check this instead of $TMPDIR because external
|
| + // programs currently set $TMPDIR with no effect, but when we respect it
|
| + // directly it can cause crashes (like crbug.com/698759).
|
| + const char* env_tmpdir = getenv("MAC_CHROMIUM_TMPDIR");
|
| if (env_tmpdir) {
|
| + DCHECK_LT(strlen(env_tmpdir), 50u)
|
| + << "too-long TMPDIR causes socket name length issues.";
|
| *path = base::FilePath(env_tmpdir);
|
| return true;
|
| }
|
|
|