Commit aaf901be by Andrey Mazo Committed by Serge Hallyn

Use getmntent_r() for thread-safety

parent dd1d77f9
...@@ -1859,7 +1859,7 @@ static int mount_entry(const char *fsname, const char *target, ...@@ -1859,7 +1859,7 @@ static int mount_entry(const char *fsname, const char *target,
return 0; return 0;
} }
static inline int mount_entry_on_systemfs(struct mntent *mntent) static inline int mount_entry_on_systemfs(const struct mntent *mntent)
{ {
unsigned long mntflags; unsigned long mntflags;
char *mntdata; char *mntdata;
...@@ -1904,7 +1904,7 @@ static inline int mount_entry_on_systemfs(struct mntent *mntent) ...@@ -1904,7 +1904,7 @@ static inline int mount_entry_on_systemfs(struct mntent *mntent)
return ret; return ret;
} }
static int mount_entry_on_absolute_rootfs(struct mntent *mntent, static int mount_entry_on_absolute_rootfs(const struct mntent *mntent,
const struct lxc_rootfs *rootfs, const struct lxc_rootfs *rootfs,
const char *lxc_name) const char *lxc_name)
{ {
...@@ -1990,7 +1990,7 @@ out: ...@@ -1990,7 +1990,7 @@ out:
return ret; return ret;
} }
static int mount_entry_on_relative_rootfs(struct mntent *mntent, static int mount_entry_on_relative_rootfs(const struct mntent *mntent,
const char *rootfs) const char *rootfs)
{ {
char path[MAXPATHLEN]; char path[MAXPATHLEN];
...@@ -2047,26 +2047,27 @@ static int mount_entry_on_relative_rootfs(struct mntent *mntent, ...@@ -2047,26 +2047,27 @@ static int mount_entry_on_relative_rootfs(struct mntent *mntent,
static int mount_file_entries(const struct lxc_rootfs *rootfs, FILE *file, static int mount_file_entries(const struct lxc_rootfs *rootfs, FILE *file,
const char *lxc_name) const char *lxc_name)
{ {
struct mntent *mntent; struct mntent mntent;
char buf[4096];
int ret = -1; int ret = -1;
while ((mntent = getmntent(file))) { while (getmntent_r(file, &mntent, buf, sizeof(buf))) {
if (!rootfs->path) { if (!rootfs->path) {
if (mount_entry_on_systemfs(mntent)) if (mount_entry_on_systemfs(&mntent))
goto out; goto out;
continue; continue;
} }
/* We have a separate root, mounts are relative to it */ /* We have a separate root, mounts are relative to it */
if (mntent->mnt_dir[0] != '/') { if (mntent.mnt_dir[0] != '/') {
if (mount_entry_on_relative_rootfs(mntent, if (mount_entry_on_relative_rootfs(&mntent,
rootfs->mount)) rootfs->mount))
goto out; goto out;
continue; continue;
} }
if (mount_entry_on_absolute_rootfs(mntent, rootfs, lxc_name)) if (mount_entry_on_absolute_rootfs(&mntent, rootfs, lxc_name))
goto out; goto out;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment