From d03948265679186dd89403da46d1aba1decafd55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= Date: Sat, 30 Jun 2012 19:09:11 +0200 Subject: [PATCH] Fix 'dosfslabel throws "Seek to 114116076544:Invalid argument" error when labeling'. See https://bugzilla.redhat.com/show_bug.cgi?id=693662 for more information. Signed-off-by: Daniel Baumann --- src/dosfslabel.c | 4 +++- src/fat.c | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) 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;