Re: [PATCH] ntfs: check the file name against the key length of an index entry

From: Namjae Jeon

Date: Fri Nov 06 2026 - 07:43:12 EST


On Fri, Nov 6, 2026 at 8:28 PM Wahid Khan <wahidzk0091@xxxxxxxxx> wrote:
>
> ntfs_index_entry_inconsistent() checks that the file name of a
> $FILE_NAME key fits in the index entry. It does not check that the name
> fits in the key, which is what key_length describes. Code that works on
> the key alone relies on that.
>
> ntfs_readdir() copies key_length bytes of the key of the next entry to
> resume the enumeration, and later uses the copy to search the index. If
> file_name_length is larger than the key holds, the name comparison reads
> past the copy:
>
> BUG: KASAN: slab-out-of-bounds in ntfs_file_compare_values+0x2d1/0x4b0
> Read of size 2 at addr ffff88800a4ef2ce by task init/1
> ntfs_file_compare_values
> ntfs_collate
> ntfs_ie_lookup
> ntfs_index_lookup
> ntfs_readdir
> iterate_dir
> Allocated by task 1:
> kmemdup_noprof
> ntfs_readdir
> The buggy address is located 0 bytes to the right of
> allocated 78-byte region
>
> Two bytes of an image from mkntfs are enough: in an entry whose name has
> six characters (key_length 78), change file_name_length from 6 to 7, so
> the key claims 80 bytes. The entry itself is 96 bytes, so the existing
> check lets it pass. The next readdir of the directory reads the extra
> bytes.
>
> Check the name against key_length, and check that the key is large
> enough to hold file_name_length in the first place.
>
> Fixes: 0a8ac0c1fa0b ("ntfs: update directory operations")
> Cc: stable@xxxxxxxxxxxxxxx # v7.1+
> Signed-off-by: Wahid Khan <wahidzk0091@xxxxxxxxx>
Applied it to #ntfs-next.
Thanks!