Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(694)

Unified Diff: content/browser/download/save_package_unittest.cc

Issue 2060923002: Neutralize dangerous subresource files during Save Page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@save-package-cleanup-1
Patch Set: Catch up with ToT Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/download/save_package.cc ('k') | content/public/browser/download_manager_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/download/save_package_unittest.cc
diff --git a/content/browser/download/save_package_unittest.cc b/content/browser/download/save_package_unittest.cc
index bdfea94952c415c17e78223e72115b4ca8601a9d..c75a28bf6c75c58962104ac0012876a80cb3cd94 100644
--- a/content/browser/download/save_package_unittest.cc
+++ b/content/browser/download/save_package_unittest.cc
@@ -44,13 +44,6 @@ const uint32_t kMaxFilePathLength = PATH_MAX - 1;
const uint32_t kMaxFileNameLength = NAME_MAX;
#endif
-// Used to make long filenames.
-std::string long_file_name(
- "EFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz01234567"
- "89ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz012345"
- "6789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123"
- "456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789a");
-
bool HasOrdinalNumber(const base::FilePath::StringType& filename) {
base::FilePath::StringType::size_type r_paren_index =
filename.rfind(FPL(')'));
@@ -112,17 +105,11 @@ class SavePackageTest : public RenderViewHostImplTestHarness {
temp_dir_.path().AppendASCII("testfile" HTML_EXTENSION),
temp_dir_.path().AppendASCII("testfile_files"));
- // We need to construct a path that is *almost* kMaxFilePathLength long
- long_file_name.reserve(kMaxFilePathLength + long_file_name.length());
- while (long_file_name.length() < kMaxFilePathLength)
- long_file_name += long_file_name;
- long_file_name.resize(
- kMaxFilePathLength - 9 - temp_dir_.path().value().length());
-
+ base::FilePath::StringType long_file_name = GetLongFileName();
save_package_fail_ = new SavePackage(
contents(), SAVE_PAGE_TYPE_AS_COMPLETE_HTML,
- temp_dir_.path().AppendASCII(long_file_name + HTML_EXTENSION),
- temp_dir_.path().AppendASCII(long_file_name + "_files"));
+ temp_dir_.path().Append(long_file_name + FPL_HTML_EXTENSION),
+ temp_dir_.path().Append(long_file_name + FPL("_files")));
}
BrowserContext* CreateBrowserContext() override {
@@ -145,6 +132,13 @@ class SavePackageTest : public RenderViewHostImplTestHarness {
RenderViewHostImplTestHarness::TearDown();
}
+ // Returns a path that is *almost* kMaxFilePathLength long
+ base::FilePath::StringType GetLongFileName() const {
+ size_t target_length =
+ kMaxFilePathLength - 9 - temp_dir_.path().value().length();
+ return base::FilePath::StringType(target_length, FPL('a'));
+ }
+
private:
// SavePackage for successfully generating file name.
scoped_refptr<SavePackage> save_package_success_;
@@ -237,19 +231,21 @@ TEST_F(SavePackageTest, TestUnSuccessfullyGenerateSavePackageFilename) {
#endif
TEST_F(SavePackageTest, MAYBE_TestLongSavePackageFilename) {
const std::string base_url("http://www.google.com/");
- const std::string long_file = long_file_name + ".css";
- const std::string url = base_url + long_file;
+ const base::FilePath::StringType long_file_name =
+ GetLongFileName() + FPL(".css");
+ const std::string url =
+ base_url + base::FilePath(long_file_name).AsUTF8Unsafe();
base::FilePath::StringType filename;
// Test that the filename is successfully shortened to fit.
ASSERT_TRUE(GetGeneratedFilename(true, std::string(), url, false, &filename));
- EXPECT_TRUE(filename.length() < long_file.length());
+ EXPECT_TRUE(filename.length() < long_file_name.length());
EXPECT_FALSE(HasOrdinalNumber(filename));
// Test that the filename is successfully shortened to fit, and gets an
// an ordinal appended.
ASSERT_TRUE(GetGeneratedFilename(true, std::string(), url, false, &filename));
- EXPECT_TRUE(filename.length() < long_file.length());
+ EXPECT_TRUE(filename.length() < long_file_name.length());
EXPECT_TRUE(HasOrdinalNumber(filename));
// Test that the filename is successfully shortened to fit, and gets a
@@ -257,7 +253,7 @@ TEST_F(SavePackageTest, MAYBE_TestLongSavePackageFilename) {
base::FilePath::StringType filename2;
ASSERT_TRUE(
GetGeneratedFilename(true, std::string(), url, false, &filename2));
- EXPECT_TRUE(filename2.length() < long_file.length());
+ EXPECT_TRUE(filename2.length() < long_file_name.length());
EXPECT_TRUE(HasOrdinalNumber(filename2));
EXPECT_NE(filename, filename2);
}
@@ -271,12 +267,7 @@ TEST_F(SavePackageTest, MAYBE_TestLongSavePackageFilename) {
TEST_F(SavePackageTest, MAYBE_TestLongSafePureFilename) {
const base::FilePath save_dir(FPL("test_dir"));
const base::FilePath::StringType ext(FPL_HTML_EXTENSION);
- base::FilePath::StringType filename =
-#if defined(OS_WIN)
- base::ASCIIToUTF16(long_file_name);
-#else
- long_file_name;
-#endif
+ base::FilePath::StringType filename = GetLongFileName();
// Test that the filename + extension doesn't exceed kMaxFileNameLength
uint32_t max_path = SavePackage::GetMaxPathLengthForDirectory(save_dir);
« no previous file with comments | « content/browser/download/save_package.cc ('k') | content/public/browser/download_manager_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698