From c4ce80167eea78ae46a5a903e676b81734e99029 Mon Sep 17 00:00:00 2001 From: Packit Date: Oct 07 2020 15:42:18 +0000 Subject: Apply patch e2fsprogs-1.45.5-e2fsck-abort-if-there-is-a-corrupted-directory-block.patch patch_name: e2fsprogs-1.45.5-e2fsck-abort-if-there-is-a-corrupted-directory-block.patch present_in_specfile: true --- diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c index a5fc1be..3dd1e94 100644 --- a/e2fsck/rehash.c +++ b/e2fsck/rehash.c @@ -160,6 +160,10 @@ static int fill_dir_block(ext2_filsys fs, dir_offset += rec_len; if (dirent->inode == 0) continue; + if ((name_len) == 0) { + fd->err = EXT2_ET_DIR_CORRUPTED; + return BLOCK_ABORT; + } if (!fd->compress && (name_len == 1) && (dirent->name[0] == '.')) continue; @@ -401,6 +405,11 @@ static int duplicate_search_and_fix(e2fsck_t ctx, ext2_filsys fs, continue; } new_len = ext2fs_dirent_name_len(ent->dir); + if (new_len == 0) { + /* should never happen */ + ext2fs_unmark_valid(fs); + continue; + } memcpy(new_name, ent->dir->name, new_len); mutate_name(new_name, &new_len); for (j=0; j < fd->num_array; j++) {