From: 2xsec Date: Fri, 6 Jul 2018 16:20:53 +0000 (+0900) Subject: tools: lxc-unshare: replace converting standard identifiers of namespaces to api X-Git-Tag: lxc-3.1.0~216^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2453%2Fhead;p=thirdparty%2Flxc.git tools: lxc-unshare: replace converting standard identifiers of namespaces to api Signed-off-by: 2xsec --- diff --git a/src/lxc/tools/lxc_unshare.c b/src/lxc/tools/lxc_unshare.c index b9745ef0e..669186ec1 100644 --- a/src/lxc/tools/lxc_unshare.c +++ b/src/lxc/tools/lxc_unshare.c @@ -244,8 +244,7 @@ static int write_id_mapping(pid_t pid, const char *buf, size_t buf_size) int main(int argc, char *argv[]) { - char *del; - char **it, **args; + char **args; int opt; int ret; char *namespaces = NULL; @@ -308,31 +307,9 @@ int main(int argc, char *argv[]) if (ret) exit(EXIT_FAILURE); - /* The identifiers for namespaces used with lxc-unshare as given on the - * manpage do not align with the standard identifiers. This affects - * network, mount, and uts namespaces. The standard identifiers are: - * "mnt", "uts", and "net" whereas lxc-unshare uses "MOUNT", "UTSNAME", - * and "NETWORK". So let's use some cheap memmove()s to replace them by - * their standard identifiers. Let's illustrate this with an example: - * Assume the string: - * - * "IPC|MOUNT|PID" - * - * then we memmove() - * - * dest: del + 1 == OUNT|PID - * src: del + 3 == NT|PID - */ - if (!namespaces) + if (lxc_namespace_2_std_identifiers(namespaces) < 0) usage(argv[0]); - while ((del = strstr(namespaces, "MOUNT"))) - memmove(del + 1, del + 3, strlen(del) - 2); - - for (it = (char *[]){"NETWORK", "UTSNAME", NULL}; it && *it; it++) - while ((del = strstr(namespaces, *it))) - memmove(del + 3, del + 7, strlen(del) - 6); - ret = lxc_fill_namespace_flags(namespaces, &flags); if (ret) usage(argv[0]);