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

Function recover_HFS

src/hfs.c:58–84  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56}
57
58int recover_HFS(const disk_t *disk_car, const hfs_mdb_t *hfs_mdb,partition_t *partition,const int verbose, const int dump_ind, const int backup)
59{
60 uint64_t part_size;
61 if(test_HFS(disk_car,hfs_mdb,partition,verbose,dump_ind)!=0)
62 return 1;
63 /* The extra 0x400 bytes are for the backup MDB */
64 part_size=(uint64_t)be16(hfs_mdb->drNmAlBlks)*be32(hfs_mdb->drAlBlkSiz)+be16(hfs_mdb->drAlBlSt)*512+0x400;
65 partition->sborg_offset=0x400;
66 partition->sb_size=HFS_SUPERBLOCK_SIZE;
67 if(backup>0)
68 {
69 if(partition->part_offset+2*disk_car->sector_size<part_size)
70 return 1;
71 partition->sb_offset=part_size-0x400;
72 partition->part_offset=partition->part_offset+2*disk_car->sector_size-part_size;
73 }
74 partition->part_size=part_size;
75 set_HFS_info(partition,hfs_mdb);
76 partition->part_type_i386=P_HFS;
77 partition->part_type_mac=PMAC_HFS;
78 partition->part_type_gpt=GPT_ENT_TYPE_MAC_HFS;
79 if(verbose>0)
80 {
81 log_info("part_size %lu\n",(long unsigned)(partition->part_size/disk_car->sector_size));
82 }
83 return 0;
84}
85
86int test_HFS(const disk_t *disk_car, const hfs_mdb_t *hfs_mdb, const partition_t *partition, const int verbose, const int dump_ind)
87{

Callers 2

search_HFS_backupFunction · 0.85
search_type_2Function · 0.85

Calls 2

test_HFSFunction · 0.85
set_HFS_infoFunction · 0.85

Tested by

no test coverage detected