From 510df49c464019ee13193aa9eb7832ad78b2570b Mon Sep 17 00:00:00 2001 From: patacongo Date: Tue, 3 May 2011 22:30:53 +0000 Subject: [PATCH] Incorporate two FAT bugfixes reported by Sheref Younan. git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3557 42af7a65-404d-4744-a932-0658087f49c3 --- ChangeLog | 3 +++ fs/fat/fs_fat32.c | 2 +- fs/fat/fs_fat32util.c | 6 ++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index a0ade81662..702ffe09fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1718,3 +1718,6 @@ implementation is incomplete on initial checkin. * apps/examples/nxffs and configs/sim/nxffs: Add a test a a configuration that will be used to verify NXFFS. + * fs/fat/fs_fat32.c and fs_fat32util.c: Incorpated two bugs with fixed provided + by Sheref Younan. Thanks! + diff --git a/fs/fat/fs_fat32.c b/fs/fat/fs_fat32.c index 2d880dabc9..4547d0b24b 100644 --- a/fs/fat/fs_fat32.c +++ b/fs/fat/fs_fat32.c @@ -1179,7 +1179,7 @@ static int fat_sync(FAR struct file *filep) * in the sector using the saved directory index. */ - direntry = &fs->fs_buffer[ff->ff_dirindex * 32]; + direntry = &fs->fs_buffer[(ff->ff_dirindex & DIRSEC_NDXMASK(fs)) * 32]; /* Set the archive bit, set the write time, and update * anything that may have* changed in the directory diff --git a/fs/fat/fs_fat32util.c b/fs/fat/fs_fat32util.c index aa8db91d58..a37f8fadbf 100644 --- a/fs/fat/fs_fat32util.c +++ b/fs/fat/fs_fat32util.c @@ -649,7 +649,8 @@ int fat_mount(struct fat_mountpt_s *fs, bool writeable) goto errout_with_buffer; } - if (fat_checkbootrecord(fs) != OK) + ret = fat_checkbootrecord(fs); + if (ret != OK) { /* The contents of sector 0 is not a boot record. It could be a * partition, however. Assume it is a partition and get the offset @@ -683,7 +684,8 @@ int fat_mount(struct fat_mountpt_s *fs, bool writeable) /* Check if this is a boot record */ - if (fat_checkbootrecord(fs) != OK) + ret = fat_checkbootrecord(fs); + if (ret != OK) { fdbg("No valid MBR\n"); goto errout_with_buffer;