summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSasha Levin <sasha.levin@oracle.com>2014-04-08 16:04:11 -0700
committerBen Hutchings <ben@decadent.org.uk>2015-05-09 23:16:19 +0100
commitcc9247b6d794b82e7e8bc0cb7a936181015c8e90 (patch)
treebbe9a68ac33fb21fabf33fa7232f25b6f9ad779b /fs
parent915f4f86ddc49484217a0e0e16e8a25e3c1ec856 (diff)
downloadlinux-stable-cc9247b6d794b82e7e8bc0cb7a936181015c8e90.tar.gz
linux-stable-cc9247b6d794b82e7e8bc0cb7a936181015c8e90.tar.bz2
linux-stable-cc9247b6d794b82e7e8bc0cb7a936181015c8e90.zip
autofs4: check dev ioctl size before allocating
commit e53d77eb8bb616e903e34cc7a918401bee3b5149 upstream. 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> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'fs')
-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 de542716245e..868101ccbefa 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);
}