summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSasha Levin <sasha.levin@oracle.com>2014-04-09 01:04:11 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-09 01:48:51 +0200
commite53d77eb8bb616e903e34cc7a918401bee3b5149 (patch)
treebdab4a168e8afc00590dcec684205c656ae2e81e
parentmm: vmscan: do not swap anon pages just because free+file is low (diff)
downloadlinux-e53d77eb8bb616e903e34cc7a918401bee3b5149.tar.xz
linux-e53d77eb8bb616e903e34cc7a918401bee3b5149.zip
autofs4: check dev ioctl size before allocating
There wasn't any check of the size passed from userspace before trying to allocate the memory required. This meant that userspace might request more space than allowed, triggering an OOM. Signed-off-by: Sasha Levin <sasha.levin@oracle.com> Signed-off-by: Ian Kent <raven@themaw.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/autofs4/dev-ioctl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/autofs4/dev-ioctl.c b/fs/autofs4/dev-ioctl.c
index 3182c0e68b42..232e03d4780d 100644
--- a/fs/autofs4/dev-ioctl.c
+++ b/fs/autofs4/dev-ioctl.c
@@ -103,6 +103,9 @@ static struct autofs_dev_ioctl *copy_dev_ioctl(struct autofs_dev_ioctl __user *i
if (tmp.size < sizeof(tmp))
return ERR_PTR(-EINVAL);
+ if (tmp.size > (PATH_MAX + sizeof(tmp)))
+ return ERR_PTR(-ENAMETOOLONG);
+
return memdup_user(in, tmp.size);
}