]> Pileus Git - ~andy/linux/commitdiff
fanotify: Dont allow a mask of 0 if setting or removing a mark
authorLino Sanfilippo <LinoSanfilippo@gmx.de>
Mon, 22 Nov 2010 17:46:33 +0000 (18:46 +0100)
committerEric Paris <eparis@redhat.com>
Tue, 7 Dec 2010 21:14:21 +0000 (16:14 -0500)
In mark_remove_from_mask() we destroy marks that have their event mask cleared.
Thus we should not allow the creation of those marks in the first place.
With this patch we check if the mask given from user is 0 in case of FAN_MARK_ADD.
If so we return an error. Same for FAN_MARK_REMOVE since this does not have any
effect.

Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Signed-off-by: Eric Paris <eparis@redhat.com>
fs/notify/fanotify/fanotify_user.c

index c0ca1fa1550c4f0e29a5764a823053e0bec9da3f..480434c5ee5f6b072386a8086a920616e46a2f1c 100644 (file)
@@ -769,8 +769,10 @@ SYSCALL_DEFINE(fanotify_mark)(int fanotify_fd, unsigned int flags,
        if (flags & ~FAN_ALL_MARK_FLAGS)
                return -EINVAL;
        switch (flags & (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_FLUSH)) {
-       case FAN_MARK_ADD:
+       case FAN_MARK_ADD:              /* fallthrough */
        case FAN_MARK_REMOVE:
+               if (!mask)
+                       return -EINVAL;
        case FAN_MARK_FLUSH:
                break;
        default: