From: Christian Brauner Date: Tue, 30 Oct 2018 22:48:14 +0000 (+0100) Subject: lxccontainer: fix temporary path removal X-Git-Tag: lxc-3.1.0~25^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecce75a68ccbe347ce04a2c7e085dcb10aeb2251;p=thirdparty%2Flxc.git lxccontainer: fix temporary path removal Needed-by: https://github.com/lxc/lxd/issues/5227 Signed-off-by: Christian Brauner --- diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index 6c35ab653..83ff24253 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -4976,6 +4976,7 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source, char template[PATH_MAX], path[PATH_MAX]; pid_t pid, init_pid; struct stat sb; + bool is_dir; int ret = -1, fd = -EBADF; if (!c || !c->lxc_conf) { @@ -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); if (!sret) { SYSERROR("Could not create shmounts temporary dir"); @@ -5089,7 +5091,10 @@ static int do_lxcapi_mount(struct lxc_container *c, const char *source, ret = 0; (void)umount2(template, MNT_DETACH); - (void)unlink(template); + if (is_dir) + (void)rmdir(template); + else + (void)unlink(template); out: if (fd >= 0)