1
0
mirror of https://github.com/tmate-io/tmate-ssh-server.git synced 2020-11-18 19:53:51 -08:00

Make it happy on darwin

This commit is contained in:
Nicolas Viennot 2015-10-03 14:14:54 -07:00
parent 0f7f5a477a
commit 5f607d338c
7 changed files with 33 additions and 11 deletions

View File

@ -22,7 +22,7 @@ CFLAGS += -D_GNU_SOURCE
endif
CFLAGS += -Wno-unused-parameter -Wno-unused-variable
if IS_GCC
if IS_LINUX
CFLAGS += -rdynamic # for stack traces
endif

View File

@ -156,7 +156,7 @@ fi
PKG_CHECK_MODULES(
MSGPACK,
msgpack,
msgpack >= 1.2.0,
[
CPPFLAGS="$MSGPACK_CFLAGS $CPPFLAGS"
LIBS="$MSGPACK_LIBS $LIBS"
@ -165,13 +165,13 @@ PKG_CHECK_MODULES(
found_msgpack=no
)
if test "x$found_msgpack" = xno; then
AC_MSG_ERROR("msgpack not found")
AC_MSG_ERROR("msgpack >= 1.2.0 not found")
fi
PKG_CHECK_MODULES(
LIBSSH,
libssh,
libssh >= 0.7.0,
[
CPPFLAGS="$LIBSSH_CFLAGS $CPPFLAGS"
LIBS="$LIBSSH_LIBS $LIBS"
@ -180,9 +180,11 @@ PKG_CHECK_MODULES(
found_libssh=no
)
if test "x$found_libssh" = xno; then
AC_MSG_ERROR("libssh not found")
AC_MSG_ERROR("libssh >= 0.7.0 not found")
fi
AC_CHECK_FUNCS([setresuid setresgid setreuid setregid])
# Check for b64_ntop.
AC_MSG_CHECKING(for b64_ntop)
AC_TRY_LINK(
@ -478,6 +480,7 @@ case "$host_os" in
*linux*)
AC_MSG_RESULT(linux)
PLATFORM=linux
AC_DEFINE(IS_LINUX)
;;
*freebsd*)
AC_MSG_RESULT(freebsd)

View File

@ -210,7 +210,7 @@ static int _tmate_connect_to_master(const char *hostname, int port)
memcpy(&servaddr.sin_addr, host->h_addr, host->h_length);
servaddr.sin_port = htons(port);
if (connect(sockfd, &servaddr, sizeof(servaddr)) < 0)
if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)
tmate_fatal("Cannot connect to master at %s:%d", hostname, port);
int flag = 1;

View File

@ -9,7 +9,7 @@ static void on_encoder_buffer_ready(evutil_socket_t fd, short what, void *arg)
encoder->ready_callback(encoder->userdata, encoder->buffer);
}
static int on_encoder_write(void *userdata, const char *buf, unsigned int len)
static int on_encoder_write(void *userdata, const char *buf, size_t len)
{
struct tmate_encoder *encoder = userdata;

View File

@ -271,17 +271,35 @@ static void jail(void)
if (chdir("/") < 0)
tmate_fatal("Cannot chdir()");
/* if (unshare(CLONE_NEWPID | CLONE_NEWIPC | CLONE_NEWNS | CLONE_NEWNET) < 0) */
/* tmate_fatal("Cannot create new namespace"); */
#if IS_LINUX
if (unshare(CLONE_NEWPID | CLONE_NEWIPC | CLONE_NEWNS | CLONE_NEWNET) < 0)
tmate_fatal("Cannot create new namespace");
#endif
if (setgroups(1, (gid_t[]){gid}) < 0)
tmate_fatal("Cannot setgroups()");
#if HAVE_SETRESUID
if (setresuid(uid, uid, uid) < 0)
tmate_fatal("Cannot setresuid()");
#elif HAVE_SETREUID
if (setreuid(uid, uid) < 0)
tmate_fatal("Cannot setreuid()");
#else
if (setuid(uid) < 0)
tmate_fatal("Cannot setuid()");
#endif
if (setresuid(gid, gid, gid) < 0)
#if HAVE_SETRESGID
if (setresgid(gid, gid, gid) < 0)
tmate_fatal("Cannot setresgid()");
#elif HAVE_SETREGID
if (setregid(gid, gid) < 0)
tmate_fatal("Cannot setregid()");
#else
if (setgid(gid) < 0)
tmate_fatal("Cannot setgid()");
#endif
if (nice(1) < 0)
tmate_fatal("Cannot nice()");

View File

@ -1,5 +1,6 @@
#include <libssh/server.h>
#include <errno.h>
#include <sys/ioctl.h>
#include "tmate.h"
extern void client_write_server(enum msgtype type, void *buf, size_t len);

View File

@ -96,7 +96,7 @@ static void on_daemon_encoder_write(void *userdata, struct evbuffer *buffer)
{
struct tmate_session *session = userdata;
ssize_t len, written;
char *buf;
unsigned char *buf;
for(;;) {
len = evbuffer_get_length(buffer);