In the best case we'll get errors about failing to remove it.  In the
worst case we'll be trying to delete the original container's rootfs.

Reported-by: zoolook <nbensa+lxcus...@gmail.com>
Signed-off-by: Serge Hallyn <serge.hal...@ubuntu.com>
---
 src/lxc/lxccontainer.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index b6d5b2f..677fa56 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -1866,7 +1866,7 @@ struct lxc_container *lxcapi_clone(struct lxc_container 
*c, const char *newname,
 {
        struct lxc_container *c2 = NULL;
        char newpath[MAXPATHLEN];
-       int ret;
+       int ret, storage_copied = 0;
        const char *n, *l;
        FILE *fout;
 
@@ -1948,6 +1948,10 @@ struct lxc_container *lxcapi_clone(struct lxc_container 
*c, const char *newname,
        if (ret < 0)
                goto out;
 
+       // We've now successfully created c2's storage, so clear it out if we
+       // fail after this
+       storage_copied = 1;
+
        if (!c2->save_config(c2, NULL))
                goto out;
 
@@ -1961,6 +1965,8 @@ struct lxc_container *lxcapi_clone(struct lxc_container 
*c, const char *newname,
 out:
        container_mem_unlock(c);
        if (c2) {
+               if (!storage_copied)
+                       c2->lxc_conf->rootfs.path = NULL;
                c2->destroy(c2);
                lxc_container_put(c2);
        }
-- 
1.8.1.2


------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to