From: Serge Hallyn Date: Thu, 2 May 2019 01:17:23 +0000 (-0700) Subject: namespaces: allow a pathname to a nsfd for namespace to share X-Git-Tag: lxc-3.2.0~78^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=39e6fd369d7fbefb7471727e3b58e175e5ea8732;p=thirdparty%2Flxc.git namespaces: allow a pathname to a nsfd for namespace to share Signed-off-by: Serge Hallyn --- diff --git a/src/lxc/confile_utils.c b/src/lxc/confile_utils.c index 5bceb96bd..a43b165ba 100644 --- a/src/lxc/confile_utils.c +++ b/src/lxc/confile_utils.c @@ -859,23 +859,27 @@ static int lxc_container_name_to_pid(const char *lxcname_or_pid, return pid; } -int lxc_inherit_namespace(const char *lxcname_or_pid, const char *lxcpath, +int lxc_inherit_namespace(const char *nsfd_path, const char *lxcpath, const char *namespace) { int fd, pid; char *dup, *lastslash; - lastslash = strrchr(lxcname_or_pid, '/'); + if (nsfd_path[0] == '/') { + return open(nsfd_path, O_RDONLY | O_CLOEXEC); + } + + lastslash = strrchr(nsfd_path, '/'); if (lastslash) { - dup = strdup(lxcname_or_pid); + dup = strdup(nsfd_path); if (!dup) return -1; - dup[lastslash - lxcname_or_pid] = '\0'; + dup[lastslash - nsfd_path] = '\0'; pid = lxc_container_name_to_pid(lastslash + 1, dup); free(dup); } else { - pid = lxc_container_name_to_pid(lxcname_or_pid, lxcpath); + pid = lxc_container_name_to_pid(nsfd_path, lxcpath); } if (pid < 0)