]> git.hungrycats.org Git - linux/commitdiff
autofs4: check dev ioctl size before allocating
authorSasha Levin <sasha.levin@oracle.com>
Tue, 8 Apr 2014 23:04:11 +0000 (16:04 -0700)
committerZefan Li <lizefan@huawei.com>
Fri, 19 Jun 2015 03:40:33 +0000 (11:40 +0800)
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>
[lizf: Backported to 3.4: adjust context]
Signed-off-by: Zefan Li <lizefan@huawei.com>
fs/autofs4/dev-ioctl.c

index fbaa42817389f505fdbdd55c8a09a9604637c09e..ace3eea163f0f17a2dce503bd48838f0282bbb18 100644 (file)
@@ -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);
+
        res = memdup_user(in, tmp.size);
        if (!IS_ERR(res))
                res->size = tmp.size;