Commit b8df05e6 authored by Tycho Andersen's avatar Tycho Andersen Committed by Pavel Emelyanov

cgroup: don't leak old paths when rewriting

Remember to set tmp2 when allocating the new path so that we can free it
later. Also, don't leak tmp2 in the error case.
Signed-off-by: 's avatarTycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent c4cf5f0b
...@@ -1604,6 +1604,7 @@ static int rewrite_cgsets(CgroupEntry *cge, char **controllers, int n_controller ...@@ -1604,6 +1604,7 @@ static int rewrite_cgsets(CgroupEntry *cge, char **controllers, int n_controller
*/ */
if (!set_from) { if (!set_from) {
set_from = true; set_from = true;
tmp2 = *from;
/* -1 because cgns_prefix includes leading / */ /* -1 because cgns_prefix includes leading / */
*from = xsprintf("%s%s", to, (*from) + cg->cgns_prefix - 1); *from = xsprintf("%s%s", to, (*from) + cg->cgns_prefix - 1);
} }
...@@ -1617,15 +1618,15 @@ static int rewrite_cgsets(CgroupEntry *cge, char **controllers, int n_controller ...@@ -1617,15 +1618,15 @@ static int rewrite_cgsets(CgroupEntry *cge, char **controllers, int n_controller
strlen(*from) + 1); strlen(*from) + 1);
if (!set_from) { if (!set_from) {
set_from = true; set_from = true;
tmp2 = *from;
*from = xstrdup(to); *from = xstrdup(to);
} }
} }
if (tmp2) { if (tmp2) {
xfree(tmp2);
if (!*from) if (!*from)
return -1; return -1;
xfree(tmp2);
} }
if (!cg->path) if (!cg->path)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment