]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - GRUB2/grub-2.04/grub-core/fs/fat.c
1. add Italian languare, translated by AverageUser2
[Ventoy.git] / GRUB2 / grub-2.04 / grub-core / fs / fat.c
index 2b26a8cb2ed086b99d6a43231008152d0da55f2d..6d4ce0d5f75af1fc0264e44af58032cb42e41a4b 100644 (file)
@@ -558,7 +558,7 @@ grub_fat_read_data (grub_disk_t disk, grub_fshelp_node_t node,
          if (next_cluster >= node->data->cluster_eof_mark)
            return ret;
 
-         if (next_cluster < 2 || next_cluster >= node->data->num_clusters)
+         if (next_cluster < 2 || (next_cluster - 2) >= node->data->num_clusters)
            {
              grub_error (GRUB_ERR_BAD_FS, "invalid cluster %u",
                          next_cluster);
@@ -964,6 +964,12 @@ grub_fat_dir (grub_device_t device, const char *path, grub_fs_dir_hook_t hook,
 
       info.dir = !! (ctxt.dir.attr & GRUB_FAT_ATTR_DIRECTORY);
       info.case_insensitive = 1;
+
+      #ifdef MODE_EXFAT
+      if (!info.dir)
+         info.size = ctxt.dir.file_size;
+      #endif
+      
 #ifdef MODE_EXFAT
       if (!ctxt.dir.have_stream)
        continue;
@@ -1409,7 +1415,7 @@ int grub_fat_get_file_chunk(grub_uint64_t part_start, grub_file_t file, ventoy_i
                 return 0;
             }
 
-            if (next_cluster < 2 || next_cluster >= node->data->num_clusters)
+            if (next_cluster < 2 || (next_cluster - 2) >= node->data->num_clusters)
             {
                 grub_error (GRUB_ERR_BAD_FS, "invalid cluster %u", next_cluster);
                 return -1;
@@ -1445,4 +1451,3 @@ END:
 }
 
 #endif
-