summaryrefslogtreecommitdiffstats
path: root/fs/ntfs3
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@linaro.org>2023-10-17 17:04:39 +0300
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>2024-01-29 12:05:08 +0300
commitb2dd7b953c25ffd5912dda17e980e7168bebcf6c (patch)
tree107fedcb46e7744f06a0e26a57f8a917f0b8ba39 /fs/ntfs3
parentd68968440b1a75dee05cfac7f368f1aa139e1911 (diff)
downloadlinux-b2dd7b953c25ffd5912dda17e980e7168bebcf6c.tar.gz
linux-b2dd7b953c25ffd5912dda17e980e7168bebcf6c.tar.bz2
linux-b2dd7b953c25ffd5912dda17e980e7168bebcf6c.zip
fs/ntfs3: Fix an NULL dereference bug
The issue here is when this is called from ntfs_load_attr_list(). The "size" comes from le32_to_cpu(attr->res.data_size) so it can't overflow on a 64bit systems but on 32bit systems the "+ 1023" can overflow and the result is zero. This means that the kmalloc will succeed by returning the ZERO_SIZE_PTR and then the memcpy() will crash with an Oops on the next line. Fixes: be71b5cba2e6 ("fs/ntfs3: Add attrib operations") Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Diffstat (limited to 'fs/ntfs3')
-rw-r--r--fs/ntfs3/ntfs_fs.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
index 81f7563428ee..627419bd6f77 100644
--- a/fs/ntfs3/ntfs_fs.h
+++ b/fs/ntfs3/ntfs_fs.h
@@ -475,7 +475,7 @@ bool al_delete_le(struct ntfs_inode *ni, enum ATTR_TYPE type, CLST vcn,
int al_update(struct ntfs_inode *ni, int sync);
static inline size_t al_aligned(size_t size)
{
- return (size + 1023) & ~(size_t)1023;
+ return size_add(size, 1023) & ~(size_t)1023;
}
/* Globals from bitfunc.c */