summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Kuznetsov <ext-eugeny.kuznetsov@nokia.com>2010-10-27 22:33:37 (GMT)
committerLinus Torvalds <torvalds@linux-foundation.org>2010-10-28 01:03:09 (GMT)
commitf4a2589feaef0a9b737a3e582b37ee96695bb25f (patch)
treeea5eb5c6f2c1f826893271b861d63272efd6546d
parent32a8cf235e2f192eb002755076994525cdbaa35a (diff)
downloadlinux-fsl-qoriq-f4a2589feaef0a9b737a3e582b37ee96695bb25f.tar.xz
cgroups: add check for strcpy destination string overflow
Function "strcpy" is used without check for maximum allowed source string length and could cause destination string overflow. Check for string length is added before using "strcpy". Function now is return error if source string length is more than a maximum. akpm: presently considered NotABug, but add the check for general future-safeness and robustness. Signed-off-by: Evgeny Kuznetsov <EXT-Eugeny.Kuznetsov@nokia.com> Acked-by: Paul Menage <menage@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--kernel/cgroup.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 3e6517e..5cf3669 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1922,6 +1922,8 @@ static int cgroup_release_agent_write(struct cgroup *cgrp, struct cftype *cft,
const char *buffer)
{
BUILD_BUG_ON(sizeof(cgrp->root->release_agent_path) < PATH_MAX);
+ if (strlen(buffer) >= PATH_MAX)
+ return -EINVAL;
if (!cgroup_lock_live_group(cgrp))
return -ENODEV;
strcpy(cgrp->root->release_agent_path, buffer);