From: J. Vijayanand <vijayanand.jayara...@in.bosch.com>

ATTR_VFAT condition requires multiple bits to be set but the present
condition checking in do_fat_read() & get_dentfromdir() ends up
passing on even a single bit being set.

Signed-off-by: J. Vijayanand <vijayanand.jayara...@in.bosch.com>
Signed-off-by: Sergei Shtylyov <sshtyl...@ru.mvista.com>

---
 fs/fat/fat.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: u-boot/fs/fat/fat.c
===================================================================
--- u-boot.orig/fs/fat/fat.c
+++ u-boot/fs/fat/fat.c
@@ -572,8 +572,8 @@ static dir_entry *get_dentfromdir (fsdat
                        }
                        if ((dentptr->attr & ATTR_VOLUME)) {
 #ifdef CONFIG_SUPPORT_VFAT
-                               if ((dentptr->attr & ATTR_VFAT) &&
-                                   (dentptr-> name[0] & LAST_LONG_ENTRY_MASK)) 
{
+                               if ((dentptr->attr & ATTR_VFAT) == ATTR_VFAT &&
+                                   (dentptr->name[0] & LAST_LONG_ENTRY_MASK)) {
                                        prevcksum = ((dir_slot 
*)dentptr)->alias_checksum;
                                        get_vfatname(mydata, curclust,
                                                     get_dentfromdir_block,
@@ -897,7 +897,7 @@ do_fat_read (const char *filename, void 
                        }
                        if ((dentptr->attr & ATTR_VOLUME)) {
 #ifdef CONFIG_SUPPORT_VFAT
-                               if ((dentptr->attr & ATTR_VFAT) &&
+                               if ((dentptr->attr & ATTR_VFAT) == ATTR_VFAT &&
                                    (dentptr->name[0] & LAST_LONG_ENTRY_MASK)) {
                                        prevcksum =
                                                ((dir_slot 
*)dentptr)->alias_checksum;
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to