ntfs: add sanity check on allocation size
authorDongliang Mu <mudongliangabcd@gmail.com>
Tue, 22 Mar 2022 21:38:39 +0000 (14:38 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 22 Mar 2022 22:57:00 +0000 (15:57 -0700)
ntfs_read_inode_mount invokes ntfs_malloc_nofs with zero allocation
size.  It triggers one BUG in the __ntfs_malloc function.

Fix this by adding sanity check on ni->attr_list_size.

Link: https://lkml.kernel.org/r/20220120094914.47736-1-dzm91@hust.edu.cn
Reported-by: syzbot+3c765c5248797356edaa@syzkaller.appspotmail.com
Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
Acked-by: Anton Altaparmakov <anton@tuxera.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ntfs/inode.c

index 4474adb..517b71c 100644 (file)
@@ -1881,6 +1881,10 @@ int ntfs_read_inode_mount(struct inode *vi)
                }
                /* Now allocate memory for the attribute list. */
                ni->attr_list_size = (u32)ntfs_attr_size(a);
+               if (!ni->attr_list_size) {
+                       ntfs_error(sb, "Attr_list_size is zero");
+                       goto put_err_out;
+               }
                ni->attr_list = ntfs_malloc_nofs(ni->attr_list_size);
                if (!ni->attr_list) {
                        ntfs_error(sb, "Not enough memory to allocate buffer "