MCPcopy Create free account
hub / github.com/cgsecurity/testdisk / recover_NTFS

Function recover_NTFS

src/ntfs.c:94–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

92}
93
94int recover_NTFS(disk_t *disk_car, const struct ntfs_boot_sector*ntfs_header,partition_t *partition,const int verbose, const int dump_ind, const int backup)
95{
96 uint64_t part_size;
97 if(test_NTFS(disk_car,ntfs_header,partition,verbose,dump_ind)!=0)
98 return 1;
99 if(verbose>0)
100 {
101 log_ntfs_info(ntfs_header);
102 }
103 part_size=(uint64_t)(le64(ntfs_header->sectors_nbr)+1)*ntfs_sector_size(ntfs_header);
104 partition->sborg_offset=0;
105 partition->sb_size=512;
106 if(backup>0)
107 {
108 if(partition->part_offset+disk_car->sector_size<part_size)
109 {
110 log_warning("NTFS part_offset=%llu, part_size=%llu, sector_size=%u\n",
111 (long long unsigned)partition->part_offset, (long long unsigned)part_size,
112 disk_car->sector_size);
113 log_warning("NTFS partition cannot be added (part_offset<part_size).\n");
114 return 1;
115 }
116 if(verbose>1)
117 log_info("NTFS part_offset=%llu, part_size=%llu, sector_size=%u\n",
118 (long long unsigned)partition->part_offset, (long long unsigned)part_size,
119 disk_car->sector_size);
120 partition->sb_offset=part_size-disk_car->sector_size;
121 partition->part_offset-=partition->sb_offset;
122 if(verbose>1)
123 log_info("part_offset=%llu\n",(long long unsigned)partition->part_offset);
124 }
125 partition->part_size=part_size;
126 partition->part_type_i386=P_NTFS;
127 partition->part_type_gpt=GPT_ENT_TYPE_MS_BASIC_DATA;
128 set_NTFS_info(disk_car, ntfs_header, partition);
129 return 0;
130}
131
132static void set_NTFS_info(disk_t *disk_car, const struct ntfs_boot_sector*ntfs_header, partition_t *partition)
133{

Callers 3

search_NTFS_from_backupFunction · 0.85
search_NTFS_backupFunction · 0.85
search_type_0Function · 0.85

Calls 4

test_NTFSFunction · 0.85
log_ntfs_infoFunction · 0.85
ntfs_sector_sizeFunction · 0.85
set_NTFS_infoFunction · 0.85

Tested by

no test coverage detected