[U-Boot-Users] Multiple VFAT and FAT32 bugs

Jochen Karrer jnkarrer at gmx.de
Wed May 24 13:17:30 CEST 2006

I posted a patch in the sourceforge tracker for many VFAT Long filename and FAT32 bugs. I want to have feedback if the following bugs are fixed correctly with my patch. I checked with 4 cards. Two of them with clustersize 1, two cards with clustersize 2, two cards with FAT16 and two with FAT32. Each card had 100 long filenames in the rootdirectory and one subdirectory with 100 long filenames.

patch: [ 1490921 ] Invalid FAT entry in FAT16 long file names

1) FAT32: Root directory not displayed completely ore messed up
Bug: root directory does not work because it is assumed that the clusters/sectors are ordered consecutively which is only true for FAT12/FAT16.

2) FAT32 Machine crash when doing fatls on FAT32
Bug: get_fatent does not work because the fatbuf is 16Bit aligned and get_fatent typecasts casts fatbuf to 32Bit. This generates alignment exceptions.

3) VFAT/LFN: Nonexisting files are displayed, or filenames are wrong
Bug: Attribute check for Long file name entry is broken ( & ATTR_VFAT instead of == ATTR_VFAT) This causes some non filenames to be interpreted as filenames.

4) FAT32/FAT12 "Invalid FAT entry" message on FAT32, endless loop in FAT32
Bug: comparison for valid cluster number is fixed to < 0xfff0 but for FAT12 0xff0 and for FAT32 0x0ffffff0 is required

5) VFAT/LFN "Invalid FAT entry" or scrambled file names
Bug: get_vfatname does not check if an entry is already deleted.

6) VFAT: Some filenames are not displayed
Bug: get_vfatname is always called with cursect=0 for root directory. For this reason all filenames crossing a cluster boundary in root directory are not displayed.

7) VFAT: fatls displays garbage chars in some filenames
Bug: get_vfatname decrements the slotptr one to much when the filename crosses cluster boundary. This causes wrong filenames.

8) VFAT: some files are not shown or some filenames are messed up
Bug: get_vfatname does not check if the first slot in the second cluster is the last component (realdent). If it is the last the filename will be messed up.


Bis zu 70% Ihrer Onlinekosten sparen: GMX SmartSurfer!
      Kostenlos downloaden: http://www.gmx.net/de/go/smartsurfer

More information about the U-Boot mailing list