| Index: third_party/zlib/google/zip_reader.cc
|
| diff --git a/third_party/zlib/google/zip_reader.cc b/third_party/zlib/google/zip_reader.cc
|
| index 59d96da14263cbfb88d2230e8250396152e8b85c..7df46e74156734acc8d99fec117566e293d32ec1 100644
|
| --- a/third_party/zlib/google/zip_reader.cc
|
| +++ b/third_party/zlib/google/zip_reader.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "base/thread_task_runner_handle.h"
|
| #include "third_party/zlib/google/zip_internal.h"
|
|
|
| #if defined(USE_SYSTEM_MINIZIP)
|
| @@ -130,7 +131,8 @@ ZipReader::EntryInfo::EntryInfo(const std::string& file_name_in_zip,
|
| original_size_ = raw_file_info.uncompressed_size;
|
|
|
| // Directory entries in zip files end with "/".
|
| - is_directory_ = EndsWith(file_name_in_zip, "/", false);
|
| + is_directory_ =
|
| + base::EndsWith(file_name_in_zip, "/", base::CompareCase::SENSITIVE);
|
|
|
| // Check the file name here for directory traversal issues.
|
| is_unsafe_ = file_path_.ReferencesParent();
|
| @@ -144,7 +146,8 @@ ZipReader::EntryInfo::EntryInfo(const std::string& file_name_in_zip,
|
|
|
| // We also consider that the file name is unsafe, if it's absolute.
|
| // On Windows, IsAbsolute() returns false for paths starting with "/".
|
| - if (file_path_.IsAbsolute() || StartsWithASCII(file_name_in_zip, "/", false))
|
| + if (file_path_.IsAbsolute() ||
|
| + base::StartsWith(file_name_in_zip, "/", base::CompareCase::SENSITIVE))
|
| is_unsafe_ = true;
|
|
|
| // Construct the last modified time. The timezone info is not present in
|
| @@ -355,24 +358,26 @@ void ZipReader::ExtractCurrentEntryToFilePathAsync(
|
| // If this is a directory, just create it and return.
|
| if (current_entry_info()->is_directory()) {
|
| if (base::CreateDirectory(output_file_path)) {
|
| - base::MessageLoopProxy::current()->PostTask(FROM_HERE, success_callback);
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
|
| + success_callback);
|
| } else {
|
| DVLOG(1) << "Unzip failed: unable to create directory.";
|
| - base::MessageLoopProxy::current()->PostTask(FROM_HERE, failure_callback);
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
|
| + failure_callback);
|
| }
|
| return;
|
| }
|
|
|
| if (unzOpenCurrentFile(zip_file_) != UNZ_OK) {
|
| DVLOG(1) << "Unzip failed: unable to open current zip entry.";
|
| - base::MessageLoopProxy::current()->PostTask(FROM_HERE, failure_callback);
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, failure_callback);
|
| return;
|
| }
|
|
|
| base::FilePath output_dir_path = output_file_path.DirName();
|
| if (!base::CreateDirectory(output_dir_path)) {
|
| DVLOG(1) << "Unzip failed: unable to create containing directory.";
|
| - base::MessageLoopProxy::current()->PostTask(FROM_HERE, failure_callback);
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, failure_callback);
|
| return;
|
| }
|
|
|
| @@ -382,7 +387,7 @@ void ZipReader::ExtractCurrentEntryToFilePathAsync(
|
| if (!output_file.IsValid()) {
|
| DVLOG(1) << "Unzip failed: unable to create platform file at "
|
| << output_file_path.value();
|
| - base::MessageLoopProxy::current()->PostTask(FROM_HERE, failure_callback);
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, failure_callback);
|
| return;
|
| }
|
|
|
|
|