Compare commits

..

1 commit

Author SHA1 Message Date
Erik Ekman
607b9d3be1 Tag 0.8.0 release 2023-04-17 09:50:19 +02:00
28 changed files with 51 additions and 156 deletions

View file

@ -1,28 +0,0 @@
name: freebsd
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: make
uses: vmactions/freebsd-vm@v1.0.8
with:
prepare: |
pkg install -y \
devel/check \
devel/git \
devel/pkgconf
run: |
make
make test

View file

@ -6,16 +6,13 @@ on:
pull_request: pull_request:
branches: [ master ] branches: [ master ]
permissions:
contents: read
jobs: jobs:
build: build:
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v2
- name: make - name: make
run: make run: make
- name: install check - name: install check

View file

@ -1,28 +0,0 @@
name: openbsd
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: make
uses: vmactions/openbsd-vm@v1.0.8
with:
prepare: |
pkg_add \
check \
git \
pkgconf
run: |
make
make test

View file

@ -6,16 +6,13 @@ on:
pull_request: pull_request:
branches: [ master ] branches: [ master ]
permissions:
contents: read
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v2
- name: make - name: make
run: make run: make
- name: install check - name: install check
@ -28,7 +25,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v2
- uses: nttld/setup-ndk@v1 - uses: nttld/setup-ndk@v1
with: with:
ndk-version: r21e ndk-version: r21e

View file

@ -6,9 +6,6 @@ on:
pull_request: pull_request:
branches: [ master ] branches: [ master ]
permissions:
contents: read
jobs: jobs:
build: build:
@ -18,7 +15,7 @@ jobs:
shell: msys2 {0} shell: msys2 {0}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v2
- uses: msys2/setup-msys2@v2 - uses: msys2/setup-msys2@v2
with: with:
msystem: MINGW64 msystem: MINGW64

View file

@ -1,15 +1,10 @@
iodine - https://code.kryo.se/iodine iodine - https://code.kryo.se/iodine
************************************ ***********************************
CHANGES: CHANGES:
master:
- Changed deprecated tzsetwall() to tzset() (only used by FreeBSD),
patch by Pouria Mousavizadeh Tehrani.
- Now builds on macOS even without if_utun.h (pre 10.6).
2023-04-17: 0.8.0 "Burning Snowman" 2023-04-17: 0.8.0 "Burning Snowman"
- Mac OS X: Support native utun VPN devices. Patch by - Mac OS X: Support native utun VPN devices. Patch by
Peter Sagerson, ported from OpenVPN by Catalin Patulea. Peter Sagerson, ported from OpenVPN by Catalin Patulea.

View file

@ -11,13 +11,11 @@
LOCAL_PATH:= $(call my-dir) LOCAL_PATH:= $(call my-dir)
HEAD_COMMIT = `git rev-parse --short HEAD`
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := iodine LOCAL_MODULE := iodine
LOCAL_SRC_FILES := tun.c dns.c read.c encoding.c login.c base32.c base64.c base64u.c base128.c md5.c common.c iodine.c client.c util.c LOCAL_SRC_FILES := tun.c dns.c read.c encoding.c login.c base32.c base64.c base64u.c base128.c md5.c common.c iodine.c client.c util.c
LOCAL_CFLAGS := -c -DANDROID -DLINUX -DIFCONFIGPATH=\"/system/bin/\" -Wall -DGITREVISION=\"$(HEAD_COMMIT)\" LOCAL_CFLAGS := -c -DANDROID -DLINUX -DIFCONFIGPATH=\"/system/bin/\" -Wall
LOCAL_LDLIBS := -lz LOCAL_LDLIBS := -lz
LOCAL_CFLAGS += -fPIE LOCAL_CFLAGS += -fPIE
LOCAL_LDFLAGS += -fPIE -pie LOCAL_LDFLAGS += -fPIE -pie

View file

