From 99415e7a91578a594151878b172c4acf595b1a76 Mon Sep 17 00:00:00 2001 From: Christopher Williams Date: Mon, 9 May 2022 17:35:03 -0700 Subject: [PATCH] R0.14b patch 1 March 5, 2022 f_mkfs function creates broken exFAT volume when the size of volume is >= 2^32 sectors (2 TiB in 512 bytes/sector). --- source/ff.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ff.c b/source/ff.c index cbdf685..22a7cb9 100644 --- a/source/ff.c +++ b/source/ff.c @@ -5957,7 +5957,7 @@ FRESULT f_mkfs ( sz_fat = (DWORD)((sz_vol / sz_au + 2) * 4 + ss - 1) / ss; /* Number of FAT sectors */ b_data = (b_fat + sz_fat + sz_blk - 1) & ~((LBA_t)sz_blk - 1); /* Align data area to the erase block boundary */ if (b_data - b_vol >= sz_vol / 2) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too small volume? */ - n_clst = (DWORD)(sz_vol - (b_data - b_vol)) / sz_au; /* Number of clusters */ + n_clst = (DWORD)((sz_vol - (b_data - b_vol)) / sz_au); /* Number of clusters */ if (n_clst <16) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too few clusters? */ if (n_clst > MAX_EXFAT) LEAVE_MKFS(FR_MKFS_ABORTED); /* Too many clusters? */