diff options
author | Sasha Levin <sasha.levin@oracle.com> | 2014-04-08 16:04:11 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-08 16:48:51 -0700 |
commit | e53d77eb8bb616e903e34cc7a918401bee3b5149 (patch) | |
tree | bdab4a168e8afc00590dcec684205c656ae2e81e /fs | |
parent | 0bf1457f0cfca7bc026a82323ad34bcf58ad035d (diff) | |
download | op-kernel-dev-e53d77eb8bb616e903e34cc7a918401bee3b5149.zip op-kernel-dev-e53d77eb8bb616e903e34cc7a918401bee3b5149.tar.gz |
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/autofs4/dev-ioctl.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/autofs4/dev-ioctl.c b/fs/autofs4/dev-ioctl.c index 3182c0e..232e03d 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); } |