]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
conf: check for successful mount entry parse
authorChristian Brauner <christian.brauner@ubuntu.com>
Sun, 27 Jan 2019 01:22:43 +0000 (02:22 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Sun, 27 Jan 2019 10:46:36 +0000 (11:46 +0100)
Since liblxc is completely in control of the mount entry file we should
only consider a parse successful when EOF is reached.

Closes #2798.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/conf.c

index 6b2ebf7ec6ef7234070e69fc5643f46c61ee1702..d12808350d0496c10d11318f28bfe2cd12f68b4e 100644 (file)
@@ -2336,11 +2336,12 @@ static int mount_file_entries(const struct lxc_conf *conf,
                              const struct lxc_rootfs *rootfs, FILE *file,
                              const char *lxc_name, const char *lxc_path)
 {
-       char buf[4096];
+       char buf[PATH_MAX];
        struct mntent mntent;
-       int ret = -1;
 
        while (getmntent_r(file, &mntent, buf, sizeof(buf))) {
+               int ret;
+
                if (!rootfs->path)
                        ret = mount_entry_on_systemfs(&mntent);
                else if (mntent.mnt_dir[0] != '/')
@@ -2348,14 +2349,17 @@ static int mount_file_entries(const struct lxc_conf *conf,
                                                             lxc_name, lxc_path);
                else
                        ret = mount_entry_on_absolute_rootfs(&mntent, rootfs,
-                                                            lxc_name, lxc_path);
+                                                            lxc_name, lxc_path);
                if (ret < 0)
                        return -1;
        }
-       ret = 0;
 
-       INFO("Finished setting up mounts");
-       return ret;
+       if (!feof(file) || ferror(file)) {
+               ERROR("Failed to parse mount entries");
+               return -1;
+       }
+
+       return 0;
 }
 
 static int setup_mount(const struct lxc_conf *conf,