summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-08 01:20:25 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-08 01:20:25 +0000
commit5382cf9088a403e3fa12fa3c5b4130e2d3e09ad8 (patch)
treea18f5ab26d554c1d7c3caa361564089652758218 /chrome
parent3773c3e33575a831c195dfdbcad57708f5c57a7a (diff)
downloadchromium_src-5382cf9088a403e3fa12fa3c5b4130e2d3e09ad8.zip
chromium_src-5382cf9088a403e3fa12fa3c5b4130e2d3e09ad8.tar.gz
chromium_src-5382cf9088a403e3fa12fa3c5b4130e2d3e09ad8.tar.bz2
Put test_user_data in a temp directory instead of using base::DIR_EXE.
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. Review URL: http://codereview.chromium.org/115107 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15607 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/process_singleton_linux.cc2
-rw-r--r--chrome/test/unit/chrome_test_suite.h12
2 files changed, 12 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..beb81c4 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,9 @@ 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("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 +123,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();
}