From: Christian Brauner Date: Sun, 27 Jan 2019 01:22:43 +0000 (+0100) Subject: conf: check for successful mount entry parse X-Git-Tag: lxc-3.2.0~172^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d03d85733c2e2d7b57d731f0275aa076187ca13;p=thirdparty%2Flxc.git conf: check for successful mount entry parse 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 --- diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 6b2ebf7ec..d12808350 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -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,