| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/utility/safe_browsing/mac/hfs.h" | 5 #include "chrome/utility/safe_browsing/mac/hfs.h" |
| 6 | 6 |
| 7 #include <libkern/OSByteOrder.h> | 7 #include <libkern/OSByteOrder.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <sys/stat.h> | 9 #include <sys/stat.h> |
| 10 | 10 |
| 11 #include <map> | 11 #include <map> |
| 12 #include <set> | 12 #include <set> |
| 13 #include <vector> | 13 #include <vector> |
| 14 | 14 |
| 15 #include "base/logging.h" | 15 #include "base/logging.h" |
| 16 #include "base/macros.h" | 16 #include "base/macros.h" |
| 17 #include "base/memory/ptr_util.h" |
| 17 #include "base/numerics/safe_math.h" | 18 #include "base/numerics/safe_math.h" |
| 18 #include "base/strings/utf_string_conversions.h" | 19 #include "base/strings/utf_string_conversions.h" |
| 19 #include "chrome/utility/safe_browsing/mac/convert_big_endian.h" | 20 #include "chrome/utility/safe_browsing/mac/convert_big_endian.h" |
| 20 #include "chrome/utility/safe_browsing/mac/read_stream.h" | 21 #include "chrome/utility/safe_browsing/mac/read_stream.h" |
| 21 | 22 |
| 22 namespace safe_browsing { | 23 namespace safe_browsing { |
| 23 namespace dmg { | 24 namespace dmg { |
| 24 | 25 |
| 25 // UTF-16 character for file path seprator. | 26 // UTF-16 character for file path seprator. |
| 26 static const uint16_t kFilePathSeparator = '/'; | 27 static const uint16_t kFilePathSeparator = '/'; |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 if (IsDirectory()) | 298 if (IsDirectory()) |
| 298 return false; | 299 return false; |
| 299 const HFSPlusCatalogFile* file = catalog_->current_record()->file; | 300 const HFSPlusCatalogFile* file = catalog_->current_record()->file; |
| 300 return file->bsdInfo.ownerFlags & UF_COMPRESSED; | 301 return file->bsdInfo.ownerFlags & UF_COMPRESSED; |
| 301 } | 302 } |
| 302 | 303 |
| 303 base::string16 HFSIterator::GetPath() { | 304 base::string16 HFSIterator::GetPath() { |
| 304 return catalog_->current_record()->path; | 305 return catalog_->current_record()->path; |
| 305 } | 306 } |
| 306 | 307 |
| 307 scoped_ptr<ReadStream> HFSIterator::GetReadStream() { | 308 std::unique_ptr<ReadStream> HFSIterator::GetReadStream() { |
| 308 if (IsDirectory() || IsHardLink()) | 309 if (IsDirectory() || IsHardLink()) |
| 309 return nullptr; | 310 return nullptr; |
| 310 | 311 |
| 311 DCHECK_EQ(kHFSPlusFileRecord, catalog_->current_record()->record_type); | 312 DCHECK_EQ(kHFSPlusFileRecord, catalog_->current_record()->record_type); |
| 312 return make_scoped_ptr( | 313 return base::WrapUnique( |
| 313 new HFSForkReadStream(this, catalog_->current_record()->file->dataFork)); | 314 new HFSForkReadStream(this, catalog_->current_record()->file->dataFork)); |
| 314 } | 315 } |
| 315 | 316 |
| 316 bool HFSIterator::SeekToBlock(uint64_t block) { | 317 bool HFSIterator::SeekToBlock(uint64_t block) { |
| 317 uint64_t offset = block * volume_header_.blockSize; | 318 uint64_t offset = block * volume_header_.blockSize; |
| 318 off_t rv = stream_->Seek(offset, SEEK_SET); | 319 off_t rv = stream_->Seek(offset, SEEK_SET); |
| 319 return rv >= 0 && static_cast<uint64_t>(rv) == offset; | 320 return rv >= 0 && static_cast<uint64_t>(rv) == offset; |
| 320 } | 321 } |
| 321 | 322 |
| 322 bool HFSIterator::ReadCatalogFile() { | 323 bool HFSIterator::ReadCatalogFile() { |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 return object; | 642 return object; |
| 642 } | 643 } |
| 643 | 644 |
| 644 bool HFSBTreeIterator::IsKeyUnexported(const base::string16& key) { | 645 bool HFSBTreeIterator::IsKeyUnexported(const base::string16& key) { |
| 645 return key == kHFSDirMetadataFolder || | 646 return key == kHFSDirMetadataFolder || |
| 646 key == kHFSMetadataFolder; | 647 key == kHFSMetadataFolder; |
| 647 } | 648 } |
| 648 | 649 |
| 649 } // namespace dmg | 650 } // namespace dmg |
| 650 } // namespace safe_browsing | 651 } // namespace safe_browsing |
| OLD | NEW |