@ -11,13 +11,11 @@
LOCAL_PATH:= $(call my-dir) LOCAL_PATH:= $(call my-dir)
HEAD_COMMIT = `git rev-parse --short HEAD`
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := iodine LOCAL_MODULE := iodine
LOCAL_SRC_FILES := tun.c dns.c read.c encoding.c login.c base32.c base64.c base64u.c base128.c md5.c common.c iodine.c client.c util.c LOCAL_SRC_FILES := tun.c dns.c read.c encoding.c login.c base32.c base64.c base64u.c base128.c md5.c common.c iodine.c client.c util.c
LOCAL_CFLAGS := -c -DANDROID -DLINUX -DIFCONFIGPATH=\"/system/bin/\" -Wall -DGITREVISION=\"$(HEAD_COMMIT)\" LOCAL_CFLAGS := -c -DANDROID -DLINUX -DIFCONFIGPATH=\"/system/bin/\" -Wall
LOCAL_LDLIBS := -lz LOCAL_LDLIBS := -lz
include $(BUILD_EXECUTABLE) include $(BUILD_EXECUTABLE)

View file

@ -6,11 +6,10 @@ SERVER = ../bin/iodined
OS = `echo $(TARGETOS) | tr "a-z" "A-Z"` OS = `echo $(TARGETOS) | tr "a-z" "A-Z"`
ARCH = `uname -m` ARCH = `uname -m`
HEAD_COMMIT = `git rev-parse --short HEAD`
LIBPATH = -L. LIBPATH = -L.
LDFLAGS += -lz `sh osflags $(TARGETOS) link` $(LIBPATH) LDFLAGS += -lz `sh osflags $(TARGETOS) link` $(LIBPATH)
CFLAGS += -std=c99 -c -g -Wall -D$(OS) -pedantic `sh osflags $(TARGETOS) cflags` -DGITREVISION=\"$(HEAD_COMMIT)\" CFLAGS += -std=c99 -c -g -Wall -D$(OS) -pedantic `sh osflags $(TARGETOS) cflags`
CFLAGS += -Wstrict-prototypes -Wtype-limits -Wmissing-declarations -Wmissing-prototypes CFLAGS += -Wstrict-prototypes -Wtype-limits -Wmissing-declarations -Wmissing-prototypes
all: stateos $(CLIENT) $(SERVER) all: stateos $(CLIENT) $(SERVER)

View file

@ -103,7 +103,7 @@ static long send_query_recvcnt = 0;
static int hostname_maxlen = 0xFF; static int hostname_maxlen = 0xFF;
void void
client_init(void) client_init()
{ {
running = 1; running = 1;
rand_seed = ((unsigned int) rand()) & 0xFFFF; rand_seed = ((unsigned int) rand()) & 0xFFFF;
@ -124,13 +124,13 @@ client_init(void)
} }
void void
client_stop(void) client_stop()
{ {
running = 0; running = 0;
} }
enum connection enum connection
client_get_conn(void) client_get_conn()
{ {
return conn; return conn;
} }
@ -175,7 +175,7 @@ client_set_qtype(char *qtype)
} }
char * char *
client_get_qtype(void) client_get_qtype()
{ {
char *c = "UNDEFINED"; char *c = "UNDEFINED";
@ -225,7 +225,7 @@ client_set_hostname_maxlen(int i)
} }
const char * const char *
client_get_raw_addr(void) client_get_raw_addr()
{ {
return format_addr(&raw_serv, raw_serv_len); return format_addr(&raw_serv, raw_serv_len);
} }

View file

