From 6da1677bc33608eddb87b65b86dfc5881dd6c6e8 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sat, 9 Mar 2013 08:08:31 +0000 Subject: [PATCH] Fix off-by-one in the VirtualFAT cluster chain generator. --- Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.c | 2 +- Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.c b/Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.c index 883586c3d6..7a248d87ef 100644 --- a/Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.c +++ b/Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.c @@ -114,7 +114,7 @@ static void ReadBlock(uint16_t BlockNumber) } /* Mark last cluster as end of file */ - ((uint16_t*)&BlockBuffer)[FILE_CLUSTERS(2049) + 3] = 0xFFFF; + ((uint16_t*)&BlockBuffer)[FILE_CLUSTERS(2049) + 1] = 0xFFFF; break; case 3: diff --git a/Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.h b/Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.h index 156760afd8..98ea5cdd9e 100644 --- a/Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.h +++ b/Bootloaders/Incomplete/MassStorage/Lib/VirtualFAT.h @@ -39,11 +39,11 @@ /* Macros: */ #define FIRMWARE_FILE_SIZE (FLASHEND + 1UL) - #define FILE_CLUSTERS(size) ((size / CLUSTER_SIZE_BYTES) + ((size % CLUSTER_SIZE_BYTES) ? 1 : 0)) #define SECTOR_SIZE_BYTES 512 #define SECTOR_PER_CLUSTER 4 #define CLUSTER_SIZE_BYTES (SECTOR_PER_CLUSTER * SECTOR_SIZE_BYTES) + #define FILE_CLUSTERS(size) ((size / CLUSTER_SIZE_BYTES) + ((size % CLUSTER_SIZE_BYTES) ? 1 : 0)) #define LUN_MEDIA_BLOCKS ((FIRMWARE_FILE_SIZE / SECTOR_SIZE_BYTES) + 32)