1
0
Fork 0
mirror of https://github.com/yarrick/iodine.git synced 2025-04-11 21:10:56 +00:00
This commit is contained in:
Julian Kranz 2012-01-06 16:52:26 +01:00 committed by Barak A. Pearlmutter
parent 0974d96d33
commit 839ce1a266

View file

@ -1505,6 +1505,16 @@ handshake_version(int dns_fd, int *seed)
return 1; return 1;
} }
static char handshake_login_info_check(char *in, char *server, char *client,
int *mtu, int *netmask, char *server6, char *client6, int *netmask6) {
if (_v6)
return sscanf(in, "%64[^-]-%64[^-]-%d-%d-%64[^-]-%64[^-]-%d", server,
client, mtu, netmask, server6, client6, netmask6) == 7;
else
return sscanf(in, "%64[^-]-%64[^-]-%d-%d", server, client, mtu, netmask)
== 4;
}
static int static int
handshake_login(int dns_fd, int seed) handshake_login(int dns_fd, int seed)
{ {
@ -1535,13 +1545,13 @@ handshake_login(int dns_fd, int seed)
if (strncmp("LNAK", in, 4) == 0) { if (strncmp("LNAK", in, 4) == 0) {
fprintf(stderr, "Bad password\n"); fprintf(stderr, "Bad password\n");
return 1; return 1;
} else if (sscanf(in, "%64[^-]-%64[^-]-%d-%d-%64[^-]-%64[^-]-%d", } else if (handshake_login_info_check(in, server, client, &mtu, &netmask,
server, client, &mtu, &netmask, server6, client6, &netmask6) == 7) { server6, client6, &netmask6)) {
server[64] = 0; server[64] = 0;
client[64] = 0; client[64] = 0;
if (tun_setip(client, server, netmask) == 0 && if (tun_setip(client, server, netmask) == 0 &&
tun_setmtu(mtu) == 0 && !tun_setip6(client6, netmask6)) { tun_setmtu(mtu) == 0 && (!_v6 || !tun_setip6(client6, netmask6))) {
fprintf(stderr, "Server tunnel IP is %s\n", server); fprintf(stderr, "Server tunnel IP is %s\n", server);
@ -1549,7 +1559,7 @@ handshake_login(int dns_fd, int seed)
fprintf(stderr, "Server tunnel IPv6 is %s\n", server6); fprintf(stderr, "Server tunnel IPv6 is %s\n", server6);
fprintf(stderr, "Client tunnel IPv6 is %s\n", client6); fprintf(stderr, "Client tunnel IPv6 is %s\n", client6);
fprintf(stderr, "Tunnel netmask6 is %d\n", netmask6); fprintf(stderr, "Tunnel netmask6 is %d\n", netmask6);
} }
return 0; return 0;
} else { } else {