bump runc v1.0.0-rc8-32-gf4982d86
full diff: https://github.com/opencontainers/runc/compare/v1.0.0-rc8...f4982d86f7fde0b6f953cc62ccc4022c519a10a9 possibly relevant changes included: - opencontainers/runc#2074 Update dependency libseccomp-golang - fixes https://nvd.nist.gov/vuln/detail/CVE-2017-18367 - opencontainers/runc#2065 Fix cgroup hugetlb size prefix for kB - opencontainers/runc#2042 libcontainer: intelrdt: add missing destroy handler in defer func - opencontainers/runc#2042 main: not reopen /dev/stderr - opencontainers/runc#2038 `r.destroy` can defer exec in `runner.run` method - opencontainers/runc#2035 specconv: always set "type: bind" in case of MS_BIND - opencontainers/runc#2035 Move systemd.Manager initialization into a function in that module - opencontainers/runc#2034 Support for logging from children processes Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
		@@ -20,7 +20,7 @@ github.com/gogo/protobuf v1.2.1
 | 
				
			|||||||
github.com/gogo/googleapis v1.2.0
 | 
					github.com/gogo/googleapis v1.2.0
 | 
				
			||||||
github.com/golang/protobuf v1.2.0
 | 
					github.com/golang/protobuf v1.2.0
 | 
				
			||||||
github.com/opencontainers/runtime-spec 29686dbc5559d93fb1ef402eeda3e35c38d75af4 # v1.0.1-59-g29686db
 | 
					github.com/opencontainers/runtime-spec 29686dbc5559d93fb1ef402eeda3e35c38d75af4 # v1.0.1-59-g29686db
 | 
				
			||||||
github.com/opencontainers/runc v1.0.0-rc8
 | 
					github.com/opencontainers/runc f4982d86f7fde0b6f953cc62ccc4022c519a10a9 # v1.0.0-rc8-32-gf4982d86
 | 
				
			||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1
 | 
					github.com/konsorten/go-windows-terminal-sequences v1.0.1
 | 
				
			||||||
github.com/sirupsen/logrus v1.4.1
 | 
					github.com/sirupsen/logrus v1.4.1
 | 
				
			||||||
