mirror of
https://github.com/M66B/NetGuard.git
synced 2025-03-18 17:56:03 +00:00
Correct maximum messages sizes
This commit is contained in:
parent
87da34c19d
commit
1b7e0966e7
2 changed files with 20 additions and 9 deletions
|
@ -766,9 +766,11 @@ int check_tun(const struct arguments *args, fd_set *rfds, fd_set *wfds, fd_set *
|
|||
|
||||
// Check tun read
|
||||
if (FD_ISSET(args->tun, rfds)) {
|
||||
uint8_t buffer[TUN_MAXMSG];
|
||||
ssize_t length = read(args->tun, buffer, sizeof(buffer));
|
||||
uint8_t *buffer = malloc(TUN_MAXMSG);
|
||||
ssize_t length = read(args->tun, buffer, TUN_MAXMSG);
|
||||
if (length < 0) {
|
||||
free(buffer);
|
||||
|
||||
log_android(ANDROID_LOG_ERROR, "tun read error %d: %s", errno, strerror(errno));
|
||||
if (errno == EINTR || errno == EAGAIN)
|
||||
return 0;
|
||||
|
@ -784,9 +786,13 @@ int check_tun(const struct arguments *args, fd_set *rfds, fd_set *wfds, fd_set *
|
|||
|
||||
// Handle IP from tun
|
||||
handle_ip(args, buffer, (size_t) length);
|
||||
|
||||
free(buffer);
|
||||
}
|
||||
else {
|
||||
// tun eof
|
||||
free(buffer);
|
||||
|
||||
log_android(ANDROID_LOG_ERROR, "tun %d empty read", args->tun);
|
||||
report_exit(args, "tun %d empty read", args->tun);
|
||||
return -1;
|
||||
|
@ -820,8 +826,9 @@ void check_icmp_sockets(const struct arguments *args, fd_set *rfds, fd_set *wfds
|
|||
if (FD_ISSET(cur->socket, rfds)) {
|
||||
cur->time = time(NULL);
|
||||
|
||||
uint8_t buffer[ICMP4_MAXMSG]; // TODO ICMPv6 length
|
||||
ssize_t bytes = recv(cur->socket, buffer, sizeof(buffer), 0);
|
||||
uint16_t blen = cur->version == 4 ? ICMP4_MAXMSG : ICMP6_MAXMSG;
|
||||
uint8_t *buffer = malloc(blen);
|
||||
ssize_t bytes = recv(cur->socket, buffer, blen, 0);
|
||||
if (bytes < 0) {
|
||||
// Socket error
|
||||
log_android(ANDROID_LOG_WARN, "ICMP recv error %d: %s",
|
||||
|
@ -874,6 +881,7 @@ void check_icmp_sockets(const struct arguments *args, fd_set *rfds, fd_set *wfds
|
|||
if (write_icmp(args, cur, buffer, (size_t) bytes) < 0)
|
||||
cur->stop = 1;
|
||||
}
|
||||
free(buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -905,8 +913,9 @@ void check_udp_sockets(const struct arguments *args, fd_set *rfds, fd_set *wfds,
|
|||
if (FD_ISSET(cur->socket, rfds)) {
|
||||
cur->time = time(NULL);
|
||||
|
||||
uint8_t buffer[UDP4_MAXMSG]; // TODO UDPv6 length
|
||||
ssize_t bytes = recv(cur->socket, buffer, sizeof(buffer), 0);
|
||||
uint16_t blen = cur->version == 4 ? UDP4_MAXMSG : UDP6_MAXMSG;
|
||||
uint8_t *buffer = malloc(blen);
|
||||
ssize_t bytes = recv(cur->socket, buffer, blen, 0);
|
||||
if (bytes < 0) {
|
||||
// Socket error
|
||||
log_android(ANDROID_LOG_WARN, "UDP recv error %d: %s",
|
||||
|
@ -943,6 +952,7 @@ void check_udp_sockets(const struct arguments *args, fd_set *rfds, fd_set *wfds,
|
|||
cur->stop = 1;
|
||||
}
|
||||
}
|
||||
free(buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1189,7 +1199,6 @@ void check_tcp_sockets(const struct arguments *args, fd_set *rfds, fd_set *wfds,
|
|||
if (write_data(args, cur, buffer, (size_t) bytes) >= 0)
|
||||
cur->local_seq += bytes;
|
||||
}
|
||||
|
||||
free(buffer);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,8 +5,10 @@
|
|||
#define SELECT_TIMEOUT 10 // seconds
|
||||
|
||||
#define TUN_MAXMSG 32768 // bytes (device)
|
||||
#define ICMP4_MAXMSG 65507 // bytes (socket)
|
||||
#define UDP4_MAXMSG 65507 // bytes (socket)
|
||||
#define ICMP4_MAXMSG (IP_MAXPACKET - 20 - 8) // bytes (socket)
|
||||
#define ICMP6_MAXMSG (IPV6_MAXPACKET - 40 - 8) // bytes (socket)
|
||||
#define UDP4_MAXMSG (IP_MAXPACKET - 20 - 8) // bytes (socket)
|
||||
#define UDP6_MAXMSG (IPV6_MAXPACKET - 40 - 8) // bytes (socket)
|
||||
|
||||
#define ICMP_TIMEOUT 15 // seconds
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue