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

Function fat1x_rootdir

src/fat_dir.c:481–509  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

479}
480
481static int fat1x_rootdir(disk_t *disk_car, const partition_t *partition, const dir_data_t *dir_data, const struct fat_boot_sector*fat_header, file_info_t *dir_list)
482{
483 const unsigned int root_size=(get_dir_entries(fat_header)*32+disk_car->sector_size-1)/disk_car->sector_size*disk_car->sector_size;
484 if(root_size==0)
485 return -1;
486#ifndef DISABLED_FOR_FRAMAC
487 if(dir_data->verbose>1)
488 {
489 log_trace("fat1x_rootdir root_size=%u sectors\n",root_size/disk_car->sector_size);
490 }
491#endif
492 {
493 int res;
494 uint64_t start;
495 unsigned char *buffer_dir;
496 buffer_dir=(unsigned char*)MALLOC(root_size);
497 start=partition->part_offset+(uint64_t)((le16(fat_header->reserved)+fat_header->fats*le16(fat_header->fat_length))*disk_car->sector_size);
498 if((unsigned)disk_car->pread(disk_car, buffer_dir, root_size, start) != root_size)
499 {
500#ifndef DISABLED_FOR_FRAMAC
501 log_error("FAT 1x: Can't read root directory.\n");
502#endif
503 /* Don't return yet, it may have been a partial read */
504 }
505 res=dir_fat_aux(buffer_dir, root_size, dir_data->param, dir_list);
506 free(buffer_dir);
507 return res;
508 }
509}
510
511
512dir_partition_t dir_partition_fat_init(disk_t *disk_car, const partition_t *partition, dir_data_t *dir_data, const int verbose)

Callers 1

fat_dirFunction · 0.85

Calls 3

get_dir_entriesFunction · 0.85
MALLOCFunction · 0.85
dir_fat_auxFunction · 0.85

Tested by

no test coverage detected