github.com/urfave/cli 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c
 | 
					github.com/urfave/cli 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										85
									
								
								vendor/github.com/opencontainers/runc/libcontainer/nsenter/nsexec.c
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								vendor/github.com/opencontainers/runc/libcontainer/nsenter/nsexec.c
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -37,9 +37,6 @@ enum sync_t {
 | 
				
			|||||||
	SYNC_RECVPID_ACK = 0x43,	/* PID was correctly received by parent. */
 | 
						SYNC_RECVPID_ACK = 0x43,	/* PID was correctly received by parent. */
 | 
				
			||||||
	SYNC_GRANDCHILD = 0x44,	/* The grandchild is ready to run. */
 | 
						SYNC_GRANDCHILD = 0x44,	/* The grandchild is ready to run. */
 | 
				
			||||||
	SYNC_CHILD_READY = 0x45,	/* The child or grandchild is ready to return. */
 | 
						SYNC_CHILD_READY = 0x45,	/* The child or grandchild is ready to return. */
 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* XXX: This doesn't help with segfaults and other such issues. */
 | 
					 | 
				
			||||||
	SYNC_ERR = 0xFF,	/* Fatal error, no turning back. The error code follows. */
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
@@ -95,6 +92,15 @@ struct nlconfig_t {
 | 
				
			|||||||
	size_t gidmappath_len;
 | 
						size_t gidmappath_len;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PANIC   "panic"
 | 
				
			||||||
 | 
					#define FATAL   "fatal"
 | 
				
			||||||
 | 
					#define ERROR   "error"
 | 
				
			||||||
 | 
					#define WARNING "warning"
 | 
				
			||||||
 | 
					#define INFO    "info"
 | 
				
			||||||
 | 
					#define DEBUG   "debug"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int logfd = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * List of netlink message types sent to us as part of bootstrapping the init.
 | 
					 * List of netlink message types sent to us as part of bootstrapping the init.
 | 
				
			||||||
 * These constants are defined in libcontainer/message_linux.go.
 | 
					 * These constants are defined in libcontainer/message_linux.go.
 | 
				
			||||||
@@ -131,22 +137,34 @@ int setns(int fd, int nstype)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void write_log_with_info(const char *level, const char *function, int line, const char *format, ...)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char message[1024] = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						va_list args;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (logfd < 0 || level == NULL)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						va_start(args, format);
 | 
				
			||||||
 | 
						if (vsnprintf(message, sizeof(message), format, args) < 0)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						va_end(args);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (dprintf(logfd, "{\"level\":\"%s\", \"msg\": \"%s:%d %s\"}\n", level, function, line, message) < 0)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define write_log(level, fmt, ...) \
 | 
				
			||||||
 | 
						write_log_with_info((level), __FUNCTION__, __LINE__, (fmt), ##__VA_ARGS__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* XXX: This is ugly. */
 | 
					/* XXX: This is ugly. */
 | 
				
			||||||
static int syncfd = -1;
 | 
					static int syncfd = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* TODO(cyphar): Fix this so it correctly deals with syncT. */
 | 
					 | 
				
			||||||
#define bail(fmt, ...)                                       \
 | 
					#define bail(fmt, ...)                                       \
 | 
				
			||||||
	do {                                                       \
 | 
						do {                                                       \
 | 
				
			||||||
		int ret = __COUNTER__ + 1;					\
 | 
							write_log(FATAL, "nsenter: " fmt ": %m", ##__VA_ARGS__); \
 | 
				
			||||||
		fprintf(stderr, "nsenter: " fmt ": %m\n", ##__VA_ARGS__);	\
 | 
							exit(1);                                                 \
 | 
				
			||||||
		if (syncfd >= 0) {						\
 | 
					 | 
				
			||||||
			enum sync_t s = SYNC_ERR;				\
 | 
					 | 
				
			||||||
			if (write(syncfd, &s, sizeof(s)) != sizeof(s))		\
 | 
					 | 
				
			||||||
				fprintf(stderr, "nsenter: failed: write(s)");	\
 | 
					 | 
				
			||||||
			if (write(syncfd, &ret, sizeof(ret)) != sizeof(ret))	\
 | 
					 | 
				
			||||||
				fprintf(stderr, "nsenter: failed: write(ret)");	\
 | 
					 | 
				
			||||||
		}								\
 | 
					 | 
				
			||||||
		exit(ret);							\
 | 
					 | 
				
			||||||
	} while(0)
 | 
						} while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int write_file(char *data, size_t data_len, char *pathfmt, ...)
 | 
					static int write_file(char *data, size_t data_len, char *pathfmt, ...)
 | 
				
			||||||
@@ -352,6 +370,23 @@ static int initpipe(void)
 | 
				
			|||||||
	return pipenum;
 | 
						return pipenum;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void setup_logpipe(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char *logpipe, *endptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						logpipe = getenv("_LIBCONTAINER_LOGPIPE");
 | 
				
			||||||
 | 
						if (logpipe == NULL || *logpipe == '\0') {
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						logfd = strtol(logpipe, &endptr, 10);
 | 
				
			||||||
 | 
						if (logpipe == endptr || *endptr != '\0') {
 | 
				
			||||||
 | 
							fprintf(stderr, "unable to parse _LIBCONTAINER_LOGPIPE, value: %s\n", logpipe);
 | 
				
			||||||
 | 
							/* It is too early to use bail */
 | 
				
			||||||
 | 
							exit(1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Returns the clone(2) flag for a namespace, given the name of a namespace. */
 | 
					/* Returns the clone(2) flag for a namespace, given the name of a namespace. */
 | 
				
			||||||
static int nsflag(char *name)
 | 
					static int nsflag(char *name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -544,6 +579,12 @@ void nsexec(void)
 | 
				
			|||||||
	int sync_child_pipe[2], sync_grandchild_pipe[2];
 | 
						int sync_child_pipe[2], sync_grandchild_pipe[2];
 | 
				
			||||||
	struct nlconfig_t config = { 0 };
 | 
						struct nlconfig_t config = { 0 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * Setup a pipe to send logs to the parent. This should happen
 | 
				
			||||||
 | 
						 * first, because bail will use that pipe.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						setup_logpipe();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * If we don't have an init pipe, just return to the go routine.
 | 
						 * If we don't have an init pipe, just return to the go routine.
 | 
				
			||||||
	 * We'll only get an init pipe for start or exec.
 | 
						 * We'll only get an init pipe for start or exec.
 | 
				
			||||||
@@ -560,6 +601,8 @@ void nsexec(void)
 | 
				
			|||||||
	if (ensure_cloned_binary() < 0)
 | 
						if (ensure_cloned_binary() < 0)
 | 
				
			||||||
		bail("could not ensure we are a cloned binary");
 | 
							bail("could not ensure we are a cloned binary");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						write_log(DEBUG, "nsexec started");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Parse all of the netlink configuration. */
 | 
						/* Parse all of the netlink configuration. */
 | 
				
			||||||
	nl_parse(pipenum, &config);
 | 
						nl_parse(pipenum, &config);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -676,7 +719,6 @@ void nsexec(void)
 | 
				
			|||||||
			 */
 | 
								 */
 | 
				
			||||||
			while (!ready) {
 | 
								while (!ready) {
 | 
				
			||||||
				enum sync_t s;
 | 
									enum sync_t s;
 | 
				
			||||||
				int ret;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
				syncfd = sync_child_pipe[1];
 | 
									syncfd = sync_child_pipe[1];
 | 
				
			||||||
				close(sync_child_pipe[0]);
 | 
									close(sync_child_pipe[0]);
 | 
				
			||||||
@@ -685,12 +727,6 @@ void nsexec(void)
 | 
				
			|||||||
					bail("failed to sync with child: next state");
 | 
										bail("failed to sync with child: next state");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				switch (s) {
 | 
									switch (s) {
 | 
				
			||||||
				case SYNC_ERR:
 | 
					 | 
				
			||||||
					/* We have to mirror the error code of the child. */
 | 
					 | 
				
			||||||
					if (read(syncfd, &ret, sizeof(ret)) != sizeof(ret))
 | 
					 | 
				
			||||||
						bail("failed to sync with child: read(error code)");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					exit(ret);
 | 
					 | 
				
			||||||
				case SYNC_USERMAP_PLS:
 | 
									case SYNC_USERMAP_PLS:
 | 
				
			||||||
					/*
 | 
										/*
 | 
				
			||||||
					 * Enable setgroups(2) if we've been asked to. But we also
 | 
										 * Enable setgroups(2) if we've been asked to. But we also
 | 
				
			||||||
@@ -759,7 +795,6 @@ void nsexec(void)
 | 
				
			|||||||
			ready = false;
 | 
								ready = false;
 | 
				
			||||||
			while (!ready) {
 | 
								while (!ready) {
 | 
				
			||||||
				enum sync_t s;
 | 
									enum sync_t s;
 | 
				
			||||||
				int ret;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
				syncfd = sync_grandchild_pipe[1];
 | 
									syncfd = sync_grandchild_pipe[1];
 | 
				
			||||||
				close(sync_grandchild_pipe[0]);
 | 
									close(sync_grandchild_pipe[0]);
 | 
				
			||||||
@@ -774,12 +809,6 @@ void nsexec(void)
 | 
				
			|||||||
					bail("failed to sync with child: next state");
 | 
										bail("failed to sync with child: next state");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				switch (s) {
 | 
									switch (s) {
 | 
				
			||||||
				case SYNC_ERR:
 | 
					 | 
				
			||||||
					/* We have to mirror the error code of the child. */
 | 
					 | 
				
			||||||
					if (read(syncfd, &ret, sizeof(ret)) != sizeof(ret))
 | 
					 | 
				
			||||||
						bail("failed to sync with child: read(error code)");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					exit(ret);
 | 
					 | 
				
			||||||
				case SYNC_CHILD_READY:
 | 
									case SYNC_CHILD_READY:
 | 
				
			||||||
					ready = true;
 | 
										ready = true;
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								vendor/github.com/opencontainers/runc/vendor.conf
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/opencontainers/runc/vendor.conf
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -6,8 +6,8 @@ github.com/opencontainers/runtime-spec 29686dbc5559d93fb1ef402eeda3e35c38d75af4
 | 
				
			|||||||
github.com/checkpoint-restore/go-criu v3.11
 | 
					github.com/checkpoint-restore/go-criu v3.11
 | 
				
			||||||
github.com/mrunalp/fileutils ed869b029674c0e9ce4c0dfa781405c2d9946d08
 | 
					github.com/mrunalp/fileutils ed869b029674c0e9ce4c0dfa781405c2d9946d08
 | 
				
			||||||
github.com/opencontainers/selinux v1.2.2
 | 
					github.com/opencontainers/selinux v1.2.2
 | 
				
			||||||
github.com/seccomp/libseccomp-golang 84e90a91acea0f4e51e62bc1a75de18b1fc0790f
 | 
					github.com/seccomp/libseccomp-golang v0.9.1
 | 
				
			||||||
github.com/sirupsen/logrus a3f95b5c423586578a4e099b11a46c2479628cac
 | 
					github.com/sirupsen/logrus 8bdbc7bcc01dcbb8ec23dc8a28e332258d25251f
 | 
				
			||||||
github.com/syndtr/gocapability db04d3cc01c8b54962a58ec7e491717d06cfcc16
 | 
					github.com/syndtr/gocapability db04d3cc01c8b54962a58ec7e491717d06cfcc16
 | 
				
			||||||
github.com/vishvananda/netlink 1e2e08e8a2dcdacaae3f14ac44c5cfa31361f270
 | 
					github.com/vishvananda/netlink 1e2e08e8a2dcdacaae3f14ac44c5cfa31361f270
 | 
				
			||||||
# systemd integration.
 | 
					# systemd integration.
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user