@ -57,7 +57,7 @@
const unsigned char raw_header[RAW_HDR_LEN] = { 0x10, 0xd1, 0x9e, 0x00 }; const unsigned char raw_header[RAW_HDR_LEN] = { 0x10, 0xd1, 0x9e, 0x00 };
/* daemon(3) exists only in 4.4BSD or later, and in GNU libc */ /* daemon(3) exists only in 4.4BSD or later, and in GNU libc */
#if !defined(ANDROID) && !defined(WINDOWS32) && !(defined(BSD) && (BSD >= 199306)) && !defined(__GLIBC__) && !defined(__HAIKU__) #if !defined(ANDROID) && !defined(WINDOWS32) && !(defined(BSD) && (BSD >= 199306)) && !defined(__GLIBC__)
static int daemon(int nochdir, int noclose) static int daemon(int nochdir, int noclose)
{ {
int fd, i; int fd, i;
@ -142,7 +142,6 @@ get_addr(char *host, int port, int addr_family, int flags, struct sockaddr_stora
struct addrinfo hints, *addr; struct addrinfo hints, *addr;
int res; int res;
char portnum[8]; char portnum[8];
int addrlen;
memset(portnum, 0, sizeof(portnum)); memset(portnum, 0, sizeof(portnum));
snprintf(portnum, sizeof(portnum) - 1, "%d", port); snprintf(portnum, sizeof(portnum) - 1, "%d", port);
@ -159,15 +158,14 @@ get_addr(char *host, int port, int addr_family, int flags, struct sockaddr_stora
hints.ai_protocol = IPPROTO_UDP; hints.ai_protocol = IPPROTO_UDP;
res = getaddrinfo(host, portnum, &hints, &addr); res = getaddrinfo(host, portnum, &hints, &addr);
if (res != 0) { if (res == 0) {
return -1; int addrlen = addr->ai_addrlen;
}
addrlen = addr->ai_addrlen;
/* Grab first result */ /* Grab first result */
memcpy(out, addr->ai_addr, addr->ai_addrlen); memcpy(out, addr->ai_addr, addr->ai_addrlen);
freeaddrinfo(addr); freeaddrinfo(addr);
return addrlen; return addrlen;
}
return res;
} }
int int
@ -278,7 +276,7 @@ do_pidfile(char *pidfile)
} }
void void
do_detach(void) do_detach()
{ {
#ifndef WINDOWS32 #ifndef WINDOWS32
fprintf(stderr, "Detaching from terminal...\n"); fprintf(stderr, "Detaching from terminal...\n");

View file

@ -47,7 +47,7 @@
int dnsc_use_edns0 = 1; int dnsc_use_edns0 = 1;
#define CHECKLEN(x) if (buflen < (x) + (size_t)(p-buf)) return 0 #define CHECKLEN(x) if (buflen < (x) + (unsigned)(p-buf)) return 0
int dns_encode(char *buf, size_t buflen, struct query *q, qr_t qr, int dns_encode(char *buf, size_t buflen, struct query *q, qr_t qr,
const char *data, size_t datalen) const char *data, size_t datalen)
@ -403,7 +403,7 @@ unsigned short dns_get_id(char *packet, size_t packetlen)
return ntohs(header->id); return ntohs(header->id);
} }
#define CHECKLEN(x) if (packetlen < (x) + (size_t)(data-packet)) return 0 #define CHECKLEN(x) if (packetlen < (x) + (unsigned)(data-packet)) return 0
int dns_decode(char *buf, size_t buflen, struct query *q, qr_t qr, char *packet, int dns_decode(char *buf, size_t buflen, struct query *q, qr_t qr, char *packet,
size_t packetlen) size_t packetlen)

View file

