| Index: chrome/common/zip_unittest.cc
|
| diff --git a/chrome/common/zip_unittest.cc b/chrome/common/zip_unittest.cc
|
| index dfffd0938c82ea70375d15e63d5d801d3db6b4a7..11087200b2f7f3cc45267468a0d548b075149eeb 100644
|
| --- a/chrome/common/zip_unittest.cc
|
| +++ b/chrome/common/zip_unittest.cc
|
| @@ -99,8 +99,12 @@ TEST_F(ZipTest, UnzipEvil) {
|
| FilePath path;
|
| ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &path));
|
| path = path.AppendASCII("zip").AppendASCII("evil.zip");
|
| - ASSERT_FALSE(zip::Unzip(path, test_dir_));
|
| - FilePath evil_file = test_dir_;
|
| + // Unzip the zip file into a sub directory of test_dir_ so evil.zip
|
| + // won't create a persistent file outside test_dir_ in case of a
|
| + // failure.
|
| + FilePath output_dir = test_dir_.AppendASCII("out");
|
| + ASSERT_FALSE(zip::Unzip(path, output_dir));
|
| + FilePath evil_file = output_dir;
|
| evil_file = evil_file.AppendASCII(
|
| "../levilevilevilevilevilevilevilevilevilevilevilevil");
|
| ASSERT_FALSE(file_util::PathExists(evil_file));
|
| @@ -110,8 +114,10 @@ TEST_F(ZipTest, UnzipEvil2) {
|
| FilePath path;
|
| ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &path));
|
| path = path.AppendASCII("zip").AppendASCII("evil_via_invalid_utf8.zip");
|
| - ASSERT_TRUE(zip::Unzip(path, test_dir_));
|
| - FilePath evil_file = test_dir_;
|
| + // See the comment at UnzipEvil() for why we do this.
|
| + FilePath output_dir = test_dir_.AppendASCII("out");
|
| + ASSERT_TRUE(zip::Unzip(path, output_dir));
|
| + FilePath evil_file = output_dir;
|
| evil_file = evil_file.AppendASCII("../evil.txt");
|
| ASSERT_FALSE(file_util::PathExists(evil_file));
|
| }
|
|
|