Unverified Commit ecce75a6 by Christian Brauner Committed by Stéphane Graber

lxccontainer: fix temporary path removal

parent 6437f1c1
...@@ -4976,6 +4976,7 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source, ...@@ -4976,6 +4976,7 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source,
char template[PATH_MAX], path[PATH_MAX]; char template[PATH_MAX], path[PATH_MAX];
pid_t pid, init_pid; pid_t pid, init_pid;
struct stat sb; struct stat sb;
bool is_dir;
int ret = -1, fd = -EBADF; int ret = -1, fd = -EBADF;
if (!c || !c->lxc_conf) { if (!c || !c->lxc_conf) {
...@@ -5006,7 +5007,8 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source, ...@@ -5006,7 +5007,8 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source,
} }
} }
if (S_ISDIR(sb.st_mode)) { is_dir = (S_ISDIR(sb.st_mode) != 0);
if (is_dir) {
sret = mkdtemp(template); sret = mkdtemp(template);
if (!sret) { if (!sret) {
SYSERROR("Could not create shmounts temporary dir"); SYSERROR("Could not create shmounts temporary dir");
...@@ -5089,7 +5091,10 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source, ...@@ -5089,7 +5091,10 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source,
ret = 0; ret = 0;
(void)umount2(template, MNT_DETACH); (void)umount2(template, MNT_DETACH);
(void)unlink(template); if (is_dir)
(void)rmdir(template);
else
(void)unlink(template);
out: out:
if (fd >= 0) if (fd >= 0)
......
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