@ -20,7 +20,7 @@
static struct fw_query fwq[FW_QUERY_CACHE_SIZE]; static struct fw_query fwq[FW_QUERY_CACHE_SIZE];
static int fwq_ix; static int fwq_ix;
void fw_query_init(void) void fw_query_init()
{ {
memset(fwq, 0, sizeof(struct fw_query) * FW_QUERY_CACHE_SIZE); memset(fwq, 0, sizeof(struct fw_query) * FW_QUERY_CACHE_SIZE);
fwq_ix = 0; fwq_ix = 0;

View file

@ -116,7 +116,7 @@ static inline void usage(void)
static void version(void) static void version(void)
{ {
fprintf(stderr, "iodine IP over DNS tunneling client\n" fprintf(stderr, "iodine IP over DNS tunneling client\n"
"Git version: %s\n", GITREVISION); "version 0.8.0 from 2023-04-17\n");
exit(0); exit(0);
} }

View file

@ -2332,7 +2332,7 @@ static void version(void)
{ {
fprintf(stderr, fprintf(stderr,
"iodine IP over DNS tunneling server\n" "iodine IP over DNS tunneling server\n"
"Git version: %s\n", GITREVISION); "version 0.8.0 from 2023-04-17\n");
exit(0); exit(0);
} }
@ -2754,7 +2754,7 @@ main(int argc, char **argv)
do_pidfile(pidfile); do_pidfile(pidfile);
#ifdef FREEBSD #ifdef FREEBSD
tzset(); tzsetwall();
#endif #endif
#ifndef WINDOWS32 #ifndef WINDOWS32
openlog(__progname, LOG_NDELAY, LOG_DAEMON); openlog(__progname, LOG_NDELAY, LOG_DAEMON);

View file

@ -13,14 +13,14 @@ link)
echo '-lsocket -lbind -lbsd'; echo '-lsocket -lbind -lbsd';
;; ;;
Haiku) Haiku)
echo '-lnetwork -lbsd'; echo '-lnetwork';
;; ;;
windows32) windows32)
echo '-lws2_32 -liphlpapi'; echo '-lws2_32 -liphlpapi';
;; ;;
Linux) Linux)
FLAGS=""; FLAGS="";
"$PKG_CONFIG" --exists libselinux && FLAGS="$FLAGS $($PKG_CONFIG --libs libselinux)"; [ -e /usr/include/selinux/selinux.h ] && FLAGS="$FLAGS -lselinux";
"$PKG_CONFIG" --exists libsystemd-daemon && FLAGS="$FLAGS $($PKG_CONFIG --libs libsystemd-daemon)"; "$PKG_CONFIG" --exists libsystemd-daemon && FLAGS="$FLAGS $($PKG_CONFIG --libs libsystemd-daemon)";
"$PKG_CONFIG" --exists libsystemd && FLAGS="$FLAGS $($PKG_CONFIG --libs libsystemd)"; "$PKG_CONFIG" --exists libsystemd && FLAGS="$FLAGS $($PKG_CONFIG --libs libsystemd)";
echo $FLAGS; echo $FLAGS;
@ -35,15 +35,12 @@ cflags)
BeOS) BeOS)
echo '-Dsocklen_t=int'; echo '-Dsocklen_t=int';
;; ;;
Haiku)
echo '-D_DEFAULT_SOURCE';
;;
Darwin) Darwin)
echo '-D__APPLE_USE_RFC_3542'; echo '-D__APPLE_USE_RFC_3542';
;; ;;
Linux) Linux)
FLAGS="-D_GNU_SOURCE" FLAGS="-D_GNU_SOURCE"
"$PKG_CONFIG" --exists libselinux && FLAGS="$FLAGS -DHAVE_SETCON"; [ -e /usr/include/selinux/selinux.h ] && FLAGS="$FLAGS -DHAVE_SETCON";
"$PKG_CONFIG" --exists libsystemd-daemon && FLAGS="$FLAGS -DHAVE_SYSTEMD"; "$PKG_CONFIG" --exists libsystemd-daemon && FLAGS="$FLAGS -DHAVE_SYSTEMD";
"$PKG_CONFIG" --exists libsystemd && FLAGS="$FLAGS -DHAVE_SYSTEMD"; "$PKG_CONFIG" --exists libsystemd && FLAGS="$FLAGS -DHAVE_SYSTEMD";
echo $FLAGS; echo $FLAGS;

View file

@ -31,9 +31,7 @@
#include <sys/kern_control.h> #include <sys/kern_control.h>
#include <sys/sys_domain.h> #include <sys/sys_domain.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
/* Inline used parts of if_utun.h to compile without it. */ #include <net/if_utun.h>
#define UTUN_CONTROL_NAME "com.apple.net.utun_control"
#define UTUN_OPT_IFNAME 2
#include <netinet/ip.h> #include <netinet/ip.h>
#endif #endif

View file

