Make base::ReadFileToString() return false on I/O error.

It seems inconsistent that ReadFileToString() currently returns false when encountering a file open error but true upon file read error.  This CL forces the return value to false upon encountering any kind of error and documents this behaviour.

At that occasion, a test for path traversal prevention is added.

BUG=none

Review URL: https://codereview.chromium.org/254333002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267507 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: 731daa1a55f46d844aeb6d5d0ffbb8242c39d7b9
diff --git a/base/file_util_unittest.cc b/base/file_util_unittest.cc
index 0d79391..9acdf3e 100644
--- a/base/file_util_unittest.cc
+++ b/base/file_util_unittest.cc
@@ -2012,7 +2012,12 @@
 
   FilePath file_path =
       temp_dir_.path().Append(FILE_PATH_LITERAL("ReadFileToStringTest"));
+  FilePath file_path_dangerous =
+      temp_dir_.path().Append(FILE_PATH_LITERAL("..")).
+      Append(temp_dir_.path().BaseName()).
+      Append(FILE_PATH_LITERAL("ReadFileToStringTest"));
 
+  // Create test file.
   ASSERT_EQ(4, WriteFile(file_path, kTestData, 4));
 
   EXPECT_TRUE(ReadFileToString(file_path, &data));
@@ -2020,7 +2025,7 @@
 
   data = "temp";
   EXPECT_FALSE(ReadFileToString(file_path, &data, 0));
-  EXPECT_EQ(data.length(), 0u);
+  EXPECT_EQ(0u, data.length());
 
   data = "temp";
   EXPECT_FALSE(ReadFileToString(file_path, &data, 2));
@@ -2042,15 +2047,20 @@
 
   EXPECT_TRUE(ReadFileToString(file_path, NULL));
 
+  data = "temp";
+  EXPECT_FALSE(ReadFileToString(file_path_dangerous, &data));
+  EXPECT_EQ(0u, data.length());
+
+  // Delete test file.
   EXPECT_TRUE(base::DeleteFile(file_path, false));
 
   data = "temp";
   EXPECT_FALSE(ReadFileToString(file_path, &data));
-  EXPECT_EQ(data.length(), 0u);
+  EXPECT_EQ(0u, data.length());
 
   data = "temp";
   EXPECT_FALSE(ReadFileToString(file_path, &data, 6));
-  EXPECT_EQ(data.length(), 0u);
+  EXPECT_EQ(0u, data.length());
 }
 
 TEST_F(FileUtilTest, TouchFile) {