On Tue, Oct 5, 2010 at 12:48 PM, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > On Tue, 5 Oct 2010 12:38:05 +0400 > Evgeny Kuznetsov <EXT-Eugeny.Kuznetsov@xxxxxxxxx> wrote: > >> From: Evgeny Kuznetsov <ext-eugeny.kuznetsov@xxxxxxxxx> >> >> 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. >> >> Signed-off-by: Evgeny Kuznetsov <EXT-Eugeny.Kuznetsov@xxxxxxxxx> >> --- >> kernel/cgroup.c | 2 ++ >> 1 files changed, 2 insertions(+), 0 deletions(-) >> >> diff --git a/kernel/cgroup.c b/kernel/cgroup.c >> index c9483d8..82bbede 100644 >> --- a/kernel/cgroup.c >> +++ b/kernel/cgroup.c >> @@ -1883,6 +1883,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); > > I don't think this can happen, because cftype.max_write_len is > PATH_MAX. Yes, it shouldn't be possible. > > But it's pretty unobvious if this is actually true, and the code is > fragile against future changes. Fair enough - adding the check doesn't hurt anything. Acked-by: Paul Menage <menage@xxxxxxxxxx> _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers