mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-07-13 16:59:33 +00:00
coverity: Free bdev in clone_update_rootfs
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com> Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
parent
5079813884
commit
e7de366c67
@ -2498,10 +2498,13 @@ static int clone_update_rootfs(struct clone_update_data *data)
|
|||||||
if (strcmp(bdev->type, "dir") != 0) {
|
if (strcmp(bdev->type, "dir") != 0) {
|
||||||
if (unshare(CLONE_NEWNS) < 0) {
|
if (unshare(CLONE_NEWNS) < 0) {
|
||||||
ERROR("error unsharing mounts");
|
ERROR("error unsharing mounts");
|
||||||
|
bdev_put(bdev);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (bdev->ops->mount(bdev) < 0)
|
if (bdev->ops->mount(bdev) < 0) {
|
||||||
|
bdev_put(bdev);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
} else { // TODO come up with a better way
|
} else { // TODO come up with a better way
|
||||||
if (bdev->dest)
|
if (bdev->dest)
|
||||||
free(bdev->dest);
|
free(bdev->dest);
|
||||||
@ -2528,12 +2531,15 @@ static int clone_update_rootfs(struct clone_update_data *data)
|
|||||||
|
|
||||||
if (run_lxc_hooks(c->name, "clone", conf, c->get_config_path(c), hookargs)) {
|
if (run_lxc_hooks(c->name, "clone", conf, c->get_config_path(c), hookargs)) {
|
||||||
ERROR("Error executing clone hook for %s", c->name);
|
ERROR("Error executing clone hook for %s", c->name);
|
||||||
|
bdev_put(bdev);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(flags & LXC_CLONE_KEEPNAME)) {
|
if (!(flags & LXC_CLONE_KEEPNAME)) {
|
||||||
ret = snprintf(path, MAXPATHLEN, "%s/etc/hostname", bdev->dest);
|
ret = snprintf(path, MAXPATHLEN, "%s/etc/hostname", bdev->dest);
|
||||||
|
bdev_put(bdev);
|
||||||
|
|
||||||
if (ret < 0 || ret >= MAXPATHLEN)
|
if (ret < 0 || ret >= MAXPATHLEN)
|
||||||
return -1;
|
return -1;
|
||||||
if (!file_exists(path))
|
if (!file_exists(path))
|
||||||
@ -2549,6 +2555,9 @@ static int clone_update_rootfs(struct clone_update_data *data)
|
|||||||
if (fclose(fout) < 0)
|
if (fclose(fout) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
bdev_put(bdev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user