Commit fbdc0039 authored by Pavel Emelyanov's avatar Pavel Emelyanov

zdtm: Relax on-stack args for ns creation

Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent c88d4099
...@@ -339,11 +339,9 @@ int ns_init(int argc, char **argv) ...@@ -339,11 +339,9 @@ int ns_init(int argc, char **argv)
void ns_create(int argc, char **argv) void ns_create(int argc, char **argv)
{ {
pid_t pid; pid_t pid;
char pname[PATH_MAX];
int ret, status; int ret, status;
struct ns_exec_args args; struct ns_exec_args args;
int fd, flags; int flags;
char *val;
args.argc = argc; args.argc = argc;
args.argv = argv; args.argv = argv;
...@@ -357,8 +355,7 @@ void ns_create(int argc, char **argv) ...@@ -357,8 +355,7 @@ void ns_create(int argc, char **argv)
flags = CLONE_NEWPID | CLONE_NEWNS | CLONE_NEWUTS | flags = CLONE_NEWPID | CLONE_NEWNS | CLONE_NEWUTS |
CLONE_NEWNET | CLONE_NEWIPC | SIGCHLD; CLONE_NEWNET | CLONE_NEWIPC | SIGCHLD;
val = getenv("ZDTM_USERNS"); if (getenv("ZDTM_USERNS"))
if (val)
flags |= CLONE_NEWUSER; flags |= CLONE_NEWUSER;
pid = clone(ns_exec, args.stack_ptr, flags, &args); pid = clone(ns_exec, args.stack_ptr, flags, &args);
...@@ -370,6 +367,9 @@ void ns_create(int argc, char **argv) ...@@ -370,6 +367,9 @@ void ns_create(int argc, char **argv)
close(args.status_pipe[1]); close(args.status_pipe[1]);
if (flags & CLONE_NEWUSER) { if (flags & CLONE_NEWUSER) {
char pname[PATH_MAX];
int fd;
snprintf(pname, sizeof(pname), "/proc/%d/uid_map", pid); snprintf(pname, sizeof(pname), "/proc/%d/uid_map", pid);
fd = open(pname, O_WRONLY); fd = open(pname, O_WRONLY);
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