]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
lxccontainer: do_create_container_dir()
authorChristian Brauner <christian.brauner@ubuntu.com>
Sat, 24 Feb 2018 14:29:33 +0000 (15:29 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Thu, 23 Aug 2018 20:28:52 +0000 (22:28 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/lxccontainer.c

index fed66c8e312f28c4115224a345d3e8b17ff15d2d..ac438fa35b86ff491b52ab18607597d7804171e7 100644 (file)
@@ -1128,26 +1128,32 @@ WRAP_API(bool, lxcapi_stop)
 
 static int do_create_container_dir(const char *path, struct lxc_conf *conf)
 {
-       int ret = -1, lasterr;
-       char *p = alloca(strlen(path)+1);
+       int lasterr;
+       size_t len;
+       char *p;
+       int ret = -1;
+
        mode_t mask = umask(0002);
        ret = mkdir(path, 0770);
        lasterr = errno;
        umask(mask);
        errno = lasterr;
        if (ret) {
-               if (errno == EEXIST)
-                       ret = 0;
-               else {
-                       SYSERROR("failed to create container path %s", path);
+               if (errno != EEXIST)
                        return -1;
-               }
+
+               ret = 0;
        }
+
+       len = strlen(path);
+       p = alloca(len + 1);
        strcpy(p, path);
-       if (!lxc_list_empty(&conf->id_map) && chown_mapped_root(p, conf) != 0) {
-               ERROR("Failed to chown container dir");
-               ret = -1;
+       if (!lxc_list_empty(&conf->id_map)) {
+               ret = chown_mapped_root(p, conf);
+               if (ret < 0)
+                       ret = -1;
        }
+
        return ret;
 }