]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
exfat: fix uninit-value in __exfat_get_dentry_set
authorNamjae Jeon <linkinjeon@kernel.org>
Sat, 26 Oct 2024 04:06:15 +0000 (13:06 +0900)
committerNamjae Jeon <linkinjeon@kernel.org>
Mon, 25 Nov 2024 08:08:21 +0000 (17:08 +0900)
There is no check if stream size and start_clu are invalid.
If start_clu is EOF cluster and stream size is 4096, It will
cause uninit value access. because ei->hint_femp.eidx could
be 128(if cluster size is 4K) and wrong hint will allocate
next cluster. and this cluster will be same with the cluster
that is allocated by exfat_extend_valid_size(). The previous
patch will check invalid start_clu, but for clarity, initialize
hint_femp.eidx to zero.

Cc: stable@vger.kernel.org
Reported-by: syzbot+01218003be74b5e1213a@syzkaller.appspotmail.com
Tested-by: syzbot+01218003be74b5e1213a@syzkaller.appspotmail.com
Reviewed-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/exfat/namei.c

index 98f67e632ad1681bef53bc8407cdedbc691a8c3a..337197ece599551516207992d516f0348437e893 100644 (file)
@@ -345,6 +345,7 @@ static int exfat_find_empty_entry(struct inode *inode,
                if (ei->start_clu == EXFAT_EOF_CLUSTER) {
                        ei->start_clu = clu.dir;
                        p_dir->dir = clu.dir;
+                       hint_femp.eidx = 0;
                }
 
                /* append to the FAT chain */