diff --git a/lib/ext2fs/dir_iterate.c b/lib/ext2fs/dir_iterate.c index 3b9c57c4..124862ea 100644 --- a/lib/ext2fs/dir_iterate.c +++ b/lib/ext2fs/dir_iterate.c @@ -29,7 +29,9 @@ errcode_t ext2fs_get_rec_len(ext2_filsys fs, { unsigned int len = dirent->rec_len; - if (len == EXT4_MAX_REC_LEN || len == 0) + if (fs->blocksize < 65536) + *rec_len = len; + else if (len == EXT4_MAX_REC_LEN || len == 0) *rec_len = fs->blocksize; else *rec_len = (len & 65532) | ((len & 3) << 16); diff --git a/tests/f_dup3/expect.1 b/tests/f_dup3/expect.1 index 9b1a28fa..eab75a8d 100644 --- a/tests/f_dup3/expect.1 +++ b/tests/f_dup3/expect.1 @@ -24,8 +24,8 @@ File /e2fsck (inode #16, mod time Tue Sep 21 04:32:22 1993) Clone multiply-claimed blocks? yes Pass 2: Checking directory structure -Entry '' in /lost+found (11) has invalid inode #: 24. -Clear? yes +Directory inode 11, block #12, offset 0: directory corrupted +Salvage? yes Pass 3: Checking directory connectivity Pass 4: Checking reference counts diff --git a/tests/f_dupfsblks/expect.1 b/tests/f_dupfsblks/expect.1 index aba2f523..3f701091 100644 --- a/tests/f_dupfsblks/expect.1 +++ b/tests/f_dupfsblks/expect.1 @@ -35,11 +35,14 @@ File /quux (inode #14, mod time Thu Aug 5 07:18:09 1999) Clone multiply-claimed blocks? yes Pass 2: Checking directory structure -Entry '' in ??? (12) has invalid inode #: 4194303. -Clear? yes +Directory inode 12, block #1, offset 0: directory corrupted +Salvage? yes -Entry 'M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?M-^?' in ??? (12) has invalid inode #: 16383. -Clear? yes +Directory inode 12, block #2, offset 0: directory corrupted +Salvage? yes + +Directory inode 12, block #3, offset 0: directory corrupted +Salvage? yes Entry '' in ??? (12) has a zero-length name. Clear? yes