Skip to content

Commit

Permalink
Merge pull request #2392 from haraldh/master
Browse files Browse the repository at this point in the history
Adjust LISTEN_PID for reexec in varlink mode
  • Loading branch information
openshift-merge-robot authored Feb 21, 2019
2 parents 4934bf2 + 3f60dc0 commit fc1b1ff
Showing 1 changed file with 34 additions and 1 deletion.
35 changes: 34 additions & 1 deletion pkg/rootless/rootless_linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <fcntl.h>
#include <sys/wait.h>
#include <string.h>
#include <stdbool.h>

static const char *_max_user_namespaces = "/proc/sys/user/max_user_namespaces";
static const char *_unprivileged_user_namespaces = "/proc/sys/kernel/unprivileged_userns_clone";
Expand Down Expand Up @@ -186,6 +187,18 @@ reexec_in_user_namespace (int ready)
pid_t ppid = getpid ();
char **argv;
char uid[16];
char *listen_fds = NULL;
char *listen_pid = NULL;
bool do_socket_activation = false;

listen_pid = getenv("LISTEN_PID");
listen_fds = getenv("LISTEN_FDS");

if (listen_pid != NULL && listen_fds != NULL) {
if (strtol(listen_pid, NULL, 10) == getpid()) {
do_socket_activation = true;
}
}

sprintf (uid, "%d", geteuid ());

Expand All @@ -197,8 +210,22 @@ reexec_in_user_namespace (int ready)
check_proc_sys_userns_file (_max_user_namespaces);
check_proc_sys_userns_file (_unprivileged_user_namespaces);
}
if (pid)
if (pid) {
if (do_socket_activation) {
long num_fds;
num_fds = strtol(listen_fds, NULL, 10);
if (num_fds != LONG_MIN && num_fds != LONG_MAX) {
long i;
for (i = 0; i < num_fds; i++) {
close(3+i);
}
}
unsetenv("LISTEN_PID");
unsetenv("LISTEN_FDS");
unsetenv("LISTEN_FDNAMES");
}
return pid;
}

argv = get_cmd_line_args (ppid);
if (argv == NULL)
Expand All @@ -207,6 +234,12 @@ reexec_in_user_namespace (int ready)
_exit (EXIT_FAILURE);
}

if (do_socket_activation) {
char s[32];
sprintf(s, "%d", getpid());
setenv("LISTEN_PID", s, true);
}

setenv ("_LIBPOD_USERNS_CONFIGURED", "init", 1);
setenv ("_LIBPOD_ROOTLESS_UID", uid, 1);

Expand Down

0 comments on commit fc1b1ff

Please sign in to comment.