From 57d09d7dbfe6a5956c4c0828141a4cad59624549 Mon Sep 17 00:00:00 2001 From: Sheng Yong Date: Tue, 19 Nov 2019 17:46:48 +0800 Subject: [PATCH] f2fs: check if file namelen exceeds max value mainline inclusion from mainline-v5.1-rc1 commit 720db068634c91553a8e1d9a0fcd8c7050e06d2b category: bugfix bugzilla: 13690 CVE: CVE-2019-9445 ------------------------------------------------- Dentry bitmap is not enough to detect incorrect dentries. So this patch also checks the namelen value of a dentry. Signed-off-by: Gong Chen Signed-off-by: Sheng Yong Reviewed-by: Chao Yu Signed-off-by: Jaegeuk Kim Signed-off-by: Yang Yingliang Reviewed-by: Wei Fang Signed-off-by: Yang Yingliang --- fs/f2fs/dir.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index 36961c9b3163..f73c9e5ea936 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c @@ -812,7 +812,8 @@ int f2fs_fill_dentries(struct dir_context *ctx, struct f2fs_dentry_ptr *d, /* check memory boundary before moving forward */ bit_pos += GET_DENTRY_SLOTS(le16_to_cpu(de->name_len)); - if (unlikely(bit_pos > d->max)) { + if (unlikely(bit_pos > d->max || + le16_to_cpu(de->name_len) > F2FS_NAME_LEN)) { f2fs_msg(sbi->sb, KERN_WARNING, "%s: corrupted namelen=%d, run fsck to fix.", __func__, le16_to_cpu(de->name_len)); -- GitLab