]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/fat.c (grub_fat_label) [MODE_EXFAT]: Set *label to 0
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 23 Oct 2011 23:31:06 +0000 (01:31 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 23 Oct 2011 23:31:06 +0000 (01:31 +0200)
if no label is found.
(grub_fat_iterate_dir): Fix file size type.
(grub_fat_iterate_dir): Likewise.

ChangeLog
grub-core/fs/fat.c

index ea8804bd16fe8bcac0627c74c4f60ae403579ff2..306358faafa341ad624eb9ecbffd8d51ed9d0c5f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/fat.c (grub_fat_label) [MODE_EXFAT]: Set *label to 0
+       if no label is found.
+       (grub_fat_iterate_dir): Fix file size type.
+       (grub_fat_iterate_dir): Likewise.
+
 2011-10-23  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/lib/reed_solomon.c (gf_invert): Declare as const and
index ae705bcfb33452924163c138813bcd8981e53d76..36a43fca02b4918e2f7732e54e760067287089ec 100644 (file)
@@ -485,7 +485,7 @@ grub_fat_read_data (grub_disk_t disk, struct grub_fat_data *data,
                          + data->logical_sector_bits
                          + GRUB_DISK_SECTOR_BITS);
   logical_cluster = offset >> logical_cluster_bits;
-  offset &= (1 << logical_cluster_bits) - 1;
+  offset &= (1ULL << logical_cluster_bits) - 1;
 
   if (logical_cluster < data->cur_cluster_num)
     {
@@ -631,9 +631,9 @@ grub_fat_iterate_dir (grub_disk_t disk, struct grub_fat_data *data,
                case 0xc0:
                  node.first_cluster = grub_cpu_to_le32 (sec.type_specific.stream_extension.first_cluster);
                  node.valid_size
-                   = grub_cpu_to_le32 (sec.type_specific.stream_extension.valid_size);
+                   = grub_cpu_to_le64 (sec.type_specific.stream_extension.valid_size);
                  node.file_size
-                   = grub_cpu_to_le32 (sec.type_specific.stream_extension.file_size);
+                   = grub_cpu_to_le64 (sec.type_specific.stream_extension.file_size);
                  node.have_stream = 1;
                  break;
                case 0xc1:
@@ -1026,6 +1026,8 @@ grub_fat_label (grub_device_t device, char **label)
   if (! data)
     return grub_errno;
 
+  *label = NULL;
+
   while (1)
     {
       offset += sizeof (dir);