cgroups: save space for the terminator
PATCH 1/1 cgroups: save space for the terminator
The original code didn't leave enough space for a NULL terminator. These strings are copied with strcpy() into fixed length buffers in cgroup_root_from_opts().
kernel/cgroup.c +2 -1
@@ -1102,7 +1102,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)if (opts->release_agent)return -EINVAL ; opts->release_agent -kstrndup (token +14 ,PATH_MAX ,GFP_KERNEL ); +kstrndup (token +14 ,PATH_MAX -1 ,GFP_KERNEL );if (!opts->release_agent)return -ENOMEM ; }else if (!strncmp (token,"name=" ,5 )) {
@@ -1123,7 +1123,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)if (opts->name)return -EINVAL ; opts->name =kstrndup (name, -MAX_CGROUP_ROOT_NAMELEN , +MAX_CGROUP_ROOT_NAMELEN -1 ,GFP_KERNEL );if (!opts->name)return -ENOMEM ;
Quoted 5 lines · Dan Carpenter
The original code didn't leave enough space for a NULL terminator. These strings are copied with
strcpy()into fixed length buffers incgroup_root_from_opts().Signed-off-by Dan Carpenter <[email protected]>
Hmm, yes - the fact that kstrndup() allocs len+1 probably threw off the author of these original lines. Thanks for spotting this!
Quoted 26 lines
kernel/cgroup.c +2
-2@@ -1102,7 +1102,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)if (opts->release_agent)return -EINVAL ; opts->release_agent = -kstrndup (token +14 ,PATH_MAX ,GFP_KERNEL ); +kstrndup (token +14 ,PATH_MAX -1 ,GFP_KERNEL );if (!opts->release_agent)return -ENOMEM ; }else if (!strncmp (token,"name=" ,5 )) {@@ -1123,7 +1123,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)if (opts->name)return -EINVAL ; opts->name =kstrndup (name, -MAX_CGROUP_ROOT_NAMELEN , +MAX_CGROUP_ROOT_NAMELEN -1 ,GFP_KERNEL );if (!opts->name)return -ENOMEM ;_______________________________________________
Containers mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers
Quoted 5 lines · Dan Carpenter
The original code didn't leave enough space for a NULL terminator. These strings are copied with
strcpy()into fixed length buffers incgroup_root_from_opts().Signed-off-by Dan Carpenter <[email protected]>
Hmm, yes - the fact that kstrndup() allocs len+1 probably threw off the author of these original lines. Thanks for spotting this!
Quoted 26 lines
kernel/cgroup.c +2
-2@@ -1102,7 +1102,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)if (opts->release_agent)return -EINVAL ; opts->release_agent = -kstrndup (token +14 ,PATH_MAX ,GFP_KERNEL ); +kstrndup (token +14 ,PATH_MAX -1 ,GFP_KERNEL );if (!opts->release_agent)return -ENOMEM ; }else if (!strncmp (token,"name=" ,5 )) {@@ -1123,7 +1123,7 @@ static int parse_cgroupfs_options(char *data, struct cgroup_sb_opts *opts)if (opts->name)return -EINVAL ; opts->name =kstrndup (name, -MAX_CGROUP_ROOT_NAMELEN , +MAX_CGROUP_ROOT_NAMELEN -1 ,GFP_KERNEL );if (!opts->name)return -ENOMEM ;_______________________________________________
Containers mailing list Containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
https://lists.linux-foundation.org/mailman/listinfo/containers
Quoted 6 lines · On Sat, 10 Jul 2010 12:54:29 +0200 Dan Carpenter <[email protected]> wrote:
The original code didn't leave enough space for a NULL terminator. These strings are copied with
strcpy()into fixed length buffers incgroup_root_from_opts().Signed-off-by Dan Carpenter <[email protected]>
Nice!,
Quoted 6 lines · On Sat, 10 Jul 2010 12:54:29 +0200 Dan Carpenter…
The original code didn't leave enough space for a NULL terminator. These strings are copied with
strcpy()into fixed length buffers incgroup_root_from_opts().Signed-off-by Dan Carpenter <[email protected]>
Nice!,