cgfs: fix invalid free()

And let's be on the safe side by NULLing free()ed variables. Signed-off-by: 's avatarChristian Brauner <christian.brauner@canonical.com>
parent ca1faa68
...@@ -632,10 +632,10 @@ static struct cgroup_meta_data *lxc_cgroup_put_meta(struct cgroup_meta_data *met ...@@ -632,10 +632,10 @@ static struct cgroup_meta_data *lxc_cgroup_put_meta(struct cgroup_meta_data *met
if (--meta_data->ref > 0) if (--meta_data->ref > 0)
return meta_data; return meta_data;
lxc_free_array((void **)meta_data->mount_points, (lxc_free_fn)lxc_cgroup_mount_point_free); lxc_free_array((void **)meta_data->mount_points, (lxc_free_fn)lxc_cgroup_mount_point_free);
if (meta_data->hierarchies) { if (meta_data->hierarchies)
for (i = 0; i <= meta_data->maximum_hierarchy; i++) for (i = 0; i <= meta_data->maximum_hierarchy; i++)
lxc_cgroup_hierarchy_free(meta_data->hierarchies[i]); if (meta_data->hierarchies[i])
} lxc_cgroup_hierarchy_free(meta_data->hierarchies[i]);
free(meta_data->hierarchies); free(meta_data->hierarchies);
free(meta_data); free(meta_data);
return NULL; return NULL;
...@@ -1798,9 +1798,16 @@ static void lxc_cgroup_hierarchy_free(struct cgroup_hierarchy *h) ...@@ -1798,9 +1798,16 @@ static void lxc_cgroup_hierarchy_free(struct cgroup_hierarchy *h)
{ {
if (!h) if (!h)
return; return;
lxc_free_array((void **)h->subsystems, free); if (h->subsystems) {
free(h->all_mount_points); lxc_free_array((void **)h->subsystems, free);
h->subsystems = NULL;
}
if (h->all_mount_points) {
free(h->all_mount_points);
h->all_mount_points = NULL;
}
free(h); free(h);
h = NULL;
} }
static bool is_valid_cgroup(const char *name) static bool is_valid_cgroup(const char *name)
......
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