diff mbox series

fs: fat: directory entries starting with 0x05

Message ID 20201121122203.25936-1-xypron.glpk@gmx.de
State New
Delegated to: Tom Rini
Headers show
Series fs: fat: directory entries starting with 0x05 | expand

Commit Message

Heinrich Schuchardt Nov. 21, 2020, 12:22 p.m. UTC
0x05 is used as replacement letter for 0xe5 at the first position of short
file names. We must not skip over directory entries starting with 0x05.

Cf. Microsoft FAT Specification, August 30 2005

Fixes: 39606d462c97 ("fs: fat: handle deleted directory entries correctly")
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
 fs/fat/fat.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--
2.29.2

Comments

Simon Glass Nov. 23, 2020, 1:28 a.m. UTC | #1
On Sat, 21 Nov 2020 at 05:22, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> 0x05 is used as replacement letter for 0xe5 at the first position of short
> file names. We must not skip over directory entries starting with 0x05.
>
> Cf. Microsoft FAT Specification, August 30 2005
>
> Fixes: 39606d462c97 ("fs: fat: handle deleted directory entries correctly")
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
>  fs/fat/fat.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
Christian Gmeiner Nov. 23, 2020, 7:03 a.m. UTC | #2
Am Sa., 21. Nov. 2020 um 13:22 Uhr schrieb Heinrich Schuchardt
<xypron.glpk@gmx.de>:
>
> 0x05 is used as replacement letter for 0xe5 at the first position of short
> file names. We must not skip over directory entries starting with 0x05.
>
> Cf. Microsoft FAT Specification, August 30 2005
>
> Fixes: 39606d462c97 ("fs: fat: handle deleted directory entries correctly")
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>

Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
diff mbox series

Patch

diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index 28aa5aaa9f..fb6ba89466 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -926,8 +926,7 @@  static int fat_itr_next(fat_itr *itr)
 		if (!dent)
 			return 0;

-		if (dent->name[0] == DELETED_FLAG ||
-		    dent->name[0] == aRING)
+		if (dent->name[0] == DELETED_FLAG)
 			continue;

 		if (dent->attr & ATTR_VOLUME) {