On Wed, Aug 24, 2016 at 9:37 PM, Andrei Borzenkov <[email protected]> wrote: > 24.08.2016 16:36, Carlo Caione пишет: >> From: Carlo Caione <[email protected]> >> >> For exFAT the file size can be > 4GB. The 'grub_fat_data' is still >> marking the 'file_size' as grub_ssize_t that is always 32bit when >> compiling for i386-pc also when using exFAT. >> >> This is causing a problem when trying to open in loopback a > 4GB file >> from an exFAT partition. >> >> Fix this modifying the size of the 'file_size' according to the >> MODE_EXFAT define. >> >> Signed-off-by: Carlo Caione <[email protected]> >> --- >> grub-core/fs/fat.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/grub-core/fs/fat.c b/grub-core/fs/fat.c >> index 79fe864..d5212c2 100644 >> --- a/grub-core/fs/fat.c >> +++ b/grub-core/fs/fat.c >> @@ -183,7 +183,11 @@ struct grub_fat_data >> grub_uint32_t num_clusters; >> >> grub_uint8_t attr; >> - grub_ssize_t file_size; >> +#ifndef MODE_EXFAT >> + grub_uint32_t file_size; >> +#else >> + grub_uint64_t file_size; >> +#endif >> grub_uint32_t file_cluster; >> grub_uint32_t cur_cluster_num; >> grub_uint32_t cur_cluster; >> > > Looks correct except I'd use conditon "ifdef MODE_EXFAT", negative > condition looks strange in such cases.
This pattern is literally used 5 lines above and all over the place in fat.c It would look strange otherwise. -- Carlo Caione | +39.340.80.30.096 | Endless _______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