@ -119,7 +119,7 @@ START_TEST(test_base32_blksize)
END_TEST END_TEST
TCase * TCase *
test_base32_create_tests(void) test_base32_create_tests()
{ {
TCase *tc; TCase *tc;

View file

@ -132,7 +132,7 @@ START_TEST(test_base64_blksize)
END_TEST END_TEST
TCase * TCase *
test_base64_create_tests(void) test_base64_create_tests()
{ {
TCase *tc; TCase *tc;

View file

@ -280,30 +280,8 @@ START_TEST(test_parse_format_ipv4_mapped_ipv6)
} }
END_TEST END_TEST
START_TEST(test_get_addr_err)
{
char *host = "192.168.2.10";
struct sockaddr_storage addr;
int addr_len;
int flags = AI_PASSIVE;
/* Invalid host */
addr_len = get_addr(NULL, -1, flags, 0, &addr);
ck_assert(addr_len == -1);
/* Invalid port */
addr_len = get_addr(host, -1, flags, 0, &addr);
ck_assert(addr_len == -1);
/* Invalid flag */
addr_len = get_addr(host, 53, flags | 0xFFF, 0, &addr);
ck_assert(addr_len == -1);
/* Invalid addr */
addr_len = get_addr(host, 53, flags, 0, (struct sockaddr_storage *)NULL);
ck_assert(addr_len == -1);
}
END_TEST
TCase * TCase *
test_common_create_tests(void) test_common_create_tests()
{ {
TCase *tc; TCase *tc;
int sock; int sock;
@ -317,7 +295,6 @@ test_common_create_tests(void)
tcase_add_test(tc, test_query_datalen_wild); tcase_add_test(tc, test_query_datalen_wild);
tcase_add_test(tc, test_parse_format_ipv4); tcase_add_test(tc, test_parse_format_ipv4);
tcase_add_test(tc, test_parse_format_ipv4_listen_all); tcase_add_test(tc, test_parse_format_ipv4_listen_all);
tcase_add_test(tc, test_get_addr_err);
/* Tests require IPv6 support */ /* Tests require IPv6 support */
sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP); sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);

View file

@ -250,7 +250,7 @@ dump_packet(char *buf, size_t len)
} }
TCase * TCase *
test_dns_create_tests(void) test_dns_create_tests()
{ {
TCase *tc; TCase *tc;

View file

@ -93,7 +93,7 @@ START_TEST(test_build_hostname)
END_TEST END_TEST
TCase * TCase *
test_encoding_create_tests(void) test_encoding_create_tests()
{ {
TCase *tc; TCase *tc;

View file

@ -76,7 +76,7 @@ START_TEST(test_fw_query_edge)
END_TEST END_TEST
TCase * TCase *
test_fw_query_create_tests(void) test_fw_query_create_tests()
{ {
TCase *tc; TCase *tc;

View file

@ -59,7 +59,7 @@ START_TEST(test_login_hash_short)
END_TEST END_TEST
TCase * TCase *
test_login_create_tests(void) test_login_create_tests()
{ {
TCase *tc; TCase *tc;

View file

@ -270,7 +270,7 @@ END_TEST
TCase * TCase *
test_read_create_tests(void) test_read_create_tests()
{ {
TCase *tc; TCase *tc;

View file

@ -24,7 +24,7 @@
#include "test.h" #include "test.h"
int int
main(void) main()
{ {
SRunner *runner; SRunner *runner;
Suite *iodine; Suite *iodine;

View file

@ -18,15 +18,15 @@
#ifndef __TEST_H__ #ifndef __TEST_H__
#define __TEST_H__ #define __TEST_H__
TCase *test_base32_create_tests(void); TCase *test_base32_create_tests();
TCase *test_base64_create_tests(void); TCase *test_base64_create_tests();
TCase *test_common_create_tests(void); TCase *test_common_create_tests();
TCase *test_dns_create_tests(void); TCase *test_dns_create_tests();
TCase *test_encoding_create_tests(void); TCase *test_encoding_create_tests();
TCase *test_read_create_tests(void); TCase *test_read_create_tests();
TCase *test_login_create_tests(void); TCase *test_login_create_tests();
TCase *test_user_create_tests(void); TCase *test_user_create_tests();
TCase *test_fw_query_create_tests(void); TCase *test_fw_query_create_tests();
char *va_str(const char *, ...); char *va_str(const char *, ...);

View file

@ -170,7 +170,7 @@ START_TEST(test_find_available_user_small_net)
END_TEST END_TEST
TCase * TCase *
test_user_create_tests(void) test_user_create_tests()
{ {
TCase *tc; TCase *tc;