diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-11 05:32:31 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-11 05:32:31 +0000 |
commit | 0d6335f3611fab45342c3257e1460a361dd12a30 (patch) | |
tree | d677285510dd79d68bc34c379141c7815b10e0e7 | |
parent | 8b048323819876b75e3875cd1de5ef01f1f54375 (diff) | |
download | chromium_src-0d6335f3611fab45342c3257e1460a361dd12a30.zip chromium_src-0d6335f3611fab45342c3257e1460a361dd12a30.tar.gz chromium_src-0d6335f3611fab45342c3257e1460a361dd12a30.tar.bz2 |
Put test_user_data in a temp directory instead of using base::DIR_EXE. (try 2)
base::DIR_EXE could be a very long path, which causes socket creation to fail because socket paths have a limited length. Let's use a temp directory instead. We should also clean up the temp dir when we're done. Also abort if the socket path is too long.
Reviewed in issue 115107
Review URL: http://codereview.chromium.org/113193
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15749 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/process_singleton_linux.cc | 2 | ||||
-rw-r--r-- | chrome/test/unit/chrome_test_suite.h | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/chrome/browser/process_singleton_linux.cc b/chrome/browser/process_singleton_linux.cc index fcd64259..57a6531 100644 --- a/chrome/browser/process_singleton_linux.cc +++ b/chrome/browser/process_singleton_linux.cc @@ -64,6 +64,8 @@ void ProcessSingleton::SetupSocket(int* sock, struct sockaddr_un* addr) { LOG(FATAL) << "socket() failed: " << strerror(errno); addr->sun_family = AF_UNIX; + if (socket_path_.value().length() > sizeof(addr->sun_path) - 1) + LOG(FATAL) << "Socket path too long: " << socket_path_.value(); base::strlcpy(addr->sun_path, socket_path_.value().c_str(), sizeof(addr->sun_path)); } diff --git a/chrome/test/unit/chrome_test_suite.h b/chrome/test/unit/chrome_test_suite.h index ff187da..421297c 100644 --- a/chrome/test/unit/chrome_test_suite.h +++ b/chrome/test/unit/chrome_test_suite.h @@ -11,7 +11,7 @@ #include "app/resource_bundle.h" #include "base/stats_table.h" -#include "base/file_path.h" +#include "base/file_util.h" #if defined(OS_MACOSX) #include "base/mac_util.h" #endif @@ -81,8 +81,10 @@ class ChromeTestSuite : public TestSuite { CommandLine::ForCurrentProcess()->GetSwitchValue( switches::kUserDataDir)); if (user_data_dir.empty() && - PathService::Get(base::DIR_EXE, &user_data_dir)) + file_util::CreateNewTempDirectory(FILE_PATH_LITERAL("chrome_test_"), + &user_data_dir)) { user_data_dir = user_data_dir.AppendASCII("test_user_data"); + } if (!user_data_dir.empty()) PathService::Override(chrome::DIR_USER_DATA, user_data_dir.ToWStringHack()); @@ -122,6 +124,13 @@ class ChromeTestSuite : public TestSuite { StatsTable::set_current(NULL); delete stats_table_; + // Delete the test_user_data dir recursively + FilePath user_data_dir; + if (PathService::Get(chrome::DIR_USER_DATA, &user_data_dir) && + !user_data_dir.empty()) { + file_util::Delete(user_data_dir, true); + file_util::Delete(user_data_dir.DirName(), false); + } TestSuite::Shutdown(); } |