Browse Source

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 <mail@daniel-baumann.ch>
Jaroslav Škarvada 12 years ago
parent
commit
d039482656
2 changed files with 7 additions and 3 deletions
  1. 3 1
      src/dosfslabel.c
  2. 4 2
      src/fat.c

+ 3 - 1
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);

+ 4 - 2
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;