Skip to content

Commit

Permalink
read_nonresident_mappings: take ref
Browse files Browse the repository at this point in the history
  • Loading branch information
maharmstone committed Sep 27, 2021
1 parent 0925eb9 commit c9b7451
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 9 deletions.
10 changes: 5 additions & 5 deletions src/ntfs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,10 @@ ntfs_file::ntfs_file(ntfs& dev, uint64_t inode) : dev(dev), inode(inode) {
process_fixups(&file_record->MultiSectorHeader, dev.file_record_size, dev.boot_sector->BytesPerSector);
}

void read_nonresident_mappings(const ATTRIBUTE_RECORD_HEADER* att, list<mapping>& mappings,
void read_nonresident_mappings(const ATTRIBUTE_RECORD_HEADER& att, list<mapping>& mappings,
uint32_t cluster_size, uint64_t vdl) {
uint64_t next_vcn = att->Form.Nonresident.LowestVcn, current_lcn = 0, current_vcn;
uint8_t* stream = (uint8_t*)att + att->Form.Nonresident.MappingPairsOffset;
uint64_t next_vcn = att.Form.Nonresident.LowestVcn, current_lcn = 0, current_vcn;
uint8_t* stream = (uint8_t*)&att + att.Form.Nonresident.MappingPairsOffset;
uint64_t max_cluster = vdl / cluster_size;

if (vdl & (cluster_size - 1))
Expand Down Expand Up @@ -152,7 +152,7 @@ buffer_t ntfs_file::read_nonresident_attribute(uint64_t offset, uint32_t length,
list<mapping> mappings;
uint32_t cluster_size = dev.boot_sector->BytesPerSector * dev.boot_sector->SectorsPerCluster;

read_nonresident_mappings(att, mappings, cluster_size, att->Form.Nonresident.ValidDataLength);
read_nonresident_mappings(*att, mappings, cluster_size, att->Form.Nonresident.ValidDataLength);

// FIXME - do we need to check that mappings is contiguous and in order?

Expand Down Expand Up @@ -270,7 +270,7 @@ list<mapping> ntfs_file::read_mappings(enum ntfs_attribute type, const u16string

uint32_t cluster_size = dev.boot_sector->BytesPerSector * dev.boot_sector->SectorsPerCluster;

read_nonresident_mappings(&att, mappings, cluster_size, att.Form.Nonresident.ValidDataLength);
read_nonresident_mappings(att, mappings, cluster_size, att.Form.Nonresident.ValidDataLength);

return false;
});
Expand Down
2 changes: 1 addition & 1 deletion src/ntfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ class ntfs {
};

// ntfs.cpp
void read_nonresident_mappings(const ATTRIBUTE_RECORD_HEADER* att, std::list<mapping>& mappings,
void read_nonresident_mappings(const ATTRIBUTE_RECORD_HEADER& att, std::list<mapping>& mappings,
uint32_t cluster_size, uint64_t vdl);
void populate_skip_list(ntfs& dev, uint64_t inode, std::list<uint64_t>& skiplist);
void process_fixups(MULTI_SECTOR_HEADER* header, uint64_t length, unsigned int sector_size);
6 changes: 3 additions & 3 deletions src/ntfs2btrfs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1970,7 +1970,7 @@ static void add_inode(root& r, uint64_t inode, uint64_t ntfs_inode, bool& is_dir
if (last_vcn < att.Form.Nonresident.LowestVcn)
mappings.emplace_back(0, last_vcn, att.Form.Nonresident.LowestVcn - last_vcn);

read_nonresident_mappings(&att, mappings2, cluster_size, vdl);
read_nonresident_mappings(att, mappings2, cluster_size, vdl);

mappings.splice(mappings.end(), mappings2);
}
Expand Down Expand Up @@ -2045,7 +2045,7 @@ static void add_inode(root& r, uint64_t inode, uint64_t ntfs_inode, bool& is_dir

list<mapping> ads_mappings;

read_nonresident_mappings(&att, ads_mappings, cluster_size, att.Form.Nonresident.ValidDataLength);
read_nonresident_mappings(att, ads_mappings, cluster_size, att.Form.Nonresident.ValidDataLength);

buffer_t ads_data((size_t)sector_align(att.Form.Nonresident.FileSize, cluster_size));
memset(ads_data.data(), 0, ads_data.size());
Expand Down Expand Up @@ -2191,7 +2191,7 @@ static void add_inode(root& r, uint64_t inode, uint64_t ntfs_inode, bool& is_dir

list<mapping> sd_mappings;

read_nonresident_mappings(&att, sd_mappings, cluster_size, att.Form.Nonresident.ValidDataLength);
read_nonresident_mappings(att, sd_mappings, cluster_size, att.Form.Nonresident.ValidDataLength);

sd.resize((size_t)sector_align(att.Form.Nonresident.FileSize, cluster_size));
memset(sd.data(), 0, sd.size());
Expand Down

0 comments on commit c9b7451

Please sign in to comment.