• Zeng Heng's avatar
    fs/ntfs3: fix panic about slab-out-of-bounds caused by ntfs_list_ea() · 8e7e27b2
    Zeng Heng authored
    Here is a BUG report about linux-6.1 from syzbot, but it still remains
    within upstream:
    
    BUG: KASAN: slab-out-of-bounds in ntfs_list_ea fs/ntfs3/xattr.c:191 [inline]
    BUG: KASAN: slab-out-of-bounds in ntfs_listxattr+0x401/0x570 fs/ntfs3/xattr.c:710
    Read of size 1 at addr ffff888021acaf3d by task syz-executor128/3632
    
    Call Trace:
     kasan_report+0x139/0x170 mm/kasan/report.c:495
     ntfs_list_ea fs/ntfs3/xattr.c:191 [inline]
     ntfs_listxattr+0x401/0x570 fs/ntfs3/xattr.c:710
     vfs_listxattr fs/xattr.c:457 [inline]
     listxattr+0x293/0x2d0 fs/xattr.c:804
     path_listxattr fs/xattr.c:828 [inline]
     __do_sys_llistxattr fs/xattr.c:846 [inline]
    
    Before derefering field members of `ea` in unpacked_ea_size(), we need to
    check whether the EA_FULL struct is located in access validate range.
    
    Similarly, when derefering `ea->name` field member, we need to check
    whethe the ea->name is located in access validate range, too.
    
    Fixes: be71b5cb ("fs/ntfs3: Add attrib operations")
    Reported-by: syzbot+9fcea5ef6dc4dc72d334@syzkaller.appspotmail.com
    Signed-off-by: default avatarZeng Heng <zengheng4@huawei.com>
    [almaz.alexandrovich@paragon-software.com: took the ret variable out of the loop block]
    Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
    8e7e27b2
xattr.c 21.3 KB