mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-16 01:52:34 +00:00
Use getmntent_r() for thread-safety
Signed-off-by: Andrey Mazo <mazo@telum.ru> Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
parent
dd1d77f91b
commit
aaf901be6b
@ -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)
|
|||||||
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:
|
|||||||
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,
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user