diff --git a/config.c b/config.c
index 1174eaa..6fc840c 100644
--- a/config.c
+++ b/config.c
@@ -99,8 +99,8 @@
 {
 	struct config *config;
 	size_t size, len;
+	ssize_t rc;
 	char *buf;
-	int rc;
 
 	size = 4096;
 	len = 0;
diff --git a/console-client.c b/console-client.c
index 13bd20d..c63677a 100644
--- a/console-client.c
+++ b/console-client.c
@@ -156,7 +156,8 @@
 static int process_console(struct console_client *client)
 {
 	uint8_t buf[4096];
-	int len, rc;
+	ssize_t len;
+	int rc;
 
 	len = read(client->console_sd, buf, sizeof(buf));
 	if (len < 0) {
diff --git a/console-server.c b/console-server.c
index 32e164c..02219cf 100644
--- a/console-server.c
+++ b/console-server.c
@@ -56,10 +56,10 @@
 	struct ringbuffer *rb;
 
 	struct handler **handlers;
-	int n_handlers;
+	long n_handlers;
 
 	struct poller **pollers;
-	int n_pollers;
+	long n_pollers;
 
 	struct pollfd *pollfds;
 	struct sd_bus *bus;
@@ -461,7 +461,7 @@
 	console->n_handlers = &__stop_handlers - &__start_handlers;
 	console->handlers = &__start_handlers;
 
-	printf("%d handler%s\n", console->n_handlers,
+	printf("%ld handler%s\n", console->n_handlers,
 	       console->n_handlers == 1 ? "" : "s");
 
 	for (i = 0; i < console->n_handlers; i++) {
@@ -524,7 +524,7 @@
 				       int events, void *data)
 {
 	struct poller *poller;
-	int n;
+	long n;
 
 	poller = malloc(sizeof(*poller));
 	poller->remove = false;
@@ -552,7 +552,7 @@
 	       sizeof(*console->pollfds) * MAX_INTERNAL_POLLFD);
 
 	console->pollfds[n].fd = fd;
-	console->pollfds[n].events = events;
+	console->pollfds[n].events = (short)(events & 0x7fff);
 
 	return poller;
 }
@@ -601,7 +601,7 @@
 		if (console->pollers[i] == poller)
 			break;
 
-	console->pollfds[i].events = events;
+	console->pollfds[i].events = (short)(events & 0x7fff);
 }
 
 void console_poller_set_timeout(struct console *console __attribute__((unused)),
@@ -617,7 +617,7 @@
 	timeradd(&now, tv, &poller->timeout);
 }
 
-static int get_poll_timeout(struct console *console, struct timeval *cur_time)
+static long get_poll_timeout(struct console *console, struct timeval *cur_time)
 {
 	struct timeval *earliest, interval;
 	struct poller *poller;
@@ -729,11 +729,10 @@
 
 int run_console(struct console *console)
 {
-	sighandler_t sighandler_save;
+	sighandler_t sighandler_save = signal(SIGINT, sighandler);
 	struct timeval tv;
-	int rc, timeout;
-
-	sighandler_save = signal(SIGINT, sighandler);
+	long timeout;
+	ssize_t rc;
 
 	rc = 0;
 
@@ -756,7 +755,8 @@
 		timeout = get_poll_timeout(console, &tv);
 
 		rc = poll(console->pollfds,
-			  console->n_pollers + MAX_INTERNAL_POLLFD, timeout);
+			  console->n_pollers + MAX_INTERNAL_POLLFD,
+			  (int)timeout);
 
 		if (rc < 0) {
 			if (errno == EINTR) {
diff --git a/console-socket.c b/console-socket.c
index 461f151..7785688 100644
--- a/console-socket.c
+++ b/console-socket.c
@@ -17,11 +17,13 @@
 #include "console-server.h"
 
 #include <errno.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <sys/types.h>
+#include <unistd.h>
 
 #define CONSOLE_SOCKET_PREFIX "obmc-console"
 
@@ -57,10 +59,14 @@
 				     size_t addrlen, socket_path_t path)
 {
 	const char *src = (const char *)addr;
-	const size_t len = addrlen - sizeof(addr->sun_family) - 1;
+	size_t len;
 
+	if (addrlen > SSIZE_MAX)
+		return -EINVAL;
+
+	len = addrlen - sizeof(addr->sun_family) - 1;
 	memcpy(path, src + sizeof(addr->sun_family) + 1, len);
 	path[len] = '\0';
 
-	return len; /* strlen() style */
+	return (ssize_t)len; /* strlen() style */
 }
diff --git a/ringbuffer.c b/ringbuffer.c
index 996dc49..5c485fc 100644
--- a/ringbuffer.c
+++ b/ringbuffer.c
@@ -125,7 +125,7 @@
 					    size_t len)
 {
 	enum ringbuffer_poll_ret prc;
-	int force_len;
+	size_t force_len;
 
 	if (ringbuffer_space(rbc) >= len)
 		return 0;
diff --git a/socket-handler.c b/socket-handler.c
index b10615b..79e1641 100644
--- a/socket-handler.c
+++ b/socket-handler.c
@@ -19,6 +19,7 @@
 #include <assert.h>
 #include <err.h>
 #include <errno.h>
+#include <limits.h>
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -112,9 +113,13 @@
 static ssize_t send_all(struct client *client, void *buf, size_t len,
 			bool block)
 {
-	int fd, rc, flags;
+	int fd, flags;
+	ssize_t rc;
 	size_t pos;
 
+	if (len > SSIZE_MAX)
+		return -EINVAL;
+
 	fd = client->fd;
 
 	flags = MSG_NOSIGNAL;
@@ -139,7 +144,7 @@
 			return -1;
 	}
 
-	return pos;
+	return (ssize_t)pos;
 }
 
 /* Drain the queue to the socket and update the queue buffer. If force_len is
@@ -189,7 +194,8 @@
 						       size_t force_len)
 {
 	struct client *client = arg;
-	int rc, len;
+	size_t len;
+	int rc;
 
 	len = ringbuffer_len(client->rbc);
 	if (!force_len && (len < SOCKET_HANDLER_PKT_SIZE)) {
@@ -238,7 +244,7 @@
 	struct socket_handler *sh = to_socket_handler(handler);
 	struct client *client = data;
 	uint8_t buf[4096];
-	int rc;
+	ssize_t rc;
 
 	if (events & POLLIN) {
 		rc = recv(client->fd, buf, sizeof(buf), MSG_DONTWAIT);
diff --git a/test/ringbuffer-test-utils.c b/test/ringbuffer-test-utils.c
index 9172648..56e37ee 100644
--- a/test/ringbuffer-test-utils.c
+++ b/test/ringbuffer-test-utils.c
@@ -5,7 +5,7 @@
 	bool force_only;
 	int count;
 	uint8_t *data;
-	int len;
+	size_t len;
 };
 
 void ringbuffer_test_context_init(struct rb_test_ctx *ctx)
diff --git a/test/test-client-escape.c b/test/test-client-escape.c
index d7a9957..b818889 100644
--- a/test/test-client-escape.c
+++ b/test/test-client-escape.c
@@ -15,9 +15,13 @@
  */
 
 #include <assert.h>
+#include <errno.h>
+#include <limits.h>
 #include <stdint.h>
 #include <stdio.h>
+#include <unistd.h>
 
+static ssize_t __read(int fd, void *buf, size_t len);
 #define read __read
 #include "config.c"
 #include "console-socket.c"
@@ -165,12 +169,17 @@
 	return 0;
 }
 
-ssize_t __read(int fd, void *buf, size_t len)
+static ssize_t __read(int fd, void *buf, size_t len)
 {
 	struct test_ctx *ctx = &ctxs[fd];
 	const char *inbuf;
 	size_t inlen;
 
+	if (len > SSIZE_MAX) {
+		errno = EINVAL;
+		return -1;
+	}
+
 	if (ctx->cur_in >= ctx->test->n_in)
 		return 0;
 
@@ -179,10 +188,10 @@
 	assert(inlen <= len);
 	memcpy(buf, inbuf, inlen);
 	ctx->cur_in++;
-	return inlen;
+	return (ssize_t)inlen;
 }
 
-void run_one_test(int idx, struct test *test, struct test_ctx *ctx)
+void run_one_test(size_t idx, struct test *test, struct test_ctx *ctx)
 {
 	size_t exp_out_len;
 	int rc;
@@ -190,8 +199,9 @@
 	/* we store the index into the context array as a FD, so we
 	 * can refer to it through the read & write callbacks.
 	 */
-	ctx->client.console_sd = idx;
-	ctx->client.fd_in = idx;
+	assert(idx < INT_MAX);
+	ctx->client.console_sd = (int)idx;
+	ctx->client.fd_in = (int)idx;
 	ctx->client.esc_type = test->esc_type;
 	memcpy(&ctx->client.esc_state, &test->esc_state,
 	       sizeof(test->esc_state));
