diff --git a/src/dosfslabel.c b/src/dosfslabel.c index 05ba7e8..71f01d3 100644 --- a/src/dosfslabel.c +++ b/src/dosfslabel.c @@ -82,7 +82,7 @@ static void check_atari(void) int main(int argc, char *argv[]) { - DOS_FS fs; + DOS_FS fs = {0}; rw = 0; char *device = NULL; @@ -113,6 +113,8 @@ int main(int argc, char *argv[]) fs_open(device, rw); read_boot(&fs); + if (fs.fat_bits == 32) + read_fat(&fs); if (!rw) { fprintf(stdout, "%s\n", fs.label); exit(0); diff --git a/src/fat.c b/src/fat.c index 5a0dfb0..962a8bc 100644 --- a/src/fat.c +++ b/src/fat.c @@ -86,8 +86,10 @@ void read_fat(DOS_FS * fs) unsigned long total_num_clusters; /* Clean up from previous pass */ - free(fs->fat); - free(fs->cluster_owner); + if (fs->fat) + free(fs->fat); + if (fs->cluster_owner) + free(fs->cluster_owner); fs->fat = NULL; fs->cluster_owner = NULL;