fanotify: don't write with size under sizeof(response)
authorFabian Frederick <fabf@skynet.be>
Tue, 12 May 2020 18:19:21 +0000 (20:19 +0200)
committerJan Kara <jack@suse.cz>
Wed, 13 May 2020 15:16:57 +0000 (17:16 +0200)
fanotify_write() only aligned copy_from_user size to sizeof(response)
for higher values. This patch avoids all values below as suggested
by Amir Goldstein and set to response size unconditionally.

Link: https://lore.kernel.org/r/20200512181921.405973-1-fabf@skynet.be
Signed-off-by: Fabian Frederick <fabf@skynet.be>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/notify/fanotify/fanotify_user.c

index 02a314a..63b5dff 100644 (file)
@@ -487,8 +487,10 @@ static ssize_t fanotify_write(struct file *file, const char __user *buf, size_t
 
        group = file->private_data;
 
-       if (count > sizeof(response))
-               count = sizeof(response);
+       if (count < sizeof(response))
+               return -EINVAL;
+
+       count = sizeof(response);
 
        pr_debug("%s: group=%p count=%zu\n", __func__, group, count);