From: Theodore Ts'o Date: Sat, 15 Apr 2017 14:33:53 +0000 (-0400) Subject: e2fsck: fix ASAN error when using 128 byte inodes X-Git-Tag: v1.43.5~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e251f3585902919e809414a4bd17d6bfdbdaaad1;p=thirdparty%2Fe2fsprogs.git e2fsck: fix ASAN error when using 128 byte inodes Due to the inode table buffering, it's actually hard to overrun the end of allocated memory, so the ASAN error doesn't trigger all the time. Google-Bug-Id: 37326362 Signed-off-by: Theodore Ts'o --- diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 188cc5625..7983ffd15 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -1822,9 +1822,14 @@ void e2fsck_pass1(e2fsck_t ctx) inode->i_block[EXT2_DIND_BLOCK] || inode->i_block[EXT2_TIND_BLOCK] || ext2fs_file_acl_block(fs, inode))) { + struct ext2_inode_large *ip; + inodes_to_process[process_inode_count].ino = ino; - inodes_to_process[process_inode_count].inode = - *(struct ext2_inode_large *)inode; + ip = &inodes_to_process[process_inode_count].inode; + if (inode_size < sizeof(struct ext2_inode_large)) + memcpy(ip, inode, inode_size); + else + memcpy(ip, inode, sizeof(*ip)); process_inode_count++; } else check_blocks(ctx, &pctx, block